summaryrefslogtreecommitdiff
path: root/drivers/char
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2009-03-10 19:55:54 (GMT)
committerLinus Torvalds <torvalds@linux-foundation.org>2009-03-10 22:55:11 (GMT)
commit9c1e8a4ebcc04226cb6f3a1bf1d72f4cafd6b089 (patch)
tree30a76767516304283f29d1997cd6a285e39d160a /drivers/char
parent229cc58ba2b5a83b0b55764c6cb98695c106238a (diff)
downloadlinux-fsl-qoriq-9c1e8a4ebcc04226cb6f3a1bf1d72f4cafd6b089.tar.xz
intel-agp: fix a panic with 1M of shared memory, no GTT entries
When GTT size is equal to amount of video memory, the amount of GTT entries is computed lower than zero, which is invalid and leads to off-by-one error in intel_i915_configure() Originally posted here: http://bugzilla.kernel.org/show_bug.cgi?id=12539 http://bugzilla.redhat.com/show_bug.cgi?id=445592 Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Cc: Lubomir Rintel <lkundrak@v3.sk> Cc: Dave Airlie <airlied@linux.ie> Reviewed-by: Eric Anholt <eric@anholt.net> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/agp/intel-agp.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index c771418..4373adb 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -633,13 +633,15 @@ static void intel_i830_init_gtt_entries(void)
break;
}
}
- if (gtt_entries > 0)
+ if (gtt_entries > 0) {
dev_info(&agp_bridge->dev->dev, "detected %dK %s memory\n",
gtt_entries / KB(1), local ? "local" : "stolen");
- else
+ gtt_entries /= KB(4);
+ } else {
dev_info(&agp_bridge->dev->dev,
"no pre-allocated video memory detected\n");
- gtt_entries /= KB(4);
+ gtt_entries = 0;
+ }
intel_private.gtt_entries = gtt_entries;
}