• Andrew Morton's avatar
    [PATCH] mwave locking fixes · 5ee6ddc2
    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
mwavedd.c 18.1 KB