From: Dominik Brodowski struct pcmcia_callback isn't needed for each socket, one is enough for all sockets. Signed-off-by: Dominik Brodowski Signed-off-by: Andrew Morton --- 25-akpm/drivers/pcmcia/ds.c | 10 ++++++---- 25-akpm/drivers/pcmcia/ds_internal.h | 1 - 2 files changed, 6 insertions(+), 5 deletions(-) diff -puN drivers/pcmcia/ds.c~pcmcia-clean-up-cs-ds-callback drivers/pcmcia/ds.c --- 25/drivers/pcmcia/ds.c~pcmcia-clean-up-cs-ds-callback 2005-03-20 15:59:34.000000000 -0800 +++ 25-akpm/drivers/pcmcia/ds.c 2005-03-20 15:59:34.000000000 -0800 @@ -1200,12 +1200,9 @@ static int __devinit pcmcia_bus_add_sock 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); @@ -1216,6 +1213,11 @@ static int __devinit pcmcia_bus_add_sock return 0; } +static struct pcmcia_callback pcmcia_bus_callback = { + .owner = THIS_MODULE, + .event = ds_event, + .requery = pcmcia_bus_rescan, +}; static void pcmcia_bus_remove_socket(struct class_device *class_dev) { diff -puN drivers/pcmcia/ds_internal.h~pcmcia-clean-up-cs-ds-callback drivers/pcmcia/ds_internal.h --- 25/drivers/pcmcia/ds_internal.h~pcmcia-clean-up-cs-ds-callback 2005-03-20 15:59:34.000000000 -0800 +++ 25-akpm/drivers/pcmcia/ds_internal.h 2005-03-20 15:59:34.000000000 -0800 @@ -5,7 +5,6 @@ struct user_info_t; /* Socket state information */ struct pcmcia_bus_socket { struct kref refcount; - struct pcmcia_callback callback; int state; struct pcmcia_socket *parent; _