Page MenuHomeFreeBSD

2/3 vfs: fix device count leak on vrele racing with vgone
ClosedPublic

Authored by mjg on Feb 6 2020, 12:19 AM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, Jul 20, 8:20 AM
Unknown Object (File)
Tue, Jul 7, 3:27 AM
Unknown Object (File)
Mon, Jul 6, 4:43 AM
Unknown Object (File)
Fri, Jul 3, 8:04 AM
Unknown Object (File)
Fri, Jul 3, 4:35 AM
Unknown Object (File)
Thu, Jul 2, 7:55 PM
Unknown Object (File)
Wed, Jul 1, 1:42 AM
Unknown Object (File)
Jun 21 2026, 8:59 PM
Subscribers

Details

Summary

The race is:

CPU1                                        CPU2
                                    devfs_reclaim_vchr
make v_usecount 0
                                      VI_LOCK
                                      sees v_usecount == 0, no updates
                                      vp->v_rdev = NULL;
                                      ...
                                      VI_UNLOCK
VI_LOCK
v_decr_devcount
  sees v_rdev == NULL, no updates

In this scenario si_devcount decrement is not performed.

Note this can only happen if the vnode lock is not held.

Also see the 3/3 review.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable