drivers/pcmcia: add missing pci_dev_get
[cascardo/linux.git] / drivers / pcmcia / cardbus.c
index 3f6d51d..714baae 100644 (file)
@@ -40,8 +40,6 @@
 
 /*====================================================================*/
 
-#define FIND_FIRST_BIT(n)      ((n) - ((n) & ((n)-1)))
-
 /* Offsets in the Expansion ROM Image Header */
 #define ROM_SIGNATURE          0x0000  /* 2 bytes */
 #define ROM_DATA_PTR           0x0018  /* 2 bytes */
@@ -138,20 +136,23 @@ int read_cb_mem(struct pcmcia_socket * s, int space, u_int addr, u_int len, void
 
        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;
 
        /* Config space? */
        if (space == 0) {
                if (addr + len > 0x100)
-                       goto fail;
+                       goto failput;
                for (; len; addr++, ptr++, len--)
                        pci_read_config_byte(dev, addr, ptr);
                return 0;
        }
 
        res = dev->resource + space - 1;
+
+       pci_dev_put(dev);
+
        if (!res->flags)
                goto fail;
 
@@ -170,6 +171,8 @@ int read_cb_mem(struct pcmcia_socket * s, int space, u_int addr, u_int len, void
        memcpy_fromio(ptr, s->cb_cis_virt + addr, len);
        return 0;
 
+failput:
+       pci_dev_put(dev);
 fail:
        memset(ptr, 0xff, len);
        return -1;