vserver 1.9.3
[linux-2.6.git] / drivers / pnp / pnpbios / proc.c
index 88fcd16..2fa4d21 100644 (file)
@@ -90,8 +90,10 @@ static int proc_read_escd(char *buf, char **start, off_t pos,
        tmpbuf = pnpbios_kmalloc(escd.escd_size, GFP_KERNEL);
        if (!tmpbuf) return -ENOMEM;
 
-       if (pnp_bios_read_escd(tmpbuf, escd.nv_storage_base))
+       if (pnp_bios_read_escd(tmpbuf, escd.nv_storage_base)) {
+               kfree(tmpbuf);
                return -EIO;
+       }
 
        escd_size = (unsigned char)(tmpbuf[0]) + (unsigned char)(tmpbuf[1])*256;
 
@@ -168,8 +170,10 @@ static int proc_read_node(char *buf, char **start, off_t pos,
 
        node = pnpbios_kmalloc(node_info.max_node_size, GFP_KERNEL);
        if (!node) return -ENOMEM;
-       if (pnp_bios_get_dev_node(&nodenum, boot, node))
+       if (pnp_bios_get_dev_node(&nodenum, boot, node)) {
+               kfree(node);
                return -EIO;
+       }
        len = node->size - sizeof(struct pnp_bios_node);
        memcpy(buf, node->data, len);
        kfree(node);