diff options
Diffstat (limited to 'drivers/char/nwbutton.c')
| -rw-r--r-- | drivers/char/nwbutton.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/char/nwbutton.c b/drivers/char/nwbutton.c index cfdfe493c6a..76c490fa051 100644 --- a/drivers/char/nwbutton.c +++ b/drivers/char/nwbutton.c @@ -168,7 +168,10 @@ static irqreturn_t button_handler (int irq, void *dev_id)  static int button_read (struct file *filp, char __user *buffer,  			size_t count, loff_t *ppos)  { -	interruptible_sleep_on (&button_wait_queue); +	DEFINE_WAIT(wait); +	prepare_to_wait(&button_wait_queue, &wait, TASK_INTERRUPTIBLE); +	schedule(); +	finish_wait(&button_wait_queue, &wait);  	return (copy_to_user (buffer, &button_output_buffer, bcount))  		 ? -EFAULT : bcount;  } @@ -220,7 +223,7 @@ static int __init nwbutton_init(void)  		return -EBUSY;  	} -	if (request_irq (IRQ_NETWINDER_BUTTON, button_handler, IRQF_DISABLED, +	if (request_irq (IRQ_NETWINDER_BUTTON, button_handler, 0,  			"nwbutton", NULL)) {  		printk (KERN_WARNING "nwbutton: IRQ %d is not free.\n",  				IRQ_NETWINDER_BUTTON);  | 
