struct pcmcia_callback isn't needed for each socket, one is enough for all sockets. Signed-off-by: Dominik Brodowski Index: 2.6.11+/drivers/pcmcia/ds.c =================================================================== --- 2.6.11+.orig/drivers/pcmcia/ds.c 2005-03-09 00:03:01.000000000 +0100 +++ 2.6.11+/drivers/pcmcia/ds.c 2005-03-09 00:03:03.000000000 +0100 @@ -1166,6 +1166,11 @@ } /* deregister_client */ EXPORT_SYMBOL(pcmcia_deregister_client); +static struct pcmcia_callback pcmcia_bus_callback = { + .owner = THIS_MODULE, + .event = ds_event, + .requery = pcmcia_bus_rescan, +}; static int __devinit pcmcia_bus_add_socket(struct class_device *class_dev) { @@ -1201,12 +1206,9 @@ INIT_WORK(&s->device_add, pcmcia_delayed_add_pseudo_device, s); /* Set up hotline to Card Services */ - s->callback.owner = THIS_MODULE; - s->callback.event = &ds_event; - s->callback.requery = &pcmcia_bus_rescan; socket->pcmcia = s; - ret = pccard_register_pcmcia(socket, &s->callback); + ret = pccard_register_pcmcia(socket, &pcmcia_bus_callback); if (ret) { printk(KERN_ERR "PCMCIA registration PCCard core failed for socket %p\n", socket); pcmcia_put_bus_socket(s); Index: 2.6.11+/drivers/pcmcia/ds_internal.h =================================================================== --- 2.6.11+.orig/drivers/pcmcia/ds_internal.h 2005-03-09 00:03:01.000000000 +0100 +++ 2.6.11+/drivers/pcmcia/ds_internal.h 2005-03-09 00:03:03.000000000 +0100 @@ -5,7 +5,6 @@ /* Socket state information */ struct pcmcia_bus_socket { struct kref refcount; - struct pcmcia_callback callback; int state; struct pcmcia_socket *parent;