Hi Alexandru,

thanks for finding this issue. I think I ran into this before. We
should not silently continue in this case, and not create a resource
either. The problem is most likely caused by a faulty devicetree.cb or
superio driver. Hence, I suggest to print an error instead. See patch.
Can you test, please? It should tell you which device / index is
causing the problem.

Stefan

On Fri, Jan 28, 2011 at 2:14 AM, Alex G. <[email protected]> wrote:
> Fix an infinite loop in pnp_get_ioresource(), which freezes coreboot if
> a rare condition arises.
>
> Signed-off-by: Alexandru Gagniuc <[email protected]>
> ---
>
>
> --
> coreboot mailing list: [email protected]
> http://www.coreboot.org/mailman/listinfo/coreboot
>



-- 
Stefan Reinauer
Google Inc.
Fix an infinite loop in pnp_get_ioresource(), which freezes coreboot if
a rare condition arises.

Based on findings by Alexandru Gagniuc <[email protected]>

Signed-off-by: Stefan Reinauer <[email protected]>

diff --git a/src/devices/pnp_device.c b/src/devices/pnp_device.c
index b2bca03..4a6d266 100644
--- a/src/devices/pnp_device.c
+++ b/src/devices/pnp_device.c
@@ -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. */
-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to