c443acab2e
We can currently cause an oops by repeatedly creating and destroying contexts, while doing getdents() calls on the "/spu" directory. This is due to the context's top-level dentry remaining hashed while the context is being destroyed. Fix this by unhashing the context's dentry with the dentry->d_inode->i_mutex held. This way, we'll hit the check for d_unhashed in dentry_readdir, and won't be included in the list of subdirs for /spu. test: spufs-testsuite:tests/01-spu_create/07-destroy-vs-readdir-race Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Signed-off-by: Paul Mackerras <paulus@samba.org> |
||
---|---|---|
.. | ||
spufs | ||
Kconfig | ||
Makefile | ||
axon_msi.c | ||
cbe_cpufreq.c | ||
cbe_cpufreq.h | ||
cbe_cpufreq_pervasive.c | ||
cbe_cpufreq_pmi.c | ||
cbe_regs.c | ||
cbe_thermal.c | ||
interrupt.c | ||
interrupt.h | ||
io-workarounds.c | ||
iommu.c | ||
pervasive.c | ||
pervasive.h | ||
pmu.c | ||
ras.c | ||
ras.h | ||
setup.c | ||
smp.c | ||
spider-pic.c | ||
spu_base.c | ||
spu_callbacks.c | ||
spu_manage.c | ||
spu_priv1_mmio.c | ||
spu_priv1_mmio.h | ||
spu_syscalls.c |