]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
lockdep: Fix lockdep annotation for pipe_double_lock()
authorPeter Zijlstra <peterz@infradead.org>
Tue, 21 Jul 2009 08:09:23 +0000 (10:09 +0200)
committerPeter Zijlstra <a.p.zijlstra@chello.nl>
Wed, 22 Jul 2009 19:14:14 +0000 (21:14 +0200)
The presumed use of the pipe_double_lock() routine is to lock 2 locks in
a deadlock free way by ordering the locks by their address. However it
fails to keep the specified lock classes in order and explicitly
annotates a deadlock.

Rectify this.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Miklos Szeredi <mszeredi@suse.cz>
LKML-Reference: <1248163763.15751.11098.camel@twins>

fs/pipe.c

index f7dd21ad85a61937666eddf0ccbff66e11e6c3fd..52c4151148383c2e9cd89f891e322241e110d3c1 100644 (file)
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -68,8 +68,8 @@ void pipe_double_lock(struct pipe_inode_info *pipe1,
                pipe_lock_nested(pipe1, I_MUTEX_PARENT);
                pipe_lock_nested(pipe2, I_MUTEX_CHILD);
        } else {
-               pipe_lock_nested(pipe2, I_MUTEX_CHILD);
-               pipe_lock_nested(pipe1, I_MUTEX_PARENT);
+               pipe_lock_nested(pipe2, I_MUTEX_PARENT);
+               pipe_lock_nested(pipe1, I_MUTEX_CHILD);
        }
 }