6pack: Fix use after free in sixpack_close().
Need to do the unregister_device() after all references to the driver private have been done. Also we need to use del_timer_sync() for the timers so that we don't have any asynchronous references after the unregister. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6e3cd5fa65
commit
acf673a318
1 changed files with 4 additions and 4 deletions
|
@ -683,14 +683,14 @@ static void sixpack_close(struct tty_struct *tty)
|
|||
if (!atomic_dec_and_test(&sp->refcnt))
|
||||
down(&sp->dead_sem);
|
||||
|
||||
unregister_netdev(sp->dev);
|
||||
|
||||
del_timer(&sp->tx_t);
|
||||
del_timer(&sp->resync_t);
|
||||
del_timer_sync(&sp->tx_t);
|
||||
del_timer_sync(&sp->resync_t);
|
||||
|
||||
/* Free all 6pack frame buffers. */
|
||||
kfree(sp->rbuff);
|
||||
kfree(sp->xbuff);
|
||||
|
||||
unregister_netdev(sp->dev);
|
||||
}
|
||||
|
||||
/* Perform I/O control on an active 6pack channel. */
|
||||
|
|
Loading…
Add table
Reference in a new issue