diff options
| author | John Harrison <John.C.Harrison@Intel.com> | 2025-09-10 14:02:34 -0700 |
|---|---|---|
| committer | John Harrison <John.C.Harrison@Intel.com> | 2025-09-15 09:53:25 -0700 |
| commit | 537773db91c2765898eee0521d5f03acae5a545f (patch) | |
| tree | 1568016a66508d405ceb445563a97bb6c7b3fa01 /drivers/gpu/drm/xe/xe_bo.c | |
| parent | acf01c79f0684e3cbaa8e6326b970d7a7381c2ee (diff) | |
| download | linux-next-537773db91c2765898eee0521d5f03acae5a545f.tar.gz linux-next-537773db91c2765898eee0521d5f03acae5a545f.zip | |
drm/xe: Allow freeing of a managed bo
If a bo is created via xe_managed_bo_create_pin_map() then it cannot be
freed by the driver using xe_bo_unpin_map_no_vm(), or indeed any other
existing function. The DRM layer will still have a pointer stashed
away for later freeing, causing a invalid memory access on driver
unload. So add a helper for releasing the DRM action as well.
v2: Drop 'xe' parameter (review feedbak from Michal W)
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Link: https://lore.kernel.org/r/20250910210237.603576-4-John.C.Harrison@Intel.com
Diffstat (limited to 'drivers/gpu/drm/xe/xe_bo.c')
| -rw-r--r-- | drivers/gpu/drm/xe/xe_bo.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c index e6d16b34e5b5..8422f3cab113 100644 --- a/drivers/gpu/drm/xe/xe_bo.c +++ b/drivers/gpu/drm/xe/xe_bo.c @@ -2629,6 +2629,11 @@ struct xe_bo *xe_managed_bo_create_pin_map(struct xe_device *xe, struct xe_tile return bo; } +void xe_managed_bo_unpin_map_no_vm(struct xe_bo *bo) +{ + devm_release_action(xe_bo_device(bo)->drm.dev, __xe_bo_unpin_map_no_vm, bo); +} + struct xe_bo *xe_managed_bo_create_from_data(struct xe_device *xe, struct xe_tile *tile, const void *data, size_t size, u32 flags) { |
