diff options
Diffstat (limited to 'drivers/parport/share.c')
| -rw-r--r-- | drivers/parport/share.c | 10 | 
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/parport/share.c b/drivers/parport/share.c index a2d9d1e5926..3fa66244ce3 100644 --- a/drivers/parport/share.c +++ b/drivers/parport/share.c @@ -282,14 +282,13 @@ struct parport *parport_register_port(unsigned long base, int irq, int dma,  	int device;  	char *name; -	tmp = kmalloc(sizeof(struct parport), GFP_KERNEL); +	tmp = kzalloc(sizeof(struct parport), GFP_KERNEL);  	if (!tmp) {  		printk(KERN_WARNING "parport: memory squeeze\n");  		return NULL;  	}  	/* Init our structure */ - 	memset(tmp, 0, sizeof(struct parport));  	tmp->base = base;  	tmp->irq = irq;  	tmp->dma = dma; @@ -678,7 +677,7 @@ void parport_unregister_device(struct pardevice *dev)  	/* Make sure we haven't left any pointers around in the wait  	 * list. */ -	spin_lock (&port->waitlist_lock); +	spin_lock_irq(&port->waitlist_lock);  	if (dev->waitprev || dev->waitnext || port->waithead == dev) {  		if (dev->waitprev)  			dev->waitprev->waitnext = dev->waitnext; @@ -689,7 +688,7 @@ void parport_unregister_device(struct pardevice *dev)  		else  			port->waittail = dev->waitprev;  	} -	spin_unlock (&port->waitlist_lock); +	spin_unlock_irq(&port->waitlist_lock);  	kfree(dev->state);  	kfree(dev); @@ -906,7 +905,8 @@ int parport_claim_or_block(struct pardevice *dev)  		/* If dev->waiting is clear now, an interrupt  		   gave us the port and we would deadlock if we slept.  */  		if (dev->waiting) { -			interruptible_sleep_on (&dev->wait_q); +			wait_event_interruptible(dev->wait_q, +						 !dev->waiting);  			if (signal_pending (current)) {  				return -EINTR;  			}  | 
