summaryrefslogtreecommitdiff
path: root/fs/hfsplus/dir.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@tuxera.com>2010-10-01 05:45:25 +0200
committerChristoph Hellwig <hch@lst.de>2010-10-01 05:45:25 +0200
commit89755dcace09b44b3aa024bf302d9b19b4c24cad (patch)
tree8626891db36b01a3ff3ac80967ce08aef988d1f7 /fs/hfsplus/dir.c
parent84adede31267af37141da2b2b04293c5ea8af7ae (diff)
downloadlwn-89755dcace09b44b3aa024bf302d9b19b4c24cad.tar.gz
lwn-89755dcace09b44b3aa024bf302d9b19b4c24cad.zip
hfsplus: protect readdir against removals from open_dir_list
We already have i_mutex for readdir and the namespace operations that add entries to open_dir_list, the only thing that was missing was the removal in hfsplus_dir_release. Signed-off-by: Christoph Hellwig <hch@tuxera.com>
Diffstat (limited to 'fs/hfsplus/dir.c')
-rw-r--r--fs/hfsplus/dir.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c
index 1c81eedcab01..93fa45cc4810 100644
--- a/fs/hfsplus/dir.c
+++ b/fs/hfsplus/dir.c
@@ -231,7 +231,9 @@ static int hfsplus_dir_release(struct inode *inode, struct file *file)
{
struct hfsplus_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;