Small change to pnp_bios.c
PATCH 1/1 Small change to pnp_bios.c
I have been trying to find out why the PnP BIOS driver causes the disabling of all the PnP-configurable devices on my ThinkPad 600. (One other user has reported the same problem.) I've been checking the pnp_bios.c driver against the spec and I found one little nit.
The spec says that after this call to the BIOS:
Q2_SET_SEL(PNP_TS1, nodenum, sizeof(char));
Q2_SET_SEL(PNP_TS2, data, 64 * 1024);
status = call_pnp_bios(PNP_GET_SYS_DEV_NODE, 0, PNP_TS1, 0, PNP_TS2, boot ? 2 : 1, PNP_DS, 0);
nodenum will be set to the next node number, or to 0xFF
if there are no more nodes. I added a check so that
the build-devlist loop will terminate if nodenum is 0xff.
This didn't solve my problem but it does seem like the
kosher thing to do. The patch also initializes the
variable "num" to zero. I know that static variables
in the kernel are automatically initialized to zero, but
I assume that the same is not true of stack variables.
Am I wrong?
The attached patch is against -ac13. Sorry, but the -ac15 differential patch hasn't come out yet. :(
Thomas
drivers/pnp/pnp_bios.c renamed from drivers/pnp/pnp_bios.c_1 +1 -1
@@ -839,13 +839,13 @@return ; node =kmalloc (node_info.max_node_size,GFP_KERNEL );if (!node)return ; -for (i=0 ;i<0xff ;i++) { +for (i=0 ,num=0 ;i<0xff ,num!=0xff ;i++) { dev =kmalloc (sizeof (struct pci_dev ),GFP_KERNEL );if (!dev)break ;if (pnp_bios_get_dev_node ((u8 *)&num, (char )0 , node))continue ;
drivers/pnp/pnp_bios.c line 845
Quoted 2 lines · Thomas Hood
drivers/pnp/pnp_bios.c renamed from drivers/pnp/pnp_bios.c_1 +1
-1-for (i=0 ;i<0xff ;i++) { +for (i=0 ,num=0 ;i<0xff ,num!=0xff ;i++) {
That middle comma should be || or &&, right?
Signature · 1 line
Ignacio Vazquez-Abrams <[email protected]>