diff options
Diffstat (limited to 'drivers/pcmcia/pcmcia_ioctl.c')
-rw-r--r-- | drivers/pcmcia/pcmcia_ioctl.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/pcmcia/pcmcia_ioctl.c b/drivers/pcmcia/pcmcia_ioctl.c index be08bc9e99f..2b11a332175 100644 --- a/drivers/pcmcia/pcmcia_ioctl.c +++ b/drivers/pcmcia/pcmcia_ioctl.c | |||
@@ -229,7 +229,7 @@ static int bind_request(struct pcmcia_socket *s, bind_info_t *bind_info) | |||
229 | * by userspace before, we need to | 229 | * by userspace before, we need to |
230 | * return the "instance". */ | 230 | * return the "instance". */ |
231 | spin_unlock_irqrestore(&pcmcia_dev_list_lock, flags); | 231 | spin_unlock_irqrestore(&pcmcia_dev_list_lock, flags); |
232 | bind_info->instance = p_dev->instance; | 232 | bind_info->instance = p_dev; |
233 | ret = -EBUSY; | 233 | ret = -EBUSY; |
234 | goto err_put_module; | 234 | goto err_put_module; |
235 | } else { | 235 | } else { |
@@ -358,16 +358,15 @@ static int get_device_info(struct pcmcia_socket *s, bind_info_t *bind_info, int | |||
358 | found: | 358 | found: |
359 | spin_unlock_irqrestore(&pcmcia_dev_list_lock, flags); | 359 | spin_unlock_irqrestore(&pcmcia_dev_list_lock, flags); |
360 | 360 | ||
361 | if ((!p_dev->instance) || | 361 | if (p_dev->state & DEV_CONFIG_PENDING) { |
362 | (p_dev->instance->state & DEV_CONFIG_PENDING)) { | ||
363 | ret = -EAGAIN; | 362 | ret = -EAGAIN; |
364 | goto err_put; | 363 | goto err_put; |
365 | } | 364 | } |
366 | 365 | ||
367 | if (first) | 366 | if (first) |
368 | node = p_dev->instance->dev; | 367 | node = p_dev->dev_node; |
369 | else | 368 | else |
370 | for (node = p_dev->instance->dev; node; node = node->next) | 369 | for (node = p_dev->dev_node; node; node = node->next) |
371 | if (node == bind_info->next) | 370 | if (node == bind_info->next) |
372 | break; | 371 | break; |
373 | if (!node) { | 372 | if (!node) { |