diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2014-10-27 02:31:10 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-04-29 11:34:00 +0300 |
commit | 5f03ac13d87590b0ee879c77e68df63a3d9b3e07 (patch) | |
tree | 9985fd0b9bccdd3e484727ec521573f2833d08e5 /block | |
parent | 6637ecd306a94a03dd5b8e4e8d3f260d9877c5b0 (diff) | |
download | linux-5f03ac13d87590b0ee879c77e68df63a3d9b3e07.tar.xz |
deal with deadlock in d_walk()
commit ca5358ef75fc69fee5322a38a340f5739d997c10 upstream.
... by not hitting rename_retry for reasons other than rename having
happened. In other words, do _not_ restart when finding that
between unlocking the child and locking the parent the former got
into __dentry_kill(). Skip the killed siblings instead...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Cc: Ben Hutchings <ben@decadent.org.uk>
[hujianyang: Backported to 3.10 refer to the work of Ben Hutchings in 3.2:
- As we only have try_to_ascend() and not d_walk(), apply this
change to all callers of try_to_ascend()
- Adjust context to make __dentry_kill() apply to d_kill()]
Signed-off-by: hujianyang <hujianyang@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions