Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6

* 'urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6:
pcmcia: fix compilation after 16bit state locking changes
pcmcia: order userspace suspend and resume requests
pcmcia: avoid pccard_validate_cis failure in resume callpath

+11 -13
+9 -7
drivers/pcmcia/cs.c
··· 671 671 socket_remove(skt); 672 672 if (sysfs_events & PCMCIA_UEVENT_INSERT) 673 673 socket_insert(skt); 674 - if ((sysfs_events & PCMCIA_UEVENT_RESUME) && 675 - !(skt->state & SOCKET_CARDBUS)) { 676 - ret = socket_resume(skt); 677 - if (!ret && skt->callback) 678 - skt->callback->resume(skt); 679 - } 680 674 if ((sysfs_events & PCMCIA_UEVENT_SUSPEND) && 681 675 !(skt->state & SOCKET_CARDBUS)) { 682 676 if (skt->callback) 683 677 ret = skt->callback->suspend(skt); 684 678 else 685 679 ret = 0; 686 - if (!ret) 680 + if (!ret) { 687 681 socket_suspend(skt); 682 + msleep(100); 683 + } 684 + } 685 + if ((sysfs_events & PCMCIA_UEVENT_RESUME) && 686 + !(skt->state & SOCKET_CARDBUS)) { 687 + ret = socket_resume(skt); 688 + if (!ret && skt->callback) 689 + skt->callback->resume(skt); 688 690 } 689 691 if ((sysfs_events & PCMCIA_UEVENT_REQUERY) && 690 692 !(skt->state & SOCKET_CARDBUS)) {
+1
drivers/pcmcia/ds.c
··· 1283 1283 destroy_cis_cache(skt); 1284 1284 kfree(skt->fake_cis); 1285 1285 skt->fake_cis = NULL; 1286 + s->functions = 0; 1286 1287 mutex_unlock(&s->ops_mutex); 1287 1288 /* now, add the new card */ 1288 1289 ds_event(skt, CS_EVENT_CARD_INSERTION,
+1 -6
drivers/pcmcia/pcmcia_ioctl.c
··· 711 711 warning_printed = 1; 712 712 } 713 713 714 - if (s->pcmcia_state.present) 714 + if (atomic_read(&s->present)) 715 715 queue_event(user, CS_EVENT_CARD_INSERTION); 716 716 out: 717 717 unlock_kernel(); ··· 770 770 return -EIO; 771 771 772 772 s = user->socket; 773 - if (s->pcmcia_state.dead) 774 - return -EIO; 775 - 776 773 ret = wait_event_interruptible(s->queue, !queue_empty(user)); 777 774 if (ret == 0) 778 775 ret = put_user(get_queued_event(user), (int __user *)buf) ? -EFAULT : 4; ··· 835 838 return -EIO; 836 839 837 840 s = user->socket; 838 - if (s->pcmcia_state.dead) 839 - return -EIO; 840 841 841 842 size = (cmd & IOCSIZE_MASK) >> IOCSIZE_SHIFT; 842 843 if (size > sizeof(ds_ioctl_arg_t))