From 368c72e1e1495ef8996a6167bae27167de37d15c Mon Sep 17 00:00:00 2001 From: Jan Dumon Date: Wed, 1 Apr 2009 22:57:20 +0000 Subject: [PATCH] --- yaml --- r: 139823 b: refs/heads/master c: 3b7d2b319db0ba1f6208ca58b297fb419301f85a h: refs/heads/master i: 139821: 01c1dbd3d70557d32fe68a6c4dfe8ca5403c5ab3 139819: f0db146b2b6ebcac7004190097c5cff3cfbb3247 139815: d6c35d1adb3da8821d3c13294bc761ead1c9f9c0 139807: 273ccbb7f80a713d63a84e54a5a17b448d39203f v: v3 --- [refs] | 2 +- trunk/drivers/net/usb/hso.c | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index d77a3945802c..78d19227aeea 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b6bc978b361bb9da7526a78b0a247bdd34984282 +refs/heads/master: 3b7d2b319db0ba1f6208ca58b297fb419301f85a diff --git a/trunk/drivers/net/usb/hso.c b/trunk/drivers/net/usb/hso.c index 28d1424a3110..779a0078fcde 100644 --- a/trunk/drivers/net/usb/hso.c +++ b/trunk/drivers/net/usb/hso.c @@ -5,6 +5,7 @@ * Copyright (C) 2008 Option International * Filip Aben * Denis Joseph Barrow + * Jan Dumon * Copyright (C) 2007 Andrew Bird (Sphere Systems Ltd) * * Copyright (C) 2008 Greg Kroah-Hartman @@ -2417,20 +2418,22 @@ static void hso_free_net_device(struct hso_device *hso_dev) if (!hso_net) return; + remove_net_device(hso_net->parent); + + if (hso_net->net) { + unregister_netdev(hso_net->net); + free_netdev(hso_net->net); + } + /* start freeing */ for (i = 0; i < MUX_BULK_RX_BUF_COUNT; i++) { usb_free_urb(hso_net->mux_bulk_rx_urb_pool[i]); kfree(hso_net->mux_bulk_rx_buf_pool[i]); + hso_net->mux_bulk_rx_buf_pool[i] = NULL; } usb_free_urb(hso_net->mux_bulk_tx_urb); kfree(hso_net->mux_bulk_tx_buf); - - remove_net_device(hso_net->parent); - - if (hso_net->net) { - unregister_netdev(hso_net->net); - free_netdev(hso_net->net); - } + hso_net->mux_bulk_tx_buf = NULL; kfree(hso_dev); } @@ -2620,12 +2623,12 @@ static void hso_free_tiomget(struct hso_serial *serial) { struct hso_tiocmget *tiocmget = serial->tiocmget; if (tiocmget) { - kfree(tiocmget); if (tiocmget->urb) { usb_free_urb(tiocmget->urb); tiocmget->urb = NULL; } serial->tiocmget = NULL; + kfree(tiocmget); } }