diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2013-05-05 20:20:25 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-05-05 20:20:25 -0400 |
commit | 1950267e6e9dc2531f2790bf217aa7aadc9aa324 (patch) | |
tree | 96f7d380de56e18c4ab16f820d999c51eed152c9 /fs/hfs | |
parent | f8ce1faf55955de62e0a12e330c6d9a526071f65 (diff) | |
download | linux-stable-1950267e6e9dc2531f2790bf217aa7aadc9aa324.tar.gz linux-stable-1950267e6e9dc2531f2790bf217aa7aadc9aa324.tar.bz2 linux-stable-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.c | 2 |
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; |