On 2020/12/30 15:01, 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> > --- > fs/dcache.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/dcache.c b/fs/dcache.c > index 97e81a8..bf38446 100644 > --- a/fs/dcache.c > +++ b/fs/dcache.c > @@ -1050,6 +1050,6 @@ void d_prune_aliases(struct inode *inode) > { > struct dentry *dentry; > -restart: > spin_lock(&inode->i_lock); This inode lock should be released at __dentry_kill->dentry_unlink_inode. Regards, Hao Lee > > +restart: > hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) { > spin_lock(&dentry->d_lock);