From: Brian Welty Date: Thu, 13 Jul 2023 01:25:42 +0000 (-0700) Subject: drm/xe: Fix lockdep warning from xe_vm_madvise X-Git-Tag: v6.8-rc1~111^2~7^2~547 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=04194a4f780895799cf83c86d5bb8bc11560a536;p=thirdparty%2Fkernel%2Fstable.git drm/xe: Fix lockdep warning from xe_vm_madvise We need to hold vm->lock before the xe_vm_is_closed_or_banned(). Else we get this splat: [ 802.555227] ------------[ cut here ]------------ [ 802.555234] WARNING: CPU: 33 PID: 3122 at drivers/gpu/drm/xe/xe_vm.h:60 [ 802.555515] CPU: 33 PID: 3122 Comm: xe_exec_fault_m Tainted: ... [ 802.555709] Call Trace: [ 802.555714] [ 802.555720] ? __warn+0x81/0x170 [ 802.555737] ? xe_vm_madvise_ioctl+0x2de/0x440 [xe] Fixes: 9d858b69b0cf ("drm/xe: Ban a VM if rebind worker hits an error") Reviewed-by: Matthew Brost Signed-off-by: Brian Welty Signed-off-by: Rodrigo Vivi --- diff --git a/drivers/gpu/drm/xe/xe_vm_madvise.c b/drivers/gpu/drm/xe/xe_vm_madvise.c index 32f92743d851a..5b775f7422337 100644 --- a/drivers/gpu/drm/xe/xe_vm_madvise.c +++ b/drivers/gpu/drm/xe/xe_vm_madvise.c @@ -267,11 +267,6 @@ int xe_vm_madvise_ioctl(struct drm_device *dev, void *data, if (XE_IOCTL_ERR(xe, !vm)) return -EINVAL; - if (XE_IOCTL_ERR(xe, xe_vm_is_closed_or_banned(vm))) { - err = -ENOENT; - goto put_vm; - } - if (XE_IOCTL_ERR(xe, !xe_vm_in_fault_mode(vm))) { err = -EINVAL; goto put_vm; @@ -279,6 +274,11 @@ int xe_vm_madvise_ioctl(struct drm_device *dev, void *data, down_read(&vm->lock); + if (XE_IOCTL_ERR(xe, xe_vm_is_closed_or_banned(vm))) { + err = -ENOENT; + goto unlock_vm; + } + vmas = get_vmas(vm, &num_vmas, args->addr, args->range); if (XE_IOCTL_ERR(xe, err)) goto unlock_vm;