Skip to content

Commit

Permalink
drm/nv50/fb: Fix nullptr-deref on IGPs
Browse files Browse the repository at this point in the history
When COMP_MAX_TAG == 0, the tags mm was uninitialised. Fixed by initialising with zero length.

v2: Fix style error

Signed-off-by: Roy Spliet <r.spliet@student.tudelft.nl>
Tested-by: Roy Spliet <r.spliet@student.tudelft.nl>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
  • Loading branch information
Roy Spliet authored and Ben Skeggs committed Jan 31, 2013
1 parent 1e98380 commit 526810a
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 4 deletions.
4 changes: 2 additions & 2 deletions drivers/gpu/drm/nouveau/core/subdev/fb/base.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ nouveau_fb_preinit(struct nouveau_fb *pfb)
return ret;
}

if (!nouveau_mm_initialised(&pfb->tags) && tags) {
ret = nouveau_mm_init(&pfb->tags, 0, ++tags, 1);
if (!nouveau_mm_initialised(&pfb->tags)) {
ret = nouveau_mm_init(&pfb->tags, 0, tags ? ++tags : 0, 1);
if (ret)
return ret;
}
Expand Down
5 changes: 3 additions & 2 deletions drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ nv50_fb_vram_init(struct nouveau_fb *pfb)
struct nouveau_bios *bios = nouveau_bios(device);
const u32 rsvd_head = ( 256 * 1024) >> 12; /* vga memory */
const u32 rsvd_tail = (1024 * 1024) >> 12; /* vbios etc */
u32 size;
u32 size, tags = 0;
int ret;

pfb->ram.size = nv_rd32(pfb, 0x10020c);
Expand Down Expand Up @@ -140,10 +140,11 @@ nv50_fb_vram_init(struct nouveau_fb *pfb)
return ret;

pfb->ram.ranks = (nv_rd32(pfb, 0x100200) & 0x4) ? 2 : 1;
tags = nv_rd32(pfb, 0x100320);
break;
}

return nv_rd32(pfb, 0x100320);
return tags;
}

static int
Expand Down

0 comments on commit 526810a

Please sign in to comment.