diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-11-05 18:57:04 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-11-05 18:57:04 -0700 | 
| commit | 151f52f09c5728ecfdd0c289da1a4b30bb416f2c (patch) | |
| tree | 8e08b77ef0a0c7825673cf77b7601c659e9c104c /drivers/net/wireless/ipw2x00/libipw_module.c | |
| parent | d4285bd6be60268ee9925b41287fb8c2a3132bde (diff) | |
| download | olio-linux-3.10-151f52f09c5728ecfdd0c289da1a4b30bb416f2c.tar.xz olio-linux-3.10-151f52f09c5728ecfdd0c289da1a4b30bb416f2c.zip  | |
ipw2x00: remove the right /proc/net entry
Commit 27ae60f8f7aa ("ipw2x00: replace "ieee80211" with "libipw" where
appropriate") changed DRV_NAME to be "libipw", but didn't properly fix
up the places where it was used to specify the name for the /proc/net/
directory.
For backwards compatibility reasons, that directory name remained
"ieee80211", but due to the DRV_NAME change, the error case printouts
and the cleanup functions now used "libipw" instead.  Which made it all
fail badly.
For example, on module unload as reported by Randy:
  WARNING: at fs/proc/generic.c:816 remove_proc_entry+0x156/0x35e()
  name 'libipw'
because it's trying to unregister a /proc directory that obviously
doesn't even exist.
Clean it all up to use DRV_PROCNAME for the actual /proc directory name.
Reported-and-tested-by: Randy Dunlap <randy.dunlap@oracle.com>
Cc: Pavel Roskin <proski@gnu.org>
Cc: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/net/wireless/ipw2x00/libipw_module.c')
| -rw-r--r-- | drivers/net/wireless/ipw2x00/libipw_module.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/wireless/ipw2x00/libipw_module.c b/drivers/net/wireless/ipw2x00/libipw_module.c index 32dee2ce5d3..d5ef696298e 100644 --- a/drivers/net/wireless/ipw2x00/libipw_module.c +++ b/drivers/net/wireless/ipw2x00/libipw_module.c @@ -54,6 +54,7 @@  #define DRV_DESCRIPTION "802.11 data/management/control stack"  #define DRV_NAME        "libipw" +#define DRV_PROCNAME	"ieee80211"  #define DRV_VERSION	LIBIPW_VERSION  #define DRV_COPYRIGHT   "Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>" @@ -293,16 +294,16 @@ static int __init libipw_init(void)  	struct proc_dir_entry *e;  	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) { -		LIBIPW_ERROR("Unable to create " DRV_NAME +		LIBIPW_ERROR("Unable to create " DRV_PROCNAME  				" proc directory\n");  		return -EIO;  	}  	e = proc_create("debug_level", S_IRUGO | S_IWUSR, libipw_proc,  			&debug_level_proc_fops);  	if (!e) { -		remove_proc_entry(DRV_NAME, init_net.proc_net); +		remove_proc_entry(DRV_PROCNAME, init_net.proc_net);  		libipw_proc = NULL;  		return -EIO;  	} @@ -319,7 +320,7 @@ static void __exit libipw_exit(void)  #ifdef CONFIG_LIBIPW_DEBUG  	if (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;  	}  #endif				/* CONFIG_LIBIPW_DEBUG */  |