Commit 269e2d77 authored by Linus Torvalds's avatar Linus Torvalds Committed by John W. Linville

libipw: fix proc entry removal

This bug seems to be due to commit 27ae60f8 ("ipw2x00: replace
"ieee80211" with "libipw" where appropriate"), where Pavel did this:

-       libipw_proc = proc_mkdir(DRV_NAME, init_net.proc_net);
+       libipw_proc = proc_mkdir("ieee80211", init_net.proc_net);

but then the cleanup was kept as

        remove_proc_entry(DRV_NAME, init_net.proc_net);

in both places (both in the failure case and in the unload case). The
error string is also total crap, and says

     "Unable to create " DRV_NAME " proc directory\n");

Even though it doesn't actually create a proc directory named DRV_NAME at all.

So that patch looks like total and utter crap to me. The commit message says

  "Keep /proc/net/ieee80211 under the original name to avoid breaking user
    interface."

but the thing is, it really didn't fix anything but that one create
thing. It needs to fix all the other cases too.
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Tested-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 9f2a0fac
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
#define DRV_DESCRIPTION "802.11 data/management/control stack" #define DRV_DESCRIPTION "802.11 data/management/control stack"
#define DRV_NAME "libipw" #define DRV_NAME "libipw"
#define DRV_PROCNAME "ieee80211"
#define DRV_VERSION LIBIPW_VERSION #define DRV_VERSION LIBIPW_VERSION
#define DRV_COPYRIGHT "Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>" #define DRV_COPYRIGHT "Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>"
...@@ -293,16 +294,16 @@ static int __init libipw_init(void) ...@@ -293,16 +294,16 @@ static int __init libipw_init(void)
struct proc_dir_entry *e; struct proc_dir_entry *e;
libipw_debug_level = debug; libipw_debug_level = debug;
libipw_proc = proc_mkdir("ieee80211", init_net.proc_net); libipw_proc = proc_mkdir(DRV_PROCNAME, init_net.proc_net);
if (libipw_proc == NULL) { if (libipw_proc == NULL) {
LIBIPW_ERROR("Unable to create " DRV_NAME LIBIPW_ERROR("Unable to create " DRV_PROCNAME
" proc directory\n"); " proc directory\n");
return -EIO; return -EIO;
} }
e = proc_create("debug_level", S_IRUGO | S_IWUSR, libipw_proc, e = proc_create("debug_level", S_IRUGO | S_IWUSR, libipw_proc,
&debug_level_proc_fops); &debug_level_proc_fops);
if (!e) { if (!e) {
remove_proc_entry(DRV_NAME, init_net.proc_net); remove_proc_entry(DRV_PROCNAME, init_net.proc_net);
libipw_proc = NULL; libipw_proc = NULL;
return -EIO; return -EIO;
} }
...@@ -319,7 +320,7 @@ static void __exit libipw_exit(void) ...@@ -319,7 +320,7 @@ static void __exit libipw_exit(void)
#ifdef CONFIG_LIBIPW_DEBUG #ifdef CONFIG_LIBIPW_DEBUG
if (libipw_proc) { if (libipw_proc) {
remove_proc_entry("debug_level", libipw_proc); remove_proc_entry("debug_level", libipw_proc);
remove_proc_entry(DRV_NAME, init_net.proc_net); remove_proc_entry(DRV_PROCNAME, init_net.proc_net);
libipw_proc = NULL; libipw_proc = NULL;
} }
#endif /* CONFIG_LIBIPW_DEBUG */ #endif /* CONFIG_LIBIPW_DEBUG */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment