lkml.org 
[lkml]   [2000]   [Nov]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Locking problem in autofs4_expire(), 2.4.0-test10
On Fri, 3 Nov 2000, Nigel Gamble wrote:
>
> dput() is called with dcache_lock already held, resulting in deadlock.
>
> Here is a suggested fix:
>
> ===== expire.c 1.3 vs edited =====
> --- 1.3/linux/fs/autofs4/expire.c Tue Oct 31 15:14:06 2000
> +++ edited/expire.c Fri Nov 3 17:47:47 2000
> @@ -223,8 +223,10 @@
> mntput(p);
> return dentry;
> }
> + spin_unlock(&dcache_lock);
> dput(d);
> mntput(p);
> + spin_lock(&dcache_lock);
> }
> spin_unlock(&dcache_lock);

On looking at this code more closely, I don't think it's safe just
to drop the lock, because it looks like the lock is supposed to
protect the loop variable, tmp, and the data structure which
is being traversed. However, I'm not familiar with this code,
so I'm hoping someone who is can come up with a correct solution
to this deadlock problem.

Nigel

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:45    [W:0.025 / U:1.020 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site