mirror of https://gitee.com/openkylin/linux.git
[PATCH] uml: free network IRQ correctly
Free the network IRQ when closing down the network devices at shutdown. Delete the device from the opened devices list on close. These prevent an -EBADF when later disabling SIGIO on all extant descriptors and a complaint from free_irq about freeing the IRQ twice. Signed-off-by: Jeff Dike <jdike@addtoit.com> Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
3a331a511a
commit
8d93c700a4
|
@ -150,6 +150,7 @@ static int uml_net_close(struct net_device *dev)
|
|||
if(lp->close != NULL)
|
||||
(*lp->close)(lp->fd, &lp->user);
|
||||
lp->fd = -1;
|
||||
list_del(&lp->list);
|
||||
|
||||
spin_unlock(&lp->lock);
|
||||
return 0;
|
||||
|
@ -715,6 +716,7 @@ static void close_devices(void)
|
|||
|
||||
list_for_each(ele, &opened){
|
||||
lp = list_entry(ele, struct uml_net_private, list);
|
||||
free_irq(lp->dev->irq, lp->dev);
|
||||
if((lp->close != NULL) && (lp->fd >= 0))
|
||||
(*lp->close)(lp->fd, &lp->user);
|
||||
if(lp->remove != NULL) (*lp->remove)(&lp->user);
|
||||
|
|
Loading…
Reference in New Issue