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

Bug#579425: Still no dice, but a segfault instead



On 2010-05-13 02:15 +0200, Stefan Monnier wrote:

> So I upgraded to 2.6.32-12 (after spending some time to finally understand it's
> named 2.6.32-5) as well as 2.6.33-experimentl4 (couldn't find the experimental5
> you mention), and booted without the vga= argument.
> The result is a segfault apparently related to libdrm-nouveau, so I tried to
> upgrade the packages that seemed relevant to `unstable', but it did not make
> any difference as you can see in the attached "system info".

Could you please apply the following patch to libdrm?  Alternatively,
use the libdrm packages from experimental where the segfault should also
be fixed.

--8<---------------cut here---------------start------------->8---
diff -u libdrm-2.4.18/debian/changelog libdrm-2.4.18/debian/changelog
--- libdrm-2.4.18/debian/changelog
+++ libdrm-2.4.18/debian/changelog
@@ -1,3 +1,10 @@
+libdrm (2.4.18-6) UNRELEASED; urgency=low
+
+  * New patch 04_fix_nouveau_bo_new_tile_segfault.diff, backported from
+    upstream commit df32c307e8f81b46ee8aa4dd7222fc18f175bbb3.
+
+ -- Sven Joachim <svenjoac@gmx.de>  Thu, 13 May 2010 07:06:57 +0200
+
 libdrm (2.4.18-5) unstable; urgency=low
 
   * Upload to unstable.
diff -u libdrm-2.4.18/debian/patches/series libdrm-2.4.18/debian/patches/series
--- libdrm-2.4.18/debian/patches/series
+++ libdrm-2.4.18/debian/patches/series
@@ -2,0 +3 @@
+04_fix_nouveau_bo_new_tile_segfault.diff
only in patch2:
unchanged:
--- libdrm-2.4.18.orig/debian/patches/04_fix_nouveau_bo_new_tile_segfault.diff
+++ libdrm-2.4.18/debian/patches/04_fix_nouveau_bo_new_tile_segfault.diff
@@ -0,0 +1,21 @@
+Index: b/nouveau/nouveau_bo.c
+===================================================================
+--- a/nouveau/nouveau_bo.c
++++ b/nouveau/nouveau_bo.c
+@@ -198,14 +198,14 @@
+ 	if (flags & (NOUVEAU_BO_VRAM | NOUVEAU_BO_GART)) {
+ 		ret = nouveau_bo_kalloc(nvbo, NULL);
+ 		if (ret) {
+-			nouveau_bo_ref(NULL, (void *)nvbo);
++			nouveau_bo_ref(NULL, (void *)&nvbo);
+ 			return ret;
+ 		}
+ 
+ 		if (flags & NOUVEAU_BO_PIN) {
+ 			ret = nouveau_bo_pin((void *)nvbo, nvbo->flags);
+ 			if (ret) {
+-				nouveau_bo_ref(NULL, (void *)nvbo);
++				nouveau_bo_ref(NULL, (void *)&nvbo);
+ 				return ret;
+ 			}
+ 		}

--8<---------------cut here---------------end--------------->8---

Sven



Reply to: