Remove the dev_info - contained name from struct client_t Signed-off-by: Dominik Brodowski Index: 2.6.10-rc3/drivers/pcmcia/cs.c =================================================================== --- 2.6.10-rc3.orig/drivers/pcmcia/cs.c 2004-12-13 16:04:29.636396361 +0100 +++ 2.6.10-rc3/drivers/pcmcia/cs.c 2004-12-13 16:04:31.414148905 +0100 @@ -1530,6 +1530,7 @@ 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 @@ ((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; } Index: 2.6.10-rc3/drivers/pcmcia/ds.c =================================================================== --- 2.6.10-rc3.orig/drivers/pcmcia/ds.c 2004-12-13 16:04:26.436841726 +0100 +++ 2.6.10-rc3/drivers/pcmcia/ds.c 2004-12-13 16:04:31.417148488 +0100 @@ -221,8 +221,10 @@ 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 @@ 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 @@ 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 @@ } 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); Index: 2.6.10-rc3/include/pcmcia/ds.h =================================================================== --- 2.6.10-rc3.orig/include/pcmcia/ds.h 2004-12-13 16:04:26.482835324 +0100 +++ 2.6.10-rc3/include/pcmcia/ds.h 2004-12-13 16:04:31.417148488 +0100 @@ -162,7 +162,6 @@ 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,