diff options
-rw-r--r-- | .SRCINFO | 6 | ||||
-rw-r--r-- | PKGBUILD | 7 | ||||
-rw-r--r-- | legacy-wireless-ioctls-4.9+.patch | 79 |
3 files changed, 89 insertions, 3 deletions
@@ -1,8 +1,8 @@ # Generated by makepkg 5.1.3 -# Thu Aug 8 05:24:41 UTC 2019 +# Fri Sep 20 13:08:48 UTC 2019 pkgbase = linux-shmilee pkgver = 4.19.64 - pkgrel = 1 + pkgrel = 2 url = https://www.kernel.org/ arch = x86_64 license = GPL2 @@ -24,6 +24,7 @@ pkgbase = linux-shmilee source = https://raw.githubusercontent.com/dolohow/uksm/c4fc85e4e513f97c38806358c472cc45270d936f/uksm-4.19.patch source = uksm-patch-for-4.19.37+.patch source = linux-cjktty-4.19.patch::https://github.com/torvalds/linux/compare/v4.19...Gentoo-zh:4.19-utf8.patch + source = legacy-wireless-ioctls-4.9+.patch source = config source = 60-linux.hook source = 90-linux.hook @@ -40,6 +41,7 @@ pkgbase = linux-shmilee sha256sums = ec617b1718e6cadfad02c75aca9c4b0e6b6f944bc1a93b7e4d82c847c04b5653 sha256sums = fe32296cad05b08b34369ac49a226ae9591890fb106d0c6bc5b8f690f8d553b3 sha256sums = 72be48252f30bc644071bbce2607b773f789c6f19e281b89ab7e16a3d8161ed3 + sha256sums = edfb9939840b8710d6ee0385a8e968609eef348295465bb087744c18ed3496e0 sha256sums = 2eb7ec27f3dea53b0aac9ad665195df63e03598a89b6dd1c00af8d2738be88df sha256sums = ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21 sha256sums = 75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919 @@ -40,7 +40,7 @@ pkgbase=linux-shmilee pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs") _srcname=linux-${_LLL_VER} pkgver=${_LLL_VER}.${_LLL_SUBVER} -pkgrel=1 +pkgrel=2 arch=('x86_64') url="https://www.kernel.org/" license=('GPL2') @@ -58,6 +58,7 @@ source=( ${_UKSM_PATCH} 'uksm-patch-for-4.19.37+.patch' ${_CJKTTY_PATCH} + 'legacy-wireless-ioctls-4.9+.patch' 'config' # the main kernel config file '60-linux.hook' # pacman hook for depmod '90-linux.hook' # pacman hook for initramfs regeneration @@ -78,6 +79,7 @@ sha256sums=('0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1' 'ec617b1718e6cadfad02c75aca9c4b0e6b6f944bc1a93b7e4d82c847c04b5653' 'fe32296cad05b08b34369ac49a226ae9591890fb106d0c6bc5b8f690f8d553b3' '72be48252f30bc644071bbce2607b773f789c6f19e281b89ab7e16a3d8161ed3' + 'edfb9939840b8710d6ee0385a8e968609eef348295465bb087744c18ed3496e0' '2eb7ec27f3dea53b0aac9ad665195df63e03598a89b6dd1c00af8d2738be88df' 'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21' '75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919' @@ -113,6 +115,9 @@ prepare() { cp "../${_CJKTTY_PATCH_FILE}" "../${_CJKTTY_PATCH_FILE}.${_LLL_SUBVER}.patch" patch -Np1 -i "../${_CJKTTY_PATCH_FILE}.${_LLL_SUBVER}.patch" + msg "Patching source to reinstate the legacy wireless ioctls" + patch -Np2 -i ../legacy-wireless-ioctls-4.9+.patch + cp -Tf ../config .config if [ "${_kernelname}" != "" ]; then diff --git a/legacy-wireless-ioctls-4.9+.patch b/legacy-wireless-ioctls-4.9+.patch new file mode 100644 index 000000000000..715325283ff9 --- /dev/null +++ b/legacy-wireless-ioctls-4.9+.patch @@ -0,0 +1,79 @@ +fix: ioctl[RTL_IOCTL_HOSTAPD]: Operation not supported +from: https://github.com/lwfinger/rtl8188eu/issues/257 +author: Ablinne +url: https://pastebin.com/2nmLS4d6 + +--- src_orig/archlinux-linux/net/wireless/wext-core.c 2018-12-07 15:55:27.385876108 +0100 ++++ src/archlinux-linux/net/wireless/wext-core.c 2018-12-07 13:40:56.138049613 +0100 +@@ -912,12 +912,13 @@ + * Main IOCTl dispatcher. + * Check the type of IOCTL and call the appropriate wrapper... + */ +-static int wireless_process_ioctl(struct net *net, struct iwreq *iwr, ++static int wireless_process_ioctl(struct net *net, struct ifreq *ifr, + 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; + +@@ -925,7 +926,7 @@ + * 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, iwr->ifr_name)) == NULL) ++ if ((dev = __dev_get_by_name(net, ifr->ifr_name)) == NULL) + return -ENODEV; + + /* A bunch of special cases, then the generic case... +@@ -954,6 +955,9 @@ + else if (private) + 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); + return -EOPNOTSUPP; + } + +@@ -971,7 +975,7 @@ + } + + /* entry point from dev ioctl */ +-static int wext_ioctl_dispatch(struct net *net, struct iwreq *iwr, ++static int wext_ioctl_dispatch(struct net *net, struct ifreq *ifr, + unsigned int cmd, struct iw_request_info *info, + wext_ioctl_func standard, + wext_ioctl_func private) +@@ -981,9 +985,9 @@ + if (ret) + return ret; + +- dev_load(net, iwr->ifr_name); ++ dev_load(net, ifr->ifr_name); + rtnl_lock(); +- ret = wireless_process_ioctl(net, iwr, cmd, info, standard, private); ++ ret = wireless_process_ioctl(net, ifr, cmd, info, standard, private); + rtnl_unlock(); + + return ret; +@@ -1044,7 +1048,7 @@ + + iwr.ifr_name[sizeof(iwr.ifr_name) - 1] = 0; + +- ret = wext_ioctl_dispatch(net, &iwr, cmd, &info, ++ ret = wext_ioctl_dispatch(net, (struct ifreq *) &iwr, cmd, &info, + ioctl_standard_call, + ioctl_private_call); + if (ret >= 0 && +@@ -1106,7 +1110,7 @@ + info.cmd = cmd; + info.flags = IW_REQUEST_FLAG_COMPAT; + +- ret = wext_ioctl_dispatch(net, &iwr, cmd, &info, ++ ret = wext_ioctl_dispatch(net, (struct ifreq *) &iwr, cmd, &info, + compat_standard_call, + compat_private_call); |