• James Lamanna's avatar
    [PATCH] USB: Fix down() in hard IRQ in powermate driver · 6dbb845a
    James Lamanna authored
    Fixes this warning:
    
    May 18 06:56:01 Knoppix kernel: Debug: sleeping function called from
    invalid context at include/asm/semaphore.h:119
    May 18 06:56:01 Knoppix kernel: in_atomic():1, irqs_disabled():0
    May 18 06:56:01 Knoppix kernel: Call Trace:
    May 18 06:56:01 Knoppix kernel:  [<c0117083>] __might_sleep+0xb2/0xd3
    May 18 06:56:01 Knoppix kernel:  [<f88b92f4>] powermate_config_complete+0x33/0x77 [powermate]
    May 18 06:56:01 Knoppix kernel:  [<c02c6760>] usb_hcd_giveback_urb+0x25/0x39
    May 18 06:56:01 Knoppix kernel:  [<c02d7194>] uhci_finish_urb+0x54/0xa1
    May 18 06:56:01 Knoppix kernel:  [<c02d7224>] uhci_finish_completion+0x43/0x55
    May 18 06:56:01 Knoppix kernel:  [<c02d737d>] uhci_irq+0xf8/0x179
    May 18 06:56:01 Knoppix kernel:  [<c02c67aa>] usb_hcd_irq+0x36/0x67
    May 18 06:56:01 Knoppix kernel:  [<c01060c6>] handle_IRQ_event+0x3a/0x64
    May 18 06:56:01 Knoppix kernel:  [<c0106479>] do_IRQ+0xb8/0x192
    May 18 06:56:01 Knoppix kernel:  [<c0104850>] common_interrupt+0x18/0x20
    
    Attached patch uses spinlocks instead of a semaphore so that we can't sleep
    when in_atomic().
    6dbb845a
powermate.c 15.1 KB