On 2020/4/16 9:46, Eric Biggers wrote: > On Wed, Apr 15, 2020 at 09:20:33PM +0800, Zhiqiang Liu wrote: >> From: Zhiqiang Liu <liuzhiqiang26@xxxxxxxxxx> >> >> coccicheck reports: >> fs/dcache.c:1027:1-10: second lock on line 1027 >> >> In d_prune_aliases, before goto restart we should unlock >> inode->i_lock. >> >> Fixes: 29355c3904e ("d_prune_alias(): just lock the parent and call __dentry_kill()") >> Signed-off-by: Zhiqiang Liu <liuzhiqiang26@xxxxxxxxxx> >> Signed-off-by: Feilong Lin <linfeilong@xxxxxxxxxx> >> --- >> fs/dcache.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/fs/dcache.c b/fs/dcache.c >> index b280e07e162b..1532ebe9d9ca 100644 >> --- a/fs/dcache.c >> +++ b/fs/dcache.c >> @@ -1030,6 +1030,7 @@ void d_prune_aliases(struct inode *inode) >> if (!dentry->d_lockref.count) { >> struct dentry *parent = lock_parent(dentry); >> if (likely(!dentry->d_lockref.count)) { >> + spin_unlock(&inode->i_lock); >> __dentry_kill(dentry); >> dput(parent); >> goto restart; >> -- > > Doesn't __dentry_kill() already do the unlock, via dentry_unlink_inode()? > > - Eric > Yes, you are right. Sorry for that. Please ignore this patch. > . >