diff options
author | Maarten Lankhorst <m.b.lankhorst@gmail.com> | 2011-11-24 14:08:53 +0100 |
---|---|---|
committer | Younes Manton <younes.m@gmail.com> | 2011-11-27 12:28:20 -0500 |
commit | 37ccce5e390a9d757474920f488cafa1cf89854a (patch) | |
tree | 1cba89c028e2b25975a649f52fdb48f85615c7b4 /nouveau | |
parent | ca4971292cf99e0063416cd1c3467af94637bf2b (diff) | |
download | libdrm-37ccce5e390a9d757474920f488cafa1cf89854a.tar.gz libdrm-37ccce5e390a9d757474920f488cafa1cf89854a.tar.bz2 libdrm-37ccce5e390a9d757474920f488cafa1cf89854a.zip |
nouveau: Mark nouveau subchannel unbound nouveau_grobj_free
Valgrind throws warns about a user-after-free if you try to bind a
new subchannel after the old one in that slot was freed,
so remove it from the channel list.
Signed-off-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>
Diffstat (limited to 'nouveau')
-rw-r--r-- | nouveau/nouveau_grobj.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/nouveau/nouveau_grobj.c b/nouveau/nouveau_grobj.c index c6b98f16..36344b99 100644 --- a/nouveau/nouveau_grobj.c +++ b/nouveau/nouveau_grobj.c @@ -100,12 +100,13 @@ nouveau_grobj_free(struct nouveau_grobj **grobj) struct drm_nouveau_gpuobj_free f; FIRE_RING(&chan->base); - f.channel = chan->drm.channel; f.handle = nvgrobj->base.handle; drmCommandWrite(nvdev->fd, DRM_NOUVEAU_GPUOBJ_FREE, &f, sizeof(f)); } + if (nvgrobj->base.bound != NOUVEAU_GROBJ_UNBOUND) + chan->base.subc[nvgrobj->base.subc].gr = NULL; free(nvgrobj); } |