drivers/pcmcia/cs.c | 6 ++++-- drivers/pcmcia/cs_internal.h | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff -puN drivers/pcmcia/cs.c~pcmcia-4 drivers/pcmcia/cs.c --- 25/drivers/pcmcia/cs.c~pcmcia-4 2003-03-21 20:04:31.000000000 -0800 +++ 25-akpm/drivers/pcmcia/cs.c 2003-03-21 20:04:31.000000000 -0800 @@ -621,8 +621,10 @@ static void unreset_socket(socket_info_t send_event(s, CS_EVENT_PM_RESUME, CS_EVENT_PRI_LOW); } else if (s->state & SOCKET_SETUP_PENDING) { #ifdef CONFIG_CARDBUS - if (s->state & SOCKET_CARDBUS) + if (s->state & SOCKET_CARDBUS) { cb_alloc(s); + s->state |= SOCKET_CARDBUS_CONFIG; + } #endif send_event(s, CS_EVENT_CARD_INSERTION, CS_EVENT_PRI_LOW); s->state &= ~SOCKET_SETUP_PENDING; @@ -1076,7 +1078,7 @@ int pcmcia_get_configuration_info(client config->Vcc = s->socket.Vcc; config->Vpp1 = config->Vpp2 = s->socket.Vpp; config->Option = s->cap.cb_dev->subordinate->number; - if (s->cb_config) { + if (s->state & SOCKET_CARDBUS_CONFIG) { config->Attributes = CONF_VALID_CLIENT; config->IntType = INT_CARDBUS; config->AssignedIRQ = s->irq.AssignedIRQ; diff -puN drivers/pcmcia/cs_internal.h~pcmcia-4 drivers/pcmcia/cs_internal.h --- 25/drivers/pcmcia/cs_internal.h~pcmcia-4 2003-03-21 20:04:31.000000000 -0800 +++ 25-akpm/drivers/pcmcia/cs_internal.h 2003-03-21 20:04:31.000000000 -0800 @@ -176,6 +176,7 @@ typedef struct socket_info_t { #define SOCKET_IO_REQ(i) (0x1000<<(i)) #define SOCKET_REGION_INFO 0x4000 #define SOCKET_CARDBUS 0x8000 +#define SOCKET_CARDBUS_CONFIG 0x10000 #define CHECK_HANDLE(h) \ (((h) == NULL) || ((h)->client_magic != CLIENT_MAGIC)) _