aboutsummaryrefslogtreecommitdiff
path: root/ext2fs/pager.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2016-11-20 16:22:29 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2016-11-20 16:22:29 +0100
commit62953f120bcdc976a3dfb96505066228464a78dd (patch)
treee7fa77309a920e7b87befcfd208d05254218a059 /ext2fs/pager.c
parent484a67719146e819ddad64fbda23b4b23afa3095 (diff)
downloadhurd-62953f120bcdc976a3dfb96505066228464a78dd.tar.gz
hurd-62953f120bcdc976a3dfb96505066228464a78dd.tar.bz2
hurd-62953f120bcdc976a3dfb96505066228464a78dd.zip
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/pager.c')
0 files changed, 0 insertions, 0 deletions