diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.18-mm1/drivers/pcmcia/cardbus.c linux-2.6.18-mm1/drivers/pcmcia/cardbus.c --- linux.vanilla-2.6.18-mm1/drivers/pcmcia/cardbus.c 2006-09-25 12:08:50.000000000 +0100 +++ linux-2.6.18-mm1/drivers/pcmcia/cardbus.c 2006-09-25 12:23:54.000000000 +0100 @@ -138,7 +138,7 @@ cs_dbg(s, 3, "read_cb_mem(%d, %#x, %u)\n", space, addr, len); - dev = pci_find_slot(s->cb_dev->subordinate->number, 0); + dev = pci_get_slot(s->cb_dev->subordinate, 0); if (!dev) goto fail; @@ -152,6 +152,9 @@ } res = dev->resource + space - 1; + + pci_dev_put(dev); + if (!res->flags) goto fail;