diff options
| author | Dave Airlie <airlied@redhat.com> | 2016-07-02 15:56:01 +1000 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2016-07-02 15:56:01 +1000 |
| commit | 542d972221e024681b502033154f917c1455469f (patch) | |
| tree | 1c7c1be768f6e1b496a3edad6b105804a8d05c57 /net/wireless/wext-core.c | |
| parent | 583fa4e02775b26d76771d4e1ddc6f10ba005ef2 (diff) | |
| parent | 4c2e07c6a29e0129e975727b9f57eede813eea85 (diff) | |
| download | blackbird-op-linux-542d972221e024681b502033154f917c1455469f.tar.gz blackbird-op-linux-542d972221e024681b502033154f917c1455469f.zip | |
Back-merge tag 'v4.7-rc5' into drm-next
Linux 4.7-rc5
The fsl-dcu pull needs -rc3 so go to -rc5 for now.
Diffstat (limited to 'net/wireless/wext-core.c')
| -rw-r--r-- | net/wireless/wext-core.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c index 6250b1cfcde5..dbb2738e356a 100644 --- a/net/wireless/wext-core.c +++ b/net/wireless/wext-core.c @@ -958,8 +958,29 @@ static int wireless_process_ioctl(struct net *net, struct ifreq *ifr, return private(dev, iwr, cmd, info, handler); } /* Old driver API : call driver ioctl handler */ - if (dev->netdev_ops->ndo_do_ioctl) - return dev->netdev_ops->ndo_do_ioctl(dev, ifr, cmd); + if (dev->netdev_ops->ndo_do_ioctl) { +#ifdef CONFIG_COMPAT + if (info->flags & IW_REQUEST_FLAG_COMPAT) { + int ret = 0; + struct iwreq iwr_lcl; + struct compat_iw_point *iwp_compat = (void *) &iwr->u.data; + + memcpy(&iwr_lcl, iwr, sizeof(struct iwreq)); + iwr_lcl.u.data.pointer = compat_ptr(iwp_compat->pointer); + iwr_lcl.u.data.length = iwp_compat->length; + iwr_lcl.u.data.flags = iwp_compat->flags; + + ret = dev->netdev_ops->ndo_do_ioctl(dev, (void *) &iwr_lcl, cmd); + + iwp_compat->pointer = ptr_to_compat(iwr_lcl.u.data.pointer); + iwp_compat->length = iwr_lcl.u.data.length; + iwp_compat->flags = iwr_lcl.u.data.flags; + + return ret; + } else +#endif + return dev->netdev_ops->ndo_do_ioctl(dev, ifr, cmd); + } return -EOPNOTSUPP; } |

