On Wed, Dec 30, 2020 at 08:04:49PM +0000, Al Viro wrote: > On Wed, Dec 30, 2020 at 03:01:25PM +0800, YANG LI wrote: > > Goto statement jumping will cause lock to be executed again without > > executing unlock, placing the lock statement in front of goto > > label to fix this problem. > > > > Signed-off-by: YANG LI <abaci-bugfix@xxxxxxxxxxxxxxxxx> > > Reported-by: Abaci <abaci@xxxxxxxxxxxxxxxxx> > > I am sorry, but have you even attempted to trigger that codepath? > Just to test your patch... > > FWIW, the patch is completely broken. Obviously so, since you > have dput() done just before goto restart and dput() in very > much capable of blocking. It should never be called with spinlocks > held. And if you look at __dentry_kill() (well, dentry_unlink_inode() > called by __dentry_kill()), you will see that it bloody well *DOES* > drop inode->i_lock. Not only that, but the function is even _annotated_ to that effect. So this 'abaci' tool you have isn't even capable of the bare minimum.