-
Andrew Morton authored
From: Manfred Spraul <manfred@colorfullife.com> The mwave driver uses a user space daemon for some modem operations. The user space daemon calls ioctl(,IOCTL_MW_GET_IPC), and the driver returns after an interrupt arrived. The actual wait used interruptible_sleep_on(), which can lead to lost wakeups. A local spinlock on the stack is used to close that race, but this is broken on SMP, perhaps even with preempt. The attached patch fixes that by switching to the normal add_wait_queue/test_if_race_occured/schedule/remove_wait_queue sequence.
5ee6ddc2