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:
parent
e0463036bb
commit
05ca3bc1cb
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue