sna: Wrap mmap accessors with sigtrap to catch oom SIGBUS

Accessing a mmap'ed pointer (especially our shmemfs backed bo) can throw
SIGBUS when out of memory, for which we use sigtrap for graceful
failure.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2015-01-09 16:47:54 +00:00
parent e0463036bb
commit 05ca3bc1cb
1 changed files with 10 additions and 0 deletions

View File

@ -6108,6 +6108,9 @@ sna_copy_boxes__inplace(struct sna *sna, RegionPtr region, int alu,
kgem_bo_sync__cpu_full(&sna->kgem, src_priv->gpu_bo, FORCE_FULL_SYNC);
if (sigtrap_get())
return false;
box = region_rects(region);
n = region_num_rects(region);
if (src_priv->gpu_bo->tiling) {
@ -6147,6 +6150,8 @@ sna_copy_boxes__inplace(struct sna *sna, RegionPtr region, int alu,
}
}
sigtrap_put();
return true;
upload_inplace:
@ -6244,6 +6249,9 @@ upload_inplace:
assert(has_coherent_ptr(sna, src_priv, MOVE_READ));
if (sigtrap_get())
return false;
box = region_rects(region);
n = region_num_rects(region);
if (dst_priv->gpu_bo->tiling) {
@ -6286,6 +6294,8 @@ upload_inplace:
}
}
sigtrap_put();
return true;
}