From: Johannes Berg <johannes@sipsolutions.net>
To: David Miller <davem@davemloft.net>
Cc: netdev@vger.kernel.org, linux-wireless@vger.kernel.org, jt@hpl.hp.com
Subject: [PATCH 5/9] wext: cleanup early ioctl call path
Date: Tue, 24 Apr 2007 20:07:37 +0200 [thread overview]
Message-ID: <20070424180848.814070000@sipsolutions.net> (raw)
In-Reply-To: 20070424180732.371620000@sipsolutions.net
This patch makes the code in wireless_process_ioctl somewhat more readable.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
net/wireless/wext.c | 73 ++++++++++++++++++----------------------------------
1 file changed, 26 insertions(+), 47 deletions(-)
--- net-2.6.22.orig/net/wireless/wext.c 2007-04-24 19:05:57.648804911 +0200
+++ net-2.6.22/net/wireless/wext.c 2007-04-24 19:10:51.038804911 +0200
@@ -1035,53 +1035,31 @@ static int wireless_process_ioctl(struct
/* A bunch of special cases, then the generic case...
* Note that 'cmd' is already filtered in dev_ioctl() with
* (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) */
- switch (cmd) {
- case SIOCGIWSTATS:
- /* Get Wireless Stats */
- return ioctl_standard_call(dev,
- ifr,
- cmd,
+ if (cmd == SIOCGIWSTATS)
+ return ioctl_standard_call(dev, ifr, cmd,
&iw_handler_get_iwstats);
- case SIOCGIWPRIV:
- /* Check if we have some wireless handlers defined */
- if (dev->wireless_handlers != NULL) {
- /* We export to user space the definition of
- * the private handler ourselves */
- return ioctl_standard_call(dev,
- ifr,
- cmd,
- &iw_handler_get_private);
- }
- // ## Fall-through for old API ##
- default:
- /* Generic IOCTL */
- /* Basic check */
- if (!netif_device_present(dev))
- return -ENODEV;
- /* New driver API : try to find the handler */
- handler = get_handler(dev, cmd);
- if (handler != NULL) {
- /* Standard and private are not the same */
- if (cmd < SIOCIWFIRSTPRIV)
- return ioctl_standard_call(dev,
- ifr,
- cmd,
- handler);
- else
- return ioctl_private_call(dev,
- ifr,
- cmd,
- handler);
- }
- /* Old driver API : call driver ioctl handler */
- if (dev->do_ioctl) {
- return dev->do_ioctl(dev, ifr, cmd);
- }
- return -EOPNOTSUPP;
+ if (cmd == SIOCGIWPRIV && dev->wireless_handlers)
+ return ioctl_standard_call(dev, ifr, cmd,
+ &iw_handler_get_private);
+
+ /* Basic check */
+ if (!netif_device_present(dev))
+ return -ENODEV;
+
+ /* New driver API : try to find the handler */
+ handler = get_handler(dev, cmd);
+ if (handler) {
+ /* Standard and private are not the same */
+ if (cmd < SIOCIWFIRSTPRIV)
+ return ioctl_standard_call(dev, ifr, cmd, handler);
+ else
+ return ioctl_private_call(dev, ifr, cmd, handler);
}
- /* Not reached */
- return -EINVAL;
+ /* Old driver API : call driver ioctl handler */
+ if (dev->do_ioctl)
+ return dev->do_ioctl(dev, ifr, cmd);
+ return -EOPNOTSUPP;
}
/* entry point from dev ioctl */
@@ -1093,9 +1071,10 @@ int wext_handle_ioctl(struct ifreq *ifr,
/* If command is `set a parameter', or
* `get the encoding parameters', check if
* the user has the right to do it */
- if (IW_IS_SET(cmd) || cmd == SIOCGIWENCODE || cmd == SIOCGIWENCODEEXT)
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
+ if ((IW_IS_SET(cmd) || cmd == SIOCGIWENCODE || cmd == SIOCGIWENCODEEXT)
+ && !capable(CAP_NET_ADMIN))
+ return -EPERM;
+
dev_load(ifr->ifr_name);
rtnl_lock();
ret = wireless_process_ioctl(ifr, cmd);
--
WARNING: multiple messages have this Message-ID (diff)
From: Johannes Berg <johannes-cdvu00un1VgdHxzADdlk8Q@public.gmane.org>
To: David Miller <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
jt-sDzT885Ts8HQT0dZR+AlfA@public.gmane.org
Subject: [PATCH 5/9] wext: cleanup early ioctl call path
Date: Tue, 24 Apr 2007 20:07:37 +0200 [thread overview]
Message-ID: <20070424180848.814070000@sipsolutions.net> (raw)
In-Reply-To: 20070424180732.371620000@sipsolutions.net
[-- Attachment #1: wext-cleanup.patch --]
[-- Type: text/plain, Size: 3150 bytes --]
This patch makes the code in wireless_process_ioctl somewhat more readable.
Signed-off-by: Johannes Berg <johannes-cdvu00un1VgdHxzADdlk8Q@public.gmane.org>
---
net/wireless/wext.c | 73 ++++++++++++++++++----------------------------------
1 file changed, 26 insertions(+), 47 deletions(-)
--- net-2.6.22.orig/net/wireless/wext.c 2007-04-24 19:05:57.648804911 +0200
+++ net-2.6.22/net/wireless/wext.c 2007-04-24 19:10:51.038804911 +0200
@@ -1035,53 +1035,31 @@ static int wireless_process_ioctl(struct
/* A bunch of special cases, then the generic case...
* Note that 'cmd' is already filtered in dev_ioctl() with
* (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) */
- switch (cmd) {
- case SIOCGIWSTATS:
- /* Get Wireless Stats */
- return ioctl_standard_call(dev,
- ifr,
- cmd,
+ if (cmd == SIOCGIWSTATS)
+ return ioctl_standard_call(dev, ifr, cmd,
&iw_handler_get_iwstats);
- case SIOCGIWPRIV:
- /* Check if we have some wireless handlers defined */
- if (dev->wireless_handlers != NULL) {
- /* We export to user space the definition of
- * the private handler ourselves */
- return ioctl_standard_call(dev,
- ifr,
- cmd,
- &iw_handler_get_private);
- }
- // ## Fall-through for old API ##
- default:
- /* Generic IOCTL */
- /* Basic check */
- if (!netif_device_present(dev))
- return -ENODEV;
- /* New driver API : try to find the handler */
- handler = get_handler(dev, cmd);
- if (handler != NULL) {
- /* Standard and private are not the same */
- if (cmd < SIOCIWFIRSTPRIV)
- return ioctl_standard_call(dev,
- ifr,
- cmd,
- handler);
- else
- return ioctl_private_call(dev,
- ifr,
- cmd,
- handler);
- }
- /* Old driver API : call driver ioctl handler */
- if (dev->do_ioctl) {
- return dev->do_ioctl(dev, ifr, cmd);
- }
- return -EOPNOTSUPP;
+ if (cmd == SIOCGIWPRIV && dev->wireless_handlers)
+ return ioctl_standard_call(dev, ifr, cmd,
+ &iw_handler_get_private);
+
+ /* Basic check */
+ if (!netif_device_present(dev))
+ return -ENODEV;
+
+ /* New driver API : try to find the handler */
+ handler = get_handler(dev, cmd);
+ if (handler) {
+ /* Standard and private are not the same */
+ if (cmd < SIOCIWFIRSTPRIV)
+ return ioctl_standard_call(dev, ifr, cmd, handler);
+ else
+ return ioctl_private_call(dev, ifr, cmd, handler);
}
- /* Not reached */
- return -EINVAL;
+ /* Old driver API : call driver ioctl handler */
+ if (dev->do_ioctl)
+ return dev->do_ioctl(dev, ifr, cmd);
+ return -EOPNOTSUPP;
}
/* entry point from dev ioctl */
@@ -1093,9 +1071,10 @@ int wext_handle_ioctl(struct ifreq *ifr,
/* If command is `set a parameter', or
* `get the encoding parameters', check if
* the user has the right to do it */
- if (IW_IS_SET(cmd) || cmd == SIOCGIWENCODE || cmd == SIOCGIWENCODEEXT)
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
+ if ((IW_IS_SET(cmd) || cmd == SIOCGIWENCODE || cmd == SIOCGIWENCODEEXT)
+ && !capable(CAP_NET_ADMIN))
+ return -EPERM;
+
dev_load(ifr->ifr_name);
rtnl_lock();
ret = wireless_process_ioctl(ifr, cmd);
--
next prev parent reply other threads:[~2007-04-26 9:40 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-24 18:07 [PATCH 0/9] various wext cleanups Johannes Berg
2007-04-24 18:07 ` [PATCH 1/9] wext: move to net/wireless Johannes Berg
2007-04-24 18:07 ` [PATCH 2/9] wext: clean up how wext is called Johannes Berg
2007-04-24 18:07 ` Johannes Berg
2007-04-24 18:07 ` [PATCH 3/9] wext: remove dead debug code Johannes Berg
2007-04-24 18:07 ` Johannes Berg
2007-04-26 16:46 ` Jean Tourrilhes
2007-04-26 16:46 ` Jean Tourrilhes
2007-04-27 0:55 ` John W. Linville
2007-04-27 0:55 ` John W. Linville
2007-04-24 18:07 ` [PATCH 4/9] wext: remove options Johannes Berg
2007-04-24 18:07 ` Johannes Berg
2007-04-24 18:07 ` Johannes Berg [this message]
2007-04-24 18:07 ` [PATCH 5/9] wext: cleanup early ioctl call path Johannes Berg
2007-04-24 18:07 ` [PATCH 6/9] wext: move EXPORT_SYMBOL statements where they belong Johannes Berg
2007-04-24 18:07 ` Johannes Berg
2007-04-24 18:07 ` [PATCH 7/9] wext: reduce inline abuse Johannes Berg
2007-04-24 18:07 ` Johannes Berg
2007-04-26 16:50 ` Jean Tourrilhes
2007-04-26 17:03 ` Michael Buesch
2007-04-26 17:15 ` Jean Tourrilhes
2007-04-26 17:15 ` Jean Tourrilhes
2007-04-26 21:37 ` David Miller
2007-04-26 17:14 ` Johannes Berg
2007-04-26 17:14 ` Johannes Berg
2007-04-24 18:07 ` [PATCH 8/9] wext: misc code cleanups Johannes Berg
2007-04-24 18:07 ` Johannes Berg
2007-04-24 18:07 ` [PATCH 9/9] net_device: dont include wext bits if not required Johannes Berg
2007-04-24 18:07 ` Johannes Berg
2007-04-26 16:53 ` Jean Tourrilhes
2007-04-26 16:53 ` Jean Tourrilhes
2007-04-26 17:08 ` Johannes Berg
2007-04-27 0:50 ` John W. Linville
2007-04-27 0:50 ` John W. Linville
2007-04-26 10:15 ` [PATCH 0/9] various wext cleanups Johannes Berg
2007-04-26 10:15 ` Johannes Berg
2007-04-26 10:18 ` David Miller
2007-04-26 11:05 ` Johannes Berg
2007-04-26 11:05 ` Johannes Berg
2007-04-26 10:19 ` David Miller
2007-04-26 10:19 ` David Miller
2007-04-27 1:12 ` John W. Linville
2007-04-27 1:12 ` John W. Linville
2007-04-27 2:36 ` David Miller
2007-04-27 3:48 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070424180848.814070000@sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=davem@davemloft.net \
--cc=jt@hpl.hp.com \
--cc=linux-wireless@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.