summaryrefslogtreecommitdiffstats
path: root/fs/hfs
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2013-05-05 20:20:25 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2013-05-05 20:20:25 -0400
commit1950267e6e9dc2531f2790bf217aa7aadc9aa324 (patch)
tree96f7d380de56e18c4ab16f820d999c51eed152c9 /fs/hfs
parentf8ce1faf55955de62e0a12e330c6d9a526071f65 (diff)
downloadlinux-1950267e6e9dc2531f2790bf217aa7aadc9aa324.tar.gz
linux-1950267e6e9dc2531f2790bf217aa7aadc9aa324.tar.bz2
linux-1950267e6e9dc2531f2790bf217aa7aadc9aa324.zip
hfs: SMP race on directory close()
->open_dir_list needs protection... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/hfs')
-rw-r--r--fs/hfs/dir.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/hfs/dir.c b/fs/hfs/dir.c
index 17c22a8fd40a..e0101b6fb0d7 100644
--- a/fs/hfs/dir.c
+++ b/fs/hfs/dir.c
@@ -176,7 +176,9 @@ static int hfs_dir_release(struct inode *inode, struct file *file)
{
struct hfs_readdir_data *rd = file->private_data;
if (rd) {
+ mutex_lock(&inode->i_mutex);
list_del(&rd->list);
+ mutex_unlock(&inode->i_mutex);
kfree(rd);
}
return 0;