diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2012-08-13 02:50:43 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-08-14 16:51:40 -0700 |
commit | f4f8720febf0d785a054fc09bde5e3ad09728a58 (patch) | |
tree | f0f23afc9145ee25773ed9c8bffa0a706a46216a /net | |
parent | 6024935f5ff5f1646bce8404416318e5fd4a0c4a (diff) | |
download | op-kernel-dev-f4f8720febf0d785a054fc09bde5e3ad09728a58.zip op-kernel-dev-f4f8720febf0d785a054fc09bde5e3ad09728a58.tar.gz |
llc2: Call llc_station_exit() on llc2_init() failure path
Otherwise the station packet handler will remain registered even though
the module is unloaded.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/llc/af_llc.c | 5 | ||||
-rw-r--r-- | net/llc/llc_station.c | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/net/llc/af_llc.c b/net/llc/af_llc.c index f6fe4d4..8c2919c 100644 --- a/net/llc/af_llc.c +++ b/net/llc/af_llc.c @@ -1206,7 +1206,7 @@ static int __init llc2_init(void) rc = llc_proc_init(); if (rc != 0) { printk(llc_proc_err_msg); - goto out_unregister_llc_proto; + goto out_station; } rc = llc_sysctl_init(); if (rc) { @@ -1226,7 +1226,8 @@ out_sysctl: llc_sysctl_exit(); out_proc: llc_proc_exit(); -out_unregister_llc_proto: +out_station: + llc_station_exit(); proto_unregister(&llc_proto); goto out; } diff --git a/net/llc/llc_station.c b/net/llc/llc_station.c index 45ddbb9..bba5184 100644 --- a/net/llc/llc_station.c +++ b/net/llc/llc_station.c @@ -701,7 +701,7 @@ void __init llc_station_init(void) llc_main_station.state = LLC_STATION_STATE_UP; } -void __exit llc_station_exit(void) +void llc_station_exit(void) { llc_set_station_handler(NULL); } |