diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/inode.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index f3eab8dc3df8..5f89414446c4 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -158,21 +158,18 @@ static void spufs_prune_dir(struct dentry *dir) | |||
158 | 158 | ||
159 | mutex_lock(&dir->d_inode->i_mutex); | 159 | mutex_lock(&dir->d_inode->i_mutex); |
160 | list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_u.d_child) { | 160 | list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_u.d_child) { |
161 | spin_lock(&dcache_lock); | ||
162 | spin_lock(&dentry->d_lock); | 161 | spin_lock(&dentry->d_lock); |
163 | if (!(d_unhashed(dentry)) && dentry->d_inode) { | 162 | if (!(d_unhashed(dentry)) && dentry->d_inode) { |
164 | dget_locked_dlock(dentry); | 163 | dget_locked_dlock(dentry); |
165 | __d_drop(dentry); | 164 | __d_drop(dentry); |
166 | spin_unlock(&dentry->d_lock); | 165 | spin_unlock(&dentry->d_lock); |
167 | simple_unlink(dir->d_inode, dentry); | 166 | simple_unlink(dir->d_inode, dentry); |
168 | /* XXX: what is dcache_lock protecting here? Other | 167 | /* XXX: what was dcache_lock protecting here? Other |
169 | * filesystems (IB, configfs) release dcache_lock | 168 | * filesystems (IB, configfs) release dcache_lock |
170 | * before unlink */ | 169 | * before unlink */ |
171 | spin_unlock(&dcache_lock); | ||
172 | dput(dentry); | 170 | dput(dentry); |
173 | } else { | 171 | } else { |
174 | spin_unlock(&dentry->d_lock); | 172 | spin_unlock(&dentry->d_lock); |
175 | spin_unlock(&dcache_lock); | ||
176 | } | 173 | } |
177 | } | 174 | } |
178 | shrink_dcache_parent(dir); | 175 | shrink_dcache_parent(dir); |