From: Dominik Brodowski Remove the dev_info - contained name from struct client_t Signed-off-by: Dominik Brodowski Signed-off-by: Andrew Morton --- 25-akpm/drivers/pcmcia/cs.c | 3 ++- 25-akpm/drivers/pcmcia/ds.c | 27 ++++++++++++++++++--------- 25-akpm/include/pcmcia/ds.h | 1 - 3 files changed, 20 insertions(+), 11 deletions(-) diff -puN drivers/pcmcia/cs.c~pcmcia-remove-dev_info-from-client drivers/pcmcia/cs.c --- 25/drivers/pcmcia/cs.c~pcmcia-remove-dev_info-from-client Fri Dec 17 15:25:03 2004 +++ 25-akpm/drivers/pcmcia/cs.c Fri Dec 17 15:25:03 2004 @@ -1530,6 +1530,7 @@ int pcmcia_request_irq(client_handle_t h struct pcmcia_socket *s; config_t *c; int ret = CS_IN_USE, irq = 0; + struct pcmcia_device *p_dev = handle_to_pdev(handle); if (CHECK_HANDLE(handle)) return CS_BAD_HANDLE; @@ -1579,7 +1580,7 @@ int pcmcia_request_irq(client_handle_t h ((req->Attributes & IRQ_TYPE_DYNAMIC_SHARING) || (s->functions > 1) || (irq == s->pci_irq)) ? SA_SHIRQ : 0, - handle->dev_info, req->Instance)) + p_dev->dev.bus_id, req->Instance)) return CS_IN_USE; } diff -puN drivers/pcmcia/ds.c~pcmcia-remove-dev_info-from-client drivers/pcmcia/ds.c --- 25/drivers/pcmcia/ds.c~pcmcia-remove-dev_info-from-client Fri Dec 17 15:25:03 2004 +++ 25-akpm/drivers/pcmcia/ds.c Fri Dec 17 15:25:03 2004 @@ -221,8 +221,10 @@ int pcmcia_report_error(client_handle_t if (CHECK_HANDLE(handle)) printk(KERN_NOTICE); - else - printk(KERN_NOTICE "%s: ", handle->dev_info); + else { + struct pcmcia_device *p_dev = handle_to_pdev(handle); + printk(KERN_NOTICE "%s: ", p_dev->dev.bus_id); + } for (i = 0; i < ARRAY_SIZE(service_table); i++) if (service_table[i].key == err->func) @@ -608,7 +610,6 @@ static int bind_request(struct pcmcia_bu p_dev->client.Socket = s->parent; p_dev->client.Function = bind_info->function; p_dev->client.state = CLIENT_UNBOUND; - strlcpy(p_dev->client.dev_info, p_drv->drv.name, DEV_NAME_LEN); ret = device_register(&p_dev->dev); if (ret) { @@ -683,14 +684,22 @@ int pcmcia_register_client(client_handle continue; spin_lock_irqsave(&pcmcia_dev_list_lock, flags); list_for_each_entry(p_dev, &skt->devices_list, socket_device_list) { - if ((p_dev->client.state & CLIENT_UNBOUND) && - (!strcmp(p_dev->client.dev_info, (char *)req->dev_info))) { - p_dev = pcmcia_get_dev(p_dev); - if (p_dev) - client = &p_dev->client; + struct pcmcia_driver *p_drv; + p_dev = pcmcia_get_dev(p_dev); + if (!p_dev) + continue; + if ((!p_dev->client.state & CLIENT_UNBOUND) || + (!p_dev->dev.driver)) { + pcmcia_put_dev(p_dev); + continue; + } + p_drv = to_pcmcia_drv(p_dev->dev.driver); + if (!strncmp(p_drv->drv.name, (char *)req->dev_info, DEV_NAME_LEN)) { + client = &p_dev->client; spin_unlock_irqrestore(&pcmcia_dev_list_lock, flags); goto found; } + pcmcia_put_dev(p_dev); } spin_unlock_irqrestore(&pcmcia_dev_list_lock, flags); pcmcia_put_bus_socket(skt); @@ -733,7 +742,7 @@ int pcmcia_register_client(client_handle } ds_dbg(1, "register_client(): client 0x%p, dev %s\n", - client, client->dev_info); + client, p_dev->dev.bus_id); if (client->EventMask & CS_EVENT_REGISTRATION_COMPLETE) EVENT(client, CS_EVENT_REGISTRATION_COMPLETE, CS_EVENT_PRI_LOW); diff -puN include/pcmcia/ds.h~pcmcia-remove-dev_info-from-client include/pcmcia/ds.h --- 25/include/pcmcia/ds.h~pcmcia-remove-dev_info-from-client Fri Dec 17 15:25:03 2004 +++ 25-akpm/include/pcmcia/ds.h Fri Dec 17 15:25:03 2004 @@ -162,7 +162,6 @@ struct pcmcia_device { u_short client_magic; struct pcmcia_socket *Socket; u_char Function; - dev_info_t dev_info; u_int state; event_t EventMask; int (*event_handler) (event_t event, int priority, _