Skip to content

Commit

Permalink
6pack: Fix use after free in sixpack_close().
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
David Miller committed Dec 18, 2015
1 parent 6e3cd5f commit acf673a
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions drivers/net/hamradio/6pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand Down

0 comments on commit acf673a

Please sign in to comment.