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
F151668667: D23529.id68098.diff
Thu, Apr 9, 9:45 PM
Unknown Object (File)
Mon, Apr 6, 8:23 AM
Unknown Object (File)
Tue, Mar 31, 12:34 AM
Unknown Object (File)
Sat, Mar 28, 12:46 AM
Unknown Object (File)
Tue, Mar 24, 4:24 AM
Unknown Object (File)
Sat, Mar 21, 10:29 AM
Unknown Object (File)
Tue, Mar 17, 8:05 AM
Unknown Object (File)
Mar 2 2026, 5:56 AM
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