Advertisement
Guest User

Patch to reinstate legacy wireless ioctls on linux 4.19

a guest
Dec 7th, 2018
885
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.42 KB | None | 0 0
  1. --- src_orig/archlinux-linux/net/wireless/wext-core.c   2018-12-07 15:55:27.385876108 +0100
  2. +++ src/archlinux-linux/net/wireless/wext-core.c    2018-12-07 13:40:56.138049613 +0100
  3. @@ -912,12 +912,13 @@
  4.   * Main IOCTl dispatcher.
  5.   * Check the type of IOCTL and call the appropriate wrapper...
  6.   */
  7. -static int wireless_process_ioctl(struct net *net, struct iwreq *iwr,
  8. +static int wireless_process_ioctl(struct net *net, struct ifreq *ifr,
  9.                   unsigned int cmd,
  10.                   struct iw_request_info *info,
  11.                   wext_ioctl_func standard,
  12.                   wext_ioctl_func private)
  13.  {
  14. +   struct iwreq *iwr = (struct iwreq *) ifr;
  15.     struct net_device *dev;
  16.     iw_handler  handler;
  17.  
  18. @@ -925,7 +926,7 @@
  19.      * The copy_to/from_user() of ifr is also dealt with in there */
  20.  
  21.     /* Make sure the device exist */
  22. -   if ((dev = __dev_get_by_name(net, iwr->ifr_name)) == NULL)
  23. +   if ((dev = __dev_get_by_name(net, ifr->ifr_name)) == NULL)
  24.         return -ENODEV;
  25.  
  26.     /* A bunch of special cases, then the generic case...
  27. @@ -954,6 +955,9 @@
  28.         else if (private)
  29.             return private(dev, iwr, cmd, info, handler);
  30.     }
  31. +   /* Old driver API : call driver ioctl handler */
  32. +   if (dev->netdev_ops->ndo_do_ioctl)
  33. +       return dev->netdev_ops->ndo_do_ioctl(dev, ifr, cmd);
  34.     return -EOPNOTSUPP;
  35.  }
  36.  
  37. @@ -971,7 +975,7 @@
  38.  }
  39.  
  40.  /* entry point from dev ioctl */
  41. -static int wext_ioctl_dispatch(struct net *net, struct iwreq *iwr,
  42. +static int wext_ioctl_dispatch(struct net *net, struct ifreq *ifr,
  43.                    unsigned int cmd, struct iw_request_info *info,
  44.                    wext_ioctl_func standard,
  45.                    wext_ioctl_func private)
  46. @@ -981,9 +985,9 @@
  47.     if (ret)
  48.         return ret;
  49.  
  50. -   dev_load(net, iwr->ifr_name);
  51. +   dev_load(net, ifr->ifr_name);
  52.     rtnl_lock();
  53. -   ret = wireless_process_ioctl(net, iwr, cmd, info, standard, private);
  54. +   ret = wireless_process_ioctl(net, ifr, cmd, info, standard, private);
  55.     rtnl_unlock();
  56.  
  57.     return ret;
  58. @@ -1044,7 +1048,7 @@
  59.  
  60.     iwr.ifr_name[sizeof(iwr.ifr_name) - 1] = 0;
  61.  
  62. -   ret = wext_ioctl_dispatch(net, &iwr, cmd, &info,
  63. +   ret = wext_ioctl_dispatch(net, (struct ifreq *) &iwr, cmd, &info,
  64.                   ioctl_standard_call,
  65.                   ioctl_private_call);
  66.     if (ret >= 0 &&
  67. @@ -1106,7 +1110,7 @@
  68.     info.cmd = cmd;
  69.     info.flags = IW_REQUEST_FLAG_COMPAT;
  70.  
  71. -   ret = wext_ioctl_dispatch(net, &iwr, cmd, &info,
  72. +   ret = wext_ioctl_dispatch(net, (struct ifreq *) &iwr, cmd, &info,
  73.                   compat_standard_call,
  74.                   compat_private_call);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement