summaryrefslogtreecommitdiffstats
path: root/sys/dev/agp
diff options
context:
space:
mode:
authoranholt <anholt@FreeBSD.org>2003-11-11 21:49:18 +0000
committeranholt <anholt@FreeBSD.org>2003-11-11 21:49:18 +0000
commita3bf20009f70eba5aa2a79bfd38c9363d624f530 (patch)
tree6923eb476dc98a422a64974b7a37b8308fda7fc7 /sys/dev/agp
parent9cd493ccafa4a5de0ccf5fa52c5805372f51cd37 (diff)
downloadFreeBSD-src-a3bf20009f70eba5aa2a79bfd38c9363d624f530.zip
FreeBSD-src-a3bf20009f70eba5aa2a79bfd38c9363d624f530.tar.gz
- Disable AGP on ALI chipsets if aperture size is 0.
- Fail in agp_alloc_gatt if the aperture size is 0 instead of panicing in contigmalloc. Reported by: Bjoern Fischer <bfischer@Techfak.Uni-Bielefeld.DE> Reviewed by: jhb MFC after: 1 week
Diffstat (limited to 'sys/dev/agp')
-rw-r--r--sys/dev/agp/agp.c5
-rw-r--r--sys/dev/agp/agp_ali.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/sys/dev/agp/agp.c b/sys/dev/agp/agp.c
index 7bf49b2..e664459 100644
--- a/sys/dev/agp/agp.c
+++ b/sys/dev/agp/agp.c
@@ -175,6 +175,11 @@ agp_alloc_gatt(device_t dev)
"allocating GATT for aperture of size %dM\n",
apsize / (1024*1024));
+ if (entries == 0) {
+ device_printf(dev, "bad aperture size\n");
+ return NULL;
+ }
+
gatt = malloc(sizeof(struct agp_gatt), M_AGP, M_NOWAIT);
if (!gatt)
return 0;
diff --git a/sys/dev/agp/agp_ali.c b/sys/dev/agp/agp_ali.c
index b9b2c13..fc99574 100644
--- a/sys/dev/agp/agp_ali.c
+++ b/sys/dev/agp/agp_ali.c
@@ -102,6 +102,10 @@ agp_ali_attach(device_t dev)
return error;
sc->initial_aperture = AGP_GET_APERTURE(dev);
+ if (sc->initial_aperture == 0) {
+ device_printf(dev, "bad initial aperture size, disabling\n");
+ return ENXIO;
+ }
for (;;) {
gatt = agp_alloc_gatt(dev);
OpenPOWER on IntegriCloud