diff options
| author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-11-20 16:22:29 +0100 |
|---|---|---|
| committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-11-20 16:22:29 +0100 |
| commit | 62953f120bcdc976a3dfb96505066228464a78dd (patch) | |
| tree | e7fa77309a920e7b87befcfd208d05254218a059 /ext2fs/dir.c | |
| parent | 484a67719146e819ddad64fbda23b4b23afa3095 (diff) | |
libpager, libstore: Fix crash on ENOSPC while writing data
We need to save blocked signals, otherwise longjmp will not unblock
SIGSEGV/SIGBUS, and thus next exception will kill us. Also, we need to
make sure that the preemptor is set at the right window in main memory
before letting a handler see it.
* libpager/pager-memcpy.c (do_memcpy): Call __sync_synchronize()
between aligning the fault preemptor and actually accessing data.
(fault): Use siglongjmp instead of longjmp.
(pager_memcpy): Use sigsetjmp instead of setjmp.
* libstore/memobj.c (copy, fault, memobj_memcpy): Likewise.
Diffstat (limited to 'ext2fs/dir.c')
0 files changed, 0 insertions, 0 deletions
