FreeBSD/src e28fa55 (r348052)sys/kern vfs_lookup.c

NDFREE(): Fix unlocking for LOCKPARENT|LOCKLEAF and ndp->ni_dvp == ndp->ni_vp.

NDFREE() calculates unlock_dvp after ndp->ni_vp is unlocked and zeroed
out. This makes the comparision of ni_dvp with ni_vp always fail.
Move the calculation of unlock_dvp right after unlock_vp, so that the
code sees correct ni_vp value.

Reproduced by
           chdir("/usr");
           open("/..", O_BENEATH | O_RDONLY);

Reported by:    syzkaller
Reviewed by:    markj, mckusick
Tested by:      pho
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D20304
DeltaFile
+4-4sys/kern/vfs_lookup.c
+4-41 files

UnifiedSplitRaw