diff options
author | Ursula Braun <braunu@de.ibm.com> | 2007-05-02 15:18:44 +0200 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-05-08 01:16:24 -0400 |
commit | 0be4acec829ae37901aea7bd09aca1cea319833a (patch) | |
tree | 8a97dcf7c2ed9b720bbe1c3524bcd772d8d12860 /drivers/s390/net | |
parent | 1f8bdae9ef8e1ed2b208cdbaadb91061ede30212 (diff) | |
download | op-kernel-dev-0be4acec829ae37901aea7bd09aca1cea319833a.zip op-kernel-dev-0be4acec829ae37901aea7bd09aca1cea319833a.tar.gz |
s390: fix Oops when unloading module netiucv
don't remove an entry from iucv_connection_list in netiucv_exit().
netiucv_free_netdevice is called anyway, which takes care of entry
removal.
Signed-off-by: Ursula Braun <braunu@de.ibm.com>
Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/s390/net')
-rw-r--r-- | drivers/s390/net/netiucv.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/s390/net/netiucv.c b/drivers/s390/net/netiucv.c index e10e85e..c358764 100644 --- a/drivers/s390/net/netiucv.c +++ b/drivers/s390/net/netiucv.c @@ -1862,12 +1862,14 @@ static void netiucv_remove_connection(struct iucv_connection *conn) write_lock_bh(&iucv_connection_rwlock); list_del_init(&conn->list); write_unlock_bh(&iucv_connection_rwlock); + fsm_deltimer(&conn->timer); + netiucv_purge_skb_queue(&conn->collect_queue); if (conn->path) { iucv_path_sever(conn->path, iucvMagic); kfree(conn->path); conn->path = NULL; } - fsm_deltimer(&conn->timer); + netiucv_purge_skb_queue(&conn->commit_queue); kfree_fsm(conn->fsm); kfree_skb(conn->rx_buff); kfree_skb(conn->tx_buff); @@ -2115,7 +2117,6 @@ static void __exit netiucv_exit(void) while (!list_empty(&iucv_connection_list)) { cp = list_entry(iucv_connection_list.next, struct iucv_connection, list); - list_del(&cp->list); ndev = cp->netdev; priv = netdev_priv(ndev); dev = priv->dev; |