Page MenuHomeFreeBSD

Fix double unlock if the source file disappears
ClosedPublic

Authored by trasz on Nov 23 2020, 1:58 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Mar 19, 9:49 PM
Unknown Object (File)
Tue, Mar 19, 2:28 PM
Unknown Object (File)
Feb 23 2024, 5:02 AM
Unknown Object (File)
Jan 1 2024, 3:32 AM
Unknown Object (File)
Dec 30 2023, 10:09 AM
Unknown Object (File)
Dec 20 2023, 6:46 AM
Unknown Object (File)
Nov 7 2023, 8:06 AM
Unknown Object (File)
Oct 17 2023, 6:53 PM
Subscribers

Details

Summary

Fix double unlock if the source file disappears; we would
unlock it here, only to unlock it again below, just before "bad".

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

trasz requested review of this revision.Nov 23 2020, 1:58 PM
sys/fs/msdosfs/msdosfs_vnops.c
1144

So why this vrele() uses a_vfp pointer instead of fvp ? Is it possible that they are different (doubt it). If so wouldn't it be more natural to stop these intermediate vrele/unlocks, replacing them by final vput(fvp) ?

sys/fs/msdosfs/msdosfs_vnops.c
1144

It is possible they are different - this code happens after a call to relookup(), which can change fvp. In fact, it has to be different, given the conditional ("xp != ip").

This revision is now accepted and ready to land.Dec 3 2020, 1:14 PM