Re: Kernel Oops on 3.14.66

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 27/04/16 10:19, Andreas Lampersperger wrote:
Hello,

has anyone here a hint for me, what can cause this error.
The error occures highly sporadic on different machines with intel hd
graphics (ivb_gt1).
I did also some kernel coredumps and found out, that the failed
paging request came from drm_i915_gem_request->list.prev or ->list.next.

Thank you
Andreas

Try this patch.

.Dave.

>From 6dde6b8b07239c68f32315faffa9d80b6e2d0aec Mon Sep 17 00:00:00 2001
From: Dave Gordon <david.s.gordon@xxxxxxxxx>
Date: Fri, 22 Apr 2016 19:33:53 +0100
Subject: [PATCH] Request constructor should initialise list head
Organization: Intel Corporation (UK) Ltd. - Co. Reg. #1134945 - Pipers Way, Swindon SN3 1RJ

Users of the Linux kernel linked-list macros should remember that a
zeroed "struct list_head" is not a valid list and in particular is
not the same as an empty list. ALL list heads MUST be initialised!

Without this, any attempt to follow this link (e.g. during teardown)
before the request has been put on the list of pending requests (or
if is not put on the list, e.g. is cancelled instead) will result in
a NULL pointer dereference.

Note: the diff below claims this code goes in i915_gem_request_free(),
but that's just git's failure to parse the function headers correctly.
It obviously belongs in __i915_gem_request_alloc(); it seems to apply
correctly despite the incorrect function tag.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93907 ?
Signed-off-by: Dave Gordon <david.s.gordon@xxxxxxxxx>
---
 drivers/gpu/drm/i915/i915_gem.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index d493e79..8ce7d4d 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2751,6 +2751,7 @@ void i915_gem_request_free(struct kref *req_ref)
 	if (ret)
 		goto err;
 
+	INIT_LIST_HEAD(&req->list);
 	kref_init(&req->ref);
 	req->i915 = dev_priv;
 	req->engine = engine;
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux