Searched hist:60657263 (Results 1 – 1 of 1) sorted by relevance
/openbmc/linux/arch/powerpc/platforms/cell/spufs/ |
H A D | file.c | 60657263 Mon Nov 10 17:22:22 CST 2008 Jeremy Kerr <jk@ozlabs.org> powerpc/spufs: Fix spinning in spufs_ps_fault on signal
Currently, we can end up in an infinite loop if we get a signal while the kernel has faulted in spufs_ps_fault. Eg:
alarm(1);
write(fd, some_spu_psmap_register_address, 4);
- the write's copy_from_user will fault on the ps mapping, and signal_pending will be non-zero. Because returning from the fault handler will never clear TIF_SIGPENDING, so we'll just keep faulting, resulting in an unkillable process using 100% of CPU.
This change returns VM_FAULT_SIGBUS if there's a fatal signal pending, letting us escape the loop.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org> 60657263 Mon Nov 10 17:22:22 CST 2008 Jeremy Kerr <jk@ozlabs.org> powerpc/spufs: Fix spinning in spufs_ps_fault on signal Currently, we can end up in an infinite loop if we get a signal while the kernel has faulted in spufs_ps_fault. Eg: alarm(1); write(fd, some_spu_psmap_register_address, 4); - the write's copy_from_user will fault on the ps mapping, and signal_pending will be non-zero. Because returning from the fault handler will never clear TIF_SIGPENDING, so we'll just keep faulting, resulting in an unkillable process using 100% of CPU. This change returns VM_FAULT_SIGBUS if there's a fatal signal pending, letting us escape the loop. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
|