Fix an infinite loop in pnp_get_ioresource(), which freezes coreboot if
authorStefan Reinauer <reinauer@google.com>
Mon, 31 Jan 2011 21:16:48 +0000 (21:16 +0000)
committerMarc Jones <marc.jones@amd.com>
Mon, 31 Jan 2011 21:16:48 +0000 (21:16 +0000)
a rare condition arises.

Based on findings by Alexandru Gagniuc <mr.nuke.me@gmail.com>

Signed-off-by: Stefan Reinauer <reinauer@google.com>
Acked-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6323 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/devices/pnp_device.c

index b2bca032326806a28cff19e673d97e9c1d5be4d3..a6d428abedbee4c98962668ae505efdfb55504f1 100644 (file)
@@ -170,6 +170,12 @@ static void pnp_get_ioresource(device_t dev, u8 index, struct io_info *info)
        struct resource *resource;
        unsigned moving, gran, step;
 
+       if (!info->mask) {
+               printk(BIOS_ERR, "ERROR: device %s index %d has no mask.\n",
+                               dev_path(dev), index);
+               return;
+       }
+
        resource = new_resource(dev, index);
 
        /* Initilize the resource. */