diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2015-01-19 05:37:32 +0100 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2015-01-19 05:49:26 +0100 |
commit | 378ff1a53b5724f3ac97b0aba3c9ecac072f6fcd (patch) | |
tree | cd81852109bbf82a77ff54de1f00d61408c3d920 /arch/cris | |
parent | Linux 3.19-rc5 (diff) | |
download | linux-378ff1a53b5724f3ac97b0aba3c9ecac072f6fcd.tar.xz linux-378ff1a53b5724f3ac97b0aba3c9ecac072f6fcd.zip |
fix deadlock in cifs_ioctl_clone()
It really needs to check that src is non-directory *and* use
{un,}lock_two_nodirectories(). As it is, it's trivial to cause
double-lock (ioctl(fd, CIFS_IOC_COPYCHUNK_FILE, fd)) and if the
last argument is an fd of directory, we are asking for trouble
by violating the locking order - all directories go before all
non-directories. If the last argument is an fd of parent
directory, it has 50% odds of locking child before parent,
which will cause AB-BA deadlock if we race with unlink().
Cc: stable@vger.kernel.org @ 3.13+
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/cris')
0 files changed, 0 insertions, 0 deletions