[Nouveau] [Fwd: [PATCH] Fix null dereference oopses for nv40 cards] kernel 3.13.0-rc8

Ben Skeggs skeggsb at gmail.com
Mon Jan 13 21:07:39 PST 2014


On Tue, Jan 14, 2014 at 1:22 PM, Bob Gleitsmann <rjgleits at bellsouth.net> wrote:
> I should have mentioned that this applies to Linus' 3.13.0-rc7 and rc8
> git. Maybe it's obvious.
Hey Bob,

Thanks for reporting this.  Can you try the attached patch instead and
report if it helps you?

Ben.

>
> Sorry about that.
>
> Bob
> -------- Forwarded Message --------
> From: Bob Gleitsmann <rjgleits at bellsouth.net>
> To: bskeggs at redhat.com
> Cc: nouveau at lists.freedesktop.org, dri-devel at lists.freedesktop.org
> Subject: [PATCH] Fix null dereference oopses for nv40 cards
> Date: Mon, 13 Jan 2014 01:45:36 -0500
>
> The problem affects nv40 cards during booting. It comes from there being
> two places where subdev arrays are maintained. A commit was recently
> added to make the two equal. However, the struct nouveau_device version
> ends up being referenced before it is initialized. The problem arises
> during the creation of the INSTMEM and THERM subdevs. '
>
> Signed off by: Bob Gleitsmann rjgleits at bellsouth.net
>
> diff --git a/drivers/gpu/drm/nouveau/core/subdev/instmem/nv40.c b/drivers/gpu/drm/nouveau/core/subdev/instmem/nv40.c
> index b10a143..0f494ca 100644
> --- a/drivers/gpu/drm/nouveau/core/subdev/instmem/nv40.c
> +++ b/drivers/gpu/drm/nouveau/core/subdev/instmem/nv40.c
> @@ -23,6 +23,7 @@
>   */
>
>  #include <engine/graph/nv40.h>
> +#include <core/device.h>
>
>  #include "nv04.h"
>
> @@ -38,6 +39,7 @@ nv40_instmem_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
>
>         ret = nouveau_instmem_create(parent, engine, oclass, &priv);
>         *pobject = nv_object(priv);
> +       device->subdev[NVDEV_SUBDEV_INSTMEM] = *pobject;
>         if (ret)
>                 return ret;
>
> diff --git a/drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c b/drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c
> index 002e51b..59b25be 100644
> --- a/drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c
> +++ b/drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c
> @@ -187,9 +187,11 @@ nv40_therm_ctor(struct nouveau_object *parent,
>  {
>         struct nv40_therm_priv *priv;
>         int ret;
> +       struct nouveau_device *device = nv_device(parent);
>
>         ret = nouveau_therm_create(parent, engine, oclass, &priv);
>         *pobject = nv_object(priv);
> +       device->subdev[NVDEV_SUBDEV_THERM] = *pobject;
>         if (ret)
>                 return ret;
>
>
>
>
> _______________________________________________
> Nouveau mailing list
> Nouveau at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/nouveau
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-fix-null-ptr-dereferences-on-some-boards.patch
Type: text/x-patch
Size: 1629 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20140114/5ea59dbe/attachment-0001.bin>


More information about the dri-devel mailing list