Skip to content

Commit

Permalink
wireless: wext: use struct iwreq earlier in the call chain
Browse files Browse the repository at this point in the history
To make it clear that we never use struct ifreq, cast from it
directly in the wext entrypoint and use struct iwreq from there
on. The next patch will remove the cast again and pass the
correct struct from the beginning.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Johannes Berg committed Jun 14, 2017
1 parent 8bfb367 commit 4f39a1f
Showing 1 changed file with 7 additions and 8 deletions.
15 changes: 7 additions & 8 deletions net/wireless/wext-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -914,21 +914,20 @@ int call_commit_handler(struct net_device *dev)
* Main IOCTl dispatcher.
* Check the type of IOCTL and call the appropriate wrapper...
*/
static int wireless_process_ioctl(struct net *net, struct ifreq *ifr,
static int wireless_process_ioctl(struct net *net, struct iwreq *iwr,
unsigned int cmd,
struct iw_request_info *info,
wext_ioctl_func standard,
wext_ioctl_func private)
{
struct iwreq *iwr = (struct iwreq *) ifr;
struct net_device *dev;
iw_handler handler;

/* Permissions are already checked in dev_ioctl() before calling us.
* The copy_to/from_user() of ifr is also dealt with in there */

/* Make sure the device exist */
if ((dev = __dev_get_by_name(net, ifr->ifr_name)) == NULL)
if ((dev = __dev_get_by_name(net, iwr->ifr_name)) == NULL)
return -ENODEV;

/* A bunch of special cases, then the generic case...
Expand Down Expand Up @@ -974,7 +973,7 @@ static int wext_permission_check(unsigned int cmd)
}

/* entry point from dev ioctl */
static int wext_ioctl_dispatch(struct net *net, struct ifreq *ifr,
static int wext_ioctl_dispatch(struct net *net, struct iwreq *iwr,
unsigned int cmd, struct iw_request_info *info,
wext_ioctl_func standard,
wext_ioctl_func private)
Expand All @@ -984,9 +983,9 @@ static int wext_ioctl_dispatch(struct net *net, struct ifreq *ifr,
if (ret)
return ret;

dev_load(net, ifr->ifr_name);
dev_load(net, iwr->ifr_name);
rtnl_lock();
ret = wireless_process_ioctl(net, ifr, cmd, info, standard, private);
ret = wireless_process_ioctl(net, iwr, cmd, info, standard, private);
rtnl_unlock();

return ret;
Expand Down Expand Up @@ -1042,7 +1041,7 @@ int wext_handle_ioctl(struct net *net, struct ifreq *ifr, unsigned int cmd,
struct iw_request_info info = { .cmd = cmd, .flags = 0 };
int ret;

ret = wext_ioctl_dispatch(net, ifr, cmd, &info,
ret = wext_ioctl_dispatch(net, (void *)ifr, cmd, &info,
ioctl_standard_call,
ioctl_private_call);
if (ret >= 0 &&
Expand Down Expand Up @@ -1104,7 +1103,7 @@ int compat_wext_handle_ioctl(struct net *net, unsigned int cmd,
info.cmd = cmd;
info.flags = IW_REQUEST_FLAG_COMPAT;

ret = wext_ioctl_dispatch(net, (struct ifreq *) &iwr, cmd, &info,
ret = wext_ioctl_dispatch(net, &iwr, cmd, &info,
compat_standard_call,
compat_private_call);

Expand Down

0 comments on commit 4f39a1f

Please sign in to comment.