From: Xiong Zhang Date: Mon, 5 Mar 2018 22:07:27 +0000 (+0800) Subject: drm/i915/gvt: Release gvt->lock at the failure of finding page track X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=7e60946feb4287111dc61a13ee66ea4295f4f6b4;p=openwrt%2Fstaging%2Fblogic.git drm/i915/gvt: Release gvt->lock at the failure of finding page track page_track_handler take lock at the beginning, the lock should be released at the failure of finding page track. Otherwise deadlock will happen. Fixes: e502a2af4c35 ("drm/i915/gvt: Provide generic page_track infrastructure for write-protected page") Signed-off-by: Xiong Zhang Signed-off-by: Zhenyu Wang --- diff --git a/drivers/gpu/drm/i915/gvt/page_track.c b/drivers/gpu/drm/i915/gvt/page_track.c index 09bd56e39ec6..2d030545356b 100644 --- a/drivers/gpu/drm/i915/gvt/page_track.c +++ b/drivers/gpu/drm/i915/gvt/page_track.c @@ -165,7 +165,7 @@ int intel_vgpu_page_track_handler(struct intel_vgpu *vgpu, u64 gpa, page_track = intel_vgpu_find_page_track(vgpu, gpa >> PAGE_SHIFT); if (!page_track) - return 0; + goto out; if (unlikely(vgpu->failsafe)) { /* Remove write protection to prevent furture traps. */ @@ -176,6 +176,7 @@ int intel_vgpu_page_track_handler(struct intel_vgpu *vgpu, u64 gpa, gvt_err("guest page write error, gpa %llx\n", gpa); } +out: mutex_unlock(&gvt->lock); return ret; }