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, Oct 13, 8:37 AM
Unknown Object (File)
Tue, Oct 7, 1:27 AM
Unknown Object (File)
Aug 19 2025, 3:38 AM
Unknown Object (File)
Aug 12 2025, 5:23 PM
Unknown Object (File)
Aug 12 2025, 2:02 PM
Unknown Object (File)
Jul 20 2025, 2:47 AM
Unknown Object (File)
Jul 11 2025, 12:30 PM
Unknown Object (File)
Jul 7 2025, 11:59 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