pipe: fix deadlock
Probably all of you know about "lock inversion". There was a similar problem on restoring pipes. One process try to restore pipe1 and waits when another process attached to it. In this time another process restores pipe2 and waits too. I know two solves. 1. Open all pipes -> attach to them -> close unnecessary ends. This method has a problem, if only one end belongs to the process. In this cases another end occupies a descriptor, which may be needed to another pipe. 2. Restore pipes in the same order. This patch does that. A sorted list of pipe entries are constructed. Signed-off-by:Andrey Vagin <avagin@openvz.org> Acked-by:
Pavel Emelianov <xemul@parallels.com> Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org>
Showing
Please
register
or
sign in
to comment