[PATCH] drm/i915/gem: Return SIGBUS for wrong mapping parameters

Andi Shyti andi.shyti at linux.intel.com
Mon Jun 17 12:41:15 UTC 2024


We normally issue a warning when incorrect memory parameters are
provided. Typically, providing erroneous addresses to mmap,
results in a segmentation fault, and the default behavior
is to return VM_FAULT_SIGBUS.

This can happen for example when remap_io_mapping() or
remap_io_sg() return -EINVAL.

Because VM_FAULT_SIGBUS is already returned when memory
boundaries are improperly handled and numerous warnings are
already generated, avoid redundant logging to prevent
overprinting by translating -EINVAL to VM_FAULT_SIGBUS in the
i915_error_to_vmf_fault() helper.

Signed-off-by: Andi Shyti <andi.shyti at linux.intel.com>
---
 drivers/gpu/drm/i915/gem/i915_gem_mman.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
index a2195e28b625..698ff42b004a 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
@@ -223,6 +223,7 @@ static vm_fault_t i915_error_to_vmf_fault(int err)
 	default:
 		WARN_ONCE(err, "unhandled error in %s: %i\n", __func__, err);
 		fallthrough;
+	case -EINVAL: /* the memory parameters provided are wrong */
 	case -EIO: /* shmemfs failure from swap device */
 	case -EFAULT: /* purged object */
 	case -ENODEV: /* bad object, how did you get here! */
-- 
2.45.1



More information about the Intel-gfx mailing list