summaryrefslogtreecommitdiff
path: root/drivers/char
diff options
context:
space:
mode:
authorDave Jones <davej@codemonkey.org.uk>2003-05-12 01:06:20 +0100
committerDave Jones <davej@tetrachloride.(none)>2003-05-12 01:06:20 +0100
commit55e174df627f191a6798ccf7aa8bb08193ae7aba (patch)
treeea1aab6382748934e249c3a621df978dc16ec788 /drivers/char
parent6ecb1dbc5571282bf5319f76e3dd88ce599f5383 (diff)
[AGPGART] add checks to agp_copy_info() before dereferencing.
Spotted by Andi Kleen with AGPless IOMMU setup.
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/agp/generic.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c
index 4b50767b26ba..3f5a3366cf37 100644
--- a/drivers/char/agp/generic.c
+++ b/drivers/char/agp/generic.c
@@ -270,13 +270,15 @@ EXPORT_SYMBOL_GPL(agp_num_entries);
int agp_copy_info(agp_kern_info * info)
{
memset(info, 0, sizeof(agp_kern_info));
- info->chipset = agp_bridge->type;
-
- if (agp_bridge->type == NOT_SUPPORTED)
+ if (!agp_bridge || agp_bridge->type == NOT_SUPPORTED ||
+ !agp_bridge->version) {
+ info->chipset = NOT_SUPPORTED;
return -EIO;
+ }
info->version.major = agp_bridge->version->major;
info->version.minor = agp_bridge->version->minor;
+ info->chipset = agp_bridge->type;
info->device = agp_bridge->dev;
info->mode = agp_bridge->mode;
info->aper_base = agp_bridge->gart_bus_addr;