mirror of
https://github.com/pentoo/pentoo-overlay
synced 2026-05-08 20:43:38 +02:00
compat-wireless: 3.5 fixed on hardened by Wuodan, dude is a hero
This commit is contained in:
parent
b22b6d4fd2
commit
0a90e02670
3 changed files with 414 additions and 9 deletions
|
|
@ -15,6 +15,7 @@ AUX blinky.patch 357 SHA256 1c2f0e18ecbcf2c07ba732671e77408326d2566d260f0252002c
|
|||
AUX channel-negative-one-maxim.patch 1021 SHA256 19f7fc0753636c32026e444e23bd101bd21cfeb59661284678bf157dc35212f2 SHA512 365edc44db47b69c4e1babe235ec7e5bc76853665ad45a1fe9e86ea3186aa5e1eb5a2769fe7f75b1f0bd247d67d73f84062f842e9f68e81c119ed4511ec16bcf WHIRLPOOL 09cf698e26f9f8438ff9ce99d5f50ff2aad99ac02888612b9ad56901d0f69f1b771a56cee15affcd9e61b8bfb501cafa0a650fc6228d642f2b34d1b90773d473
|
||||
AUX compat-chaos.patch 6187 SHA256 5e8c11b46bc8acf10a2ce8b934fec32662b57c003c99e5e0ca4717a8c6b19474 SHA512 40f8c15935d3f942dc08a223405e4cb46d0e48ad94d568da582f4b45c1fee41142b3b98d9079d0dfc621fbdfc0d9a8887247fd0e477e04bef571415b7f961409 WHIRLPOOL b749dd4f7f9802335ed610f0d51e0de35a9d88209a67530527428025c494f64759b052549e57afe10928bac5e2747f60ab47f0c8e1f5a5f442fa9db099ccad21
|
||||
AUX compat-sched.patch 286 SHA256 675e1f877f076f7941dc89248a99b01508cf8a05255bd5a2e2a46c71b148f73e SHA512 20530c0ed571da7cffd33cdf7bab7b4d77cd8c43e2fce9541efca4413a557de8ec676909648fd16c2f142fde3067c37bbc09b14331d8af3dd816d89723f475dd WHIRLPOOL fce079084ea5314880be3f82aa2cbd869309d79b391d6b54d8041abff02514dbd44ff74f6ac000325628b7005903e9cc3535f97686311f5019c312e8a7eb749f
|
||||
AUX compat-wireless-3.5-grsec.patch 14300 SHA256 ad7cdbf8fca6d3dbe9c125b2b9be1f88cbe3e99bc7dee83d6b2797873b7f9922 SHA512 0cc019cbcfc74135545fdf706b5db222c50c95a3b3e9c16b5e2db219365a328ba1f25a50512734fc0b4f8866db7c99ccc721d04f35df0e7ca376bb08369358c0 WHIRLPOOL 7c4595fe92afd4635e355773bb20ace6810a51880f3495a979c6e360e64cc3850c46acdf28cde7831f725c77ce15b7071b1be0382577fd43dbea5388de4b37ee
|
||||
AUX driver-debug.patch 2801 SHA256 06a37359ac7129a6f7db2f4e7f72d67c1f7014fd0adf439a89d119415a4316c2 SHA512 38947057ad7dd553f608216eb6858368a97d25a9711463ffb4c1ef477898300d401a8e7e881189ae85063f3e03ef1f432778db1a720b3f9fa04f14a14d2c1d8b WHIRLPOOL fb3ebc2e83a817454b0ec8e3a41ffba1c53fd32813f3cbd3aeda3452f9fc74267ffd6bec19a4a29160b86f4fed993bd0c665325b4e82edc091d3723dba05d510
|
||||
AUX failed_ath5k-frequency-chaos-2.6.28.patch 5787 SHA256 8e9e0888e890a2970274a7ba9d40d75e01ebaedb0e16700d8994b9ecfe921185 SHA512 160bea5dbc42b420690a6373666bd0e59eafb98937127d7ea0b02f380b6a49a78d732a773e63461a2ae6b1e882ba37201a6e00cc161b78ec9042aa8d377004cd WHIRLPOOL 2ee067b660c9c70faf28e3b6a4c94d93a4df7735683e97566e6726bbf22a9af9cdafc8e88b9dc7b73cddfda2cc392796195a4679d67c380807242a34c3270982
|
||||
AUX failed_ieee80211_inject-2.6.22.patch 772 SHA256 7403780cd3df720439f54b6cad88a803aacc0260af8fbbab0cfa25e523ae2ae9 SHA512 ed3279754e2bb97d79c61373903714d53790fa10201784c39931829ba9cc634bb7c9e3e4a17de7fe671545ba1c367ac5ae59d849c66325ad90f9b5f71134d26f WHIRLPOOL f61cc0e7e5a4505504aa5028a25871c0f8fafc3b30c9de93ff1d74cb0c42ca6758f005329b886183157c858ca09a6c48534c7e1c2486cd4fb9eb2ea78204e30a
|
||||
|
|
@ -81,6 +82,6 @@ EBUILD compat-wireless-3.3.ebuild 6274 SHA256 71cecd0c190a6e7e769e09ad3d567837ab
|
|||
EBUILD compat-wireless-3.4_rc1-r1.ebuild 6104 SHA256 62aa12b407887d185ecf615156055c95996683226afb335becfb8c0f4b2a65f7 SHA512 8a96e2469664c164ef5a3c3a8a3693f4b7f9b522b71e99902a548ea320b7dd5598a0c444f75356978e8468138bede484673b4c6adfd4a99b76d5c7a478ec1784 WHIRLPOOL 69312db58e2afe774187dce18b2dd30f05e962ed56da93a54f362be9859a411d4ec804c9fd4494a059d8067286e4f6aa10c6ed0e434581ac68bb84b37b8117dc
|
||||
EBUILD compat-wireless-3.4_rc1.ebuild 6136 SHA256 c251d84ecafe0562548cc922bf412a5d3b311c1aebf8449b6d73a11d4cdfd649 SHA512 9f367dd14a3fad1bbed9af569b34dd88cc64e28de8173ab863e3f7999f91fd1be49444fe8213ff4ec7e7d379c30648452ddfb8b81fca60aa022749c442eeb1c7 WHIRLPOOL 004d8366fcd5a9fbfa68b4daf1a869f60d9c25e608deddd9d264b505294c50996f05eee51d53f91dc9ca798c37f6e17383dd9a41fe24ea65c1b3227da13a6db6
|
||||
EBUILD compat-wireless-3.4_rc3.ebuild 5871 SHA256 609960ce2388900472d079cba2947ed6fa73275dd9b0adbb1cc94e5a8b500ef7 SHA512 22b48e5e84cf7145a111a92737b1c6bcd50331a59c8453ee2687ae45c6ef68cc56ec6d5ab8827a272ed56e3353f6387b51420b930ef272aa7cf3462300447ac9 WHIRLPOOL 76f5087b23a6ee70a92529b5fa91838c67115f2e9f737c6f64481f1f008860965b6426a6586fd9a7c2629e11f28ac266413d4260b24211759f703662484d5961
|
||||
EBUILD compat-wireless-3.5.ebuild 6352 SHA256 6a5acbc3b84ec494b28f0a1dbfd653ea860331887310578c294164bdbbe79b39 SHA512 4a3fdc27c197f4cafa3c68ea819d2562a6b750acbe2056a2e2b9d0f753a57bd05339ed812c148fe81810586026c99f58adb3aa1bb19487af50b1b71b592b1cd6 WHIRLPOOL d5a2f860eab1083e549e571d02fe7e280669e94e6c653398888744a9a8ea263032b75f9e24c9791eb54b3ef19281a98a05a140b12fcee37411c94a653f7a794e
|
||||
EBUILD compat-wireless-3.5.ebuild 6670 SHA256 c60e3bd89f25fce5ea2c20ac49d59d919dd39476a505ca849bad852ff0437a2d SHA512 ee15b5b30d3013eda94e23f73c33e17d9673eb6f28a53539f0ef11244b38ee3d6478a4609ab489414f2a5c9e437c743a6a841bb3387a4d0347e6dadcc98b5d2f WHIRLPOOL 51f9ca71cca05e2dd72b7f09ee58b715395f1f586006a34981662064fe6971bab93c39cedd53fe5b751a8cd67aae4170dfb03635844c3b1c08ba6a7bb61540c5
|
||||
EBUILD compat-wireless-3.5_rc3.ebuild 5812 SHA256 b2987b81c8a24e15373bd95143e2bf54d693d6c49a76d35b0eb7994f4c43f509 SHA512 4613134287641f1b4a3338b6956eaa279a1ca71152093f49d887e47044be14b03a91b5cb3df6fd7b6a9081cf65553ce758a1003bbbd0b821f47ac83a6946868a WHIRLPOOL ab32986b6153a70f5212cf157492357879166661933186897e4105234252cfa867440ede23494347d827998c13bd11a05956df2c9e2b5509067e64a3d7abcef0
|
||||
MISC metadata.xml 228 SHA256 8715828d1bff71d5d96b991ba600bae9376c1c80c96f0f102260fc335ca22487 SHA512 006b031017fe79d0da68ed1c2684d2b87f75976111d8abdb18d126ffe142df8ded67805f14fe4adfe17e93287080126b7f4af64dac0ebaa1d9fe4c97e5f9573a WHIRLPOOL e711ede3bf7bcf0dc9d3ecd2706e4120270d4942718ee901f8d42c1c86055c8b153bdb24d6682a56d14f5b14d4ff220c115f14714b3f039bdc3deeece3d1fd02
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ SRC_URI="http://www.orbit-lab.org/kernel/${PN}-3.0-stable/${MY_PV}/${MY_P}-${CRA
|
|||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~arm ~x86"
|
||||
IUSE="atheros_obey_crda bluetooth b43 b44 debugfs debug-driver full-debug injection livecd loadmodules noleds"
|
||||
IUSE="atheros_obey_crda bluetooth b43 b44 debugfs debug-driver full-debug injection livecd loadmodules noleds pax_kernel"
|
||||
|
||||
DEPEND="!net-wireless/compat-wireless-builder"
|
||||
RDEPEND="${DEPEND}
|
||||
|
|
@ -49,6 +49,12 @@ pkg_setup() {
|
|||
}
|
||||
|
||||
src_prepare() {
|
||||
use pax_kernel && epatch "${FILESDIR}"/${P}-grsec.patch
|
||||
|
||||
#prep for inclusion in compat-wireless.git
|
||||
find "${S}" -name Makefile | xargs sed -i -e 's/export CONFIG_/export CONFIG_COMPAT_/' -e 's/COMPAT_COMPAT_/COMPAT_/' -e 's/CONFIG_COMPAT_CHECK/CONFIG_CHECK/'
|
||||
sed -i -e 's/export CONFIG_/export CONFIG_COMPAT_/' -e 's/COMPAT_COMPAT_/COMPAT_/' "${S}"/config.mk
|
||||
|
||||
# CONFIG_CFG80211_REG_DEBUG=y
|
||||
sed -i '/CFG80211_REG_DEBUG/s/^# *//' "${S}"/config.mk
|
||||
|
||||
|
|
@ -83,25 +89,25 @@ src_prepare() {
|
|||
fi
|
||||
# Disable B44 ethernet driver
|
||||
if ! use b44; then
|
||||
sed -i '/CONFIG_B44=/s/ */#/' "${S}"/config.mk || die "unable to disable B44 driver"
|
||||
sed -i '/CONFIG_B44_PCI=/s/ */#/' "${S}"/config.mk || die "unable to disable B44 driver"
|
||||
sed -i '/B44=/s/ */#/' "${S}"/config.mk || die "unable to disable B44 driver"
|
||||
sed -i '/B44_PCI=/s/ */#/' "${S}"/config.mk || die "unable to disable B44 driver"
|
||||
fi
|
||||
|
||||
# Disable B43 driver
|
||||
if ! use b43; then
|
||||
sed -i '/CONFIG_B43=/s/ */#/' "${S}"/config.mk || die "unable to disable B43 driver"
|
||||
sed -i '/CONFIG_B43_PCI_AUTOSELECT=/s/ */#/' "${S}"/config.mk || die "unable to disable B43 driver"
|
||||
sed -i '/B43=/s/ */#/' "${S}"/config.mk || die "unable to disable B43 driver"
|
||||
sed -i '/B43_PCI_AUTOSELECT=/s/ */#/' "${S}"/config.mk || die "unable to disable B43 driver"
|
||||
#CONFIG_B43LEGACY=
|
||||
fi
|
||||
|
||||
# fixme: there are more bluethooth settings in the config.mk
|
||||
if ! use bluetooth; then
|
||||
sed -i '/CONFIG_COMPAT_BLUETOOTH=/s/ */#/' "${S}"/config.mk || die "unable to disable bluetooth driver"
|
||||
sed -i '/CONFIG_COMPAT_BLUETOOTH_MODULES=/s/ */#/' "${S}"/config.mk || die "unable to bluetooth B44 driver"
|
||||
sed -i '/COMPAT_BLUETOOTH=/s/ */#/' "${S}"/config.mk || die "unable to disable bluetooth driver"
|
||||
sed -i '/COMPAT_BLUETOOTH_MODULES=/s/ */#/' "${S}"/config.mk || die "unable to bluetooth B44 driver"
|
||||
fi
|
||||
|
||||
#enable alx atheros ethernet driver
|
||||
sed -i 's/CONFIG_ALX=n/CONFIG_ALX=m/' "${S}"/config.mk || die "Failed to endable Atheros ALX driver"
|
||||
sed -i 's/ALX=n/ALX=m/' "${S}"/config.mk || die "Failed to enable Atheros ALX driver"
|
||||
|
||||
#avoid annoying ACCESS DENIED sandbox errors
|
||||
sed -i "s/\${MAKE} -C \${KLIB_BUILD} kernelversion/echo ${KV_FULL}/g" compat/scripts/gen-compat-config.sh || die "sed failed"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,398 @@
|
|||
diff --git a/drivers/net/wireless/ath/ath.h b/drivers/net/wireless/ath/ath.h
|
||||
index c54b7d37..af1f359 100644
|
||||
--- a/drivers/net/wireless/ath/ath.h
|
||||
+++ b/drivers/net/wireless/ath/ath.h
|
||||
@@ -119,6 +119,7 @@ struct ath_ops {
|
||||
void (*write_flush) (void *);
|
||||
u32 (*rmw)(void *, u32 reg_offset, u32 set, u32 clr);
|
||||
};
|
||||
+typedef struct ath_ops __no_const ath_ops_no_const;
|
||||
|
||||
struct ath_common;
|
||||
struct ath_bus_ops;
|
||||
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_mac.c b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
|
||||
index aa2abaf..5f5152d 100644
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
|
||||
@@ -183,8 +183,8 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
|
||||
ads->ds_txstatus6 = ads->ds_txstatus7 = 0;
|
||||
ads->ds_txstatus8 = ads->ds_txstatus9 = 0;
|
||||
|
||||
- ACCESS_ONCE(ads->ds_link) = i->link;
|
||||
- ACCESS_ONCE(ads->ds_data) = i->buf_addr[0];
|
||||
+ ACCESS_ONCE_RW(ads->ds_link) = i->link;
|
||||
+ ACCESS_ONCE_RW(ads->ds_data) = i->buf_addr[0];
|
||||
|
||||
ctl1 = i->buf_len[0] | (i->is_last ? 0 : AR_TxMore);
|
||||
ctl6 = SM(i->keytype, AR_EncrType);
|
||||
@@ -198,26 +198,26 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
|
||||
|
||||
if ((i->is_first || i->is_last) &&
|
||||
i->aggr != AGGR_BUF_MIDDLE && i->aggr != AGGR_BUF_LAST) {
|
||||
- ACCESS_ONCE(ads->ds_ctl2) = set11nTries(i->rates, 0)
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl2) = set11nTries(i->rates, 0)
|
||||
| set11nTries(i->rates, 1)
|
||||
| set11nTries(i->rates, 2)
|
||||
| set11nTries(i->rates, 3)
|
||||
| (i->dur_update ? AR_DurUpdateEna : 0)
|
||||
| SM(0, AR_BurstDur);
|
||||
|
||||
- ACCESS_ONCE(ads->ds_ctl3) = set11nRate(i->rates, 0)
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl3) = set11nRate(i->rates, 0)
|
||||
| set11nRate(i->rates, 1)
|
||||
| set11nRate(i->rates, 2)
|
||||
| set11nRate(i->rates, 3);
|
||||
} else {
|
||||
- ACCESS_ONCE(ads->ds_ctl2) = 0;
|
||||
- ACCESS_ONCE(ads->ds_ctl3) = 0;
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl2) = 0;
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl3) = 0;
|
||||
}
|
||||
|
||||
if (!i->is_first) {
|
||||
- ACCESS_ONCE(ads->ds_ctl0) = 0;
|
||||
- ACCESS_ONCE(ads->ds_ctl1) = ctl1;
|
||||
- ACCESS_ONCE(ads->ds_ctl6) = ctl6;
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl0) = 0;
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl1) = ctl1;
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl6) = ctl6;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
|
||||
break;
|
||||
}
|
||||
|
||||
- ACCESS_ONCE(ads->ds_ctl0) = (i->pkt_len & AR_FrameLen)
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl0) = (i->pkt_len & AR_FrameLen)
|
||||
| (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0)
|
||||
| SM(i->txpower, AR_XmitPower)
|
||||
| (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0)
|
||||
@@ -252,19 +252,19 @@ ar9002_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
|
||||
| (i->flags & ATH9K_TXDESC_RTSENA ? AR_RTSEnable :
|
||||
(i->flags & ATH9K_TXDESC_CTSENA ? AR_CTSEnable : 0));
|
||||
|
||||
- ACCESS_ONCE(ads->ds_ctl1) = ctl1;
|
||||
- ACCESS_ONCE(ads->ds_ctl6) = ctl6;
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl1) = ctl1;
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl6) = ctl6;
|
||||
|
||||
if (i->aggr == AGGR_BUF_MIDDLE || i->aggr == AGGR_BUF_LAST)
|
||||
return;
|
||||
|
||||
- ACCESS_ONCE(ads->ds_ctl4) = set11nPktDurRTSCTS(i->rates, 0)
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl4) = set11nPktDurRTSCTS(i->rates, 0)
|
||||
| set11nPktDurRTSCTS(i->rates, 1);
|
||||
|
||||
- ACCESS_ONCE(ads->ds_ctl5) = set11nPktDurRTSCTS(i->rates, 2)
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl5) = set11nPktDurRTSCTS(i->rates, 2)
|
||||
| set11nPktDurRTSCTS(i->rates, 3);
|
||||
|
||||
- ACCESS_ONCE(ads->ds_ctl7) = set11nRateFlags(i->rates, 0)
|
||||
+ ACCESS_ONCE_RW(ads->ds_ctl7) = set11nRateFlags(i->rates, 0)
|
||||
| set11nRateFlags(i->rates, 1)
|
||||
| set11nRateFlags(i->rates, 2)
|
||||
| set11nRateFlags(i->rates, 3)
|
||||
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
|
||||
index a66a13b..0ef399e 100644
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
|
||||
@@ -39,47 +39,47 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
|
||||
(i->qcu << AR_TxQcuNum_S) | desc_len;
|
||||
|
||||
checksum += val;
|
||||
- ACCESS_ONCE(ads->info) = val;
|
||||
+ ACCESS_ONCE_RW(ads->info) = val;
|
||||
|
||||
checksum += i->link;
|
||||
- ACCESS_ONCE(ads->link) = i->link;
|
||||
+ ACCESS_ONCE_RW(ads->link) = i->link;
|
||||
|
||||
checksum += i->buf_addr[0];
|
||||
- ACCESS_ONCE(ads->data0) = i->buf_addr[0];
|
||||
+ ACCESS_ONCE_RW(ads->data0) = i->buf_addr[0];
|
||||
checksum += i->buf_addr[1];
|
||||
- ACCESS_ONCE(ads->data1) = i->buf_addr[1];
|
||||
+ ACCESS_ONCE_RW(ads->data1) = i->buf_addr[1];
|
||||
checksum += i->buf_addr[2];
|
||||
- ACCESS_ONCE(ads->data2) = i->buf_addr[2];
|
||||
+ ACCESS_ONCE_RW(ads->data2) = i->buf_addr[2];
|
||||
checksum += i->buf_addr[3];
|
||||
- ACCESS_ONCE(ads->data3) = i->buf_addr[3];
|
||||
+ ACCESS_ONCE_RW(ads->data3) = i->buf_addr[3];
|
||||
|
||||
checksum += (val = (i->buf_len[0] << AR_BufLen_S) & AR_BufLen);
|
||||
- ACCESS_ONCE(ads->ctl3) = val;
|
||||
+ ACCESS_ONCE_RW(ads->ctl3) = val;
|
||||
checksum += (val = (i->buf_len[1] << AR_BufLen_S) & AR_BufLen);
|
||||
- ACCESS_ONCE(ads->ctl5) = val;
|
||||
+ ACCESS_ONCE_RW(ads->ctl5) = val;
|
||||
checksum += (val = (i->buf_len[2] << AR_BufLen_S) & AR_BufLen);
|
||||
- ACCESS_ONCE(ads->ctl7) = val;
|
||||
+ ACCESS_ONCE_RW(ads->ctl7) = val;
|
||||
checksum += (val = (i->buf_len[3] << AR_BufLen_S) & AR_BufLen);
|
||||
- ACCESS_ONCE(ads->ctl9) = val;
|
||||
+ ACCESS_ONCE_RW(ads->ctl9) = val;
|
||||
|
||||
checksum = (u16) (((checksum & 0xffff) + (checksum >> 16)) & 0xffff);
|
||||
- ACCESS_ONCE(ads->ctl10) = checksum;
|
||||
+ ACCESS_ONCE_RW(ads->ctl10) = checksum;
|
||||
|
||||
if (i->is_first || i->is_last) {
|
||||
- ACCESS_ONCE(ads->ctl13) = set11nTries(i->rates, 0)
|
||||
+ ACCESS_ONCE_RW(ads->ctl13) = set11nTries(i->rates, 0)
|
||||
| set11nTries(i->rates, 1)
|
||||
| set11nTries(i->rates, 2)
|
||||
| set11nTries(i->rates, 3)
|
||||
| (i->dur_update ? AR_DurUpdateEna : 0)
|
||||
| SM(0, AR_BurstDur);
|
||||
|
||||
- ACCESS_ONCE(ads->ctl14) = set11nRate(i->rates, 0)
|
||||
+ ACCESS_ONCE_RW(ads->ctl14) = set11nRate(i->rates, 0)
|
||||
| set11nRate(i->rates, 1)
|
||||
| set11nRate(i->rates, 2)
|
||||
| set11nRate(i->rates, 3);
|
||||
} else {
|
||||
- ACCESS_ONCE(ads->ctl13) = 0;
|
||||
- ACCESS_ONCE(ads->ctl14) = 0;
|
||||
+ ACCESS_ONCE_RW(ads->ctl13) = 0;
|
||||
+ ACCESS_ONCE_RW(ads->ctl14) = 0;
|
||||
}
|
||||
|
||||
ads->ctl20 = 0;
|
||||
@@ -89,17 +89,17 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
|
||||
|
||||
ctl17 = SM(i->keytype, AR_EncrType);
|
||||
if (!i->is_first) {
|
||||
- ACCESS_ONCE(ads->ctl11) = 0;
|
||||
- ACCESS_ONCE(ads->ctl12) = i->is_last ? 0 : AR_TxMore;
|
||||
- ACCESS_ONCE(ads->ctl15) = 0;
|
||||
- ACCESS_ONCE(ads->ctl16) = 0;
|
||||
- ACCESS_ONCE(ads->ctl17) = ctl17;
|
||||
- ACCESS_ONCE(ads->ctl18) = 0;
|
||||
- ACCESS_ONCE(ads->ctl19) = 0;
|
||||
+ ACCESS_ONCE_RW(ads->ctl11) = 0;
|
||||
+ ACCESS_ONCE_RW(ads->ctl12) = i->is_last ? 0 : AR_TxMore;
|
||||
+ ACCESS_ONCE_RW(ads->ctl15) = 0;
|
||||
+ ACCESS_ONCE_RW(ads->ctl16) = 0;
|
||||
+ ACCESS_ONCE_RW(ads->ctl17) = ctl17;
|
||||
+ ACCESS_ONCE_RW(ads->ctl18) = 0;
|
||||
+ ACCESS_ONCE_RW(ads->ctl19) = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
- ACCESS_ONCE(ads->ctl11) = (i->pkt_len & AR_FrameLen)
|
||||
+ ACCESS_ONCE_RW(ads->ctl11) = (i->pkt_len & AR_FrameLen)
|
||||
| (i->flags & ATH9K_TXDESC_VMF ? AR_VirtMoreFrag : 0)
|
||||
| SM(i->txpower, AR_XmitPower)
|
||||
| (i->flags & ATH9K_TXDESC_VEOL ? AR_VEOL : 0)
|
||||
@@ -135,22 +135,22 @@ ar9003_set_txdesc(struct ath_hw *ah, void *ds, struct ath_tx_info *i)
|
||||
val = (i->flags & ATH9K_TXDESC_PAPRD) >> ATH9K_TXDESC_PAPRD_S;
|
||||
ctl12 |= SM(val, AR_PAPRDChainMask);
|
||||
|
||||
- ACCESS_ONCE(ads->ctl12) = ctl12;
|
||||
- ACCESS_ONCE(ads->ctl17) = ctl17;
|
||||
+ ACCESS_ONCE_RW(ads->ctl12) = ctl12;
|
||||
+ ACCESS_ONCE_RW(ads->ctl17) = ctl17;
|
||||
|
||||
- ACCESS_ONCE(ads->ctl15) = set11nPktDurRTSCTS(i->rates, 0)
|
||||
+ ACCESS_ONCE_RW(ads->ctl15) = set11nPktDurRTSCTS(i->rates, 0)
|
||||
| set11nPktDurRTSCTS(i->rates, 1);
|
||||
|
||||
- ACCESS_ONCE(ads->ctl16) = set11nPktDurRTSCTS(i->rates, 2)
|
||||
+ ACCESS_ONCE_RW(ads->ctl16) = set11nPktDurRTSCTS(i->rates, 2)
|
||||
| set11nPktDurRTSCTS(i->rates, 3);
|
||||
|
||||
- ACCESS_ONCE(ads->ctl18) = set11nRateFlags(i->rates, 0)
|
||||
+ ACCESS_ONCE_RW(ads->ctl18) = set11nRateFlags(i->rates, 0)
|
||||
| set11nRateFlags(i->rates, 1)
|
||||
| set11nRateFlags(i->rates, 2)
|
||||
| set11nRateFlags(i->rates, 3)
|
||||
| SM(i->rtscts_rate, AR_RTSCTSRate);
|
||||
|
||||
- ACCESS_ONCE(ads->ctl19) = AR_Not_Sounding;
|
||||
+ ACCESS_ONCE_RW(ads->ctl19) = AR_Not_Sounding;
|
||||
}
|
||||
|
||||
static u16 ar9003_calc_ptr_chksum(struct ar9003_txc *ads)
|
||||
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
|
||||
index e88f182..4e57f5d 100644
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.h
|
||||
@@ -614,7 +614,7 @@ struct ath_hw_private_ops {
|
||||
|
||||
/* ANI */
|
||||
void (*ani_cache_ini_regs)(struct ath_hw *ah);
|
||||
-};
|
||||
+} __no_const;
|
||||
|
||||
/**
|
||||
* struct ath_hw_ops - callbacks used by hardware code and driver code
|
||||
@@ -644,7 +644,7 @@ struct ath_hw_ops {
|
||||
void (*antdiv_comb_conf_set)(struct ath_hw *ah,
|
||||
struct ath_hw_antcomb_conf *antconf);
|
||||
|
||||
-};
|
||||
+} __no_const;
|
||||
|
||||
struct ath_nf_limits {
|
||||
s16 max;
|
||||
@@ -664,7 +664,7 @@ enum ath_cal_list {
|
||||
#define AH_FASTCC 0x4
|
||||
|
||||
struct ath_hw {
|
||||
- struct ath_ops reg_ops;
|
||||
+ ath_ops_no_const reg_ops;
|
||||
|
||||
struct ieee80211_hw *hw;
|
||||
struct ath_common common;
|
||||
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_int.h b/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_int.h
|
||||
index af00e2c..ab04d34 100644
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_int.h
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_int.h
|
||||
@@ -545,7 +545,7 @@ struct phy_func_ptr {
|
||||
void (*carrsuppr)(struct brcms_phy *);
|
||||
s32 (*rxsigpwr)(struct brcms_phy *, s32);
|
||||
void (*detach)(struct brcms_phy *);
|
||||
-};
|
||||
+} __no_const;
|
||||
|
||||
struct brcms_phy {
|
||||
struct brcms_phy_pub pubpi_ro;
|
||||
diff --git a/drivers/net/wireless/iwlegacy/3945-mac.c b/drivers/net/wireless/iwlegacy/3945-mac.c
|
||||
index faec404..a5277f1 100644
|
||||
--- a/drivers/net/wireless/iwlegacy/3945-mac.c
|
||||
+++ b/drivers/net/wireless/iwlegacy/3945-mac.c
|
||||
@@ -3611,7 +3611,9 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
*/
|
||||
if (il3945_mod_params.disable_hw_scan) {
|
||||
D_INFO("Disabling hw_scan\n");
|
||||
- il3945_mac_ops.hw_scan = NULL;
|
||||
+ pax_open_kernel();
|
||||
+ *(void **)&il3945_mac_ops.hw_scan = NULL;
|
||||
+ pax_close_kernel();
|
||||
}
|
||||
|
||||
D_INFO("*** LOAD DRIVER ***\n");
|
||||
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
|
||||
index b7ce6a6..5649756 100644
|
||||
--- a/drivers/net/wireless/mac80211_hwsim.c
|
||||
+++ b/drivers/net/wireless/mac80211_hwsim.c
|
||||
@@ -1721,9 +1721,11 @@ static int __init init_mac80211_hwsim(void)
|
||||
return -EINVAL;
|
||||
|
||||
if (fake_hw_scan) {
|
||||
- mac80211_hwsim_ops.hw_scan = mac80211_hwsim_hw_scan;
|
||||
- mac80211_hwsim_ops.sw_scan_start = NULL;
|
||||
- mac80211_hwsim_ops.sw_scan_complete = NULL;
|
||||
+ pax_open_kernel();
|
||||
+ *(void **)&mac80211_hwsim_ops.hw_scan = mac80211_hwsim_hw_scan;
|
||||
+ *(void **)&mac80211_hwsim_ops.sw_scan_start = NULL;
|
||||
+ *(void **)&mac80211_hwsim_ops.sw_scan_complete = NULL;
|
||||
+ pax_close_kernel();
|
||||
}
|
||||
|
||||
spin_lock_init(&hwsim_radio_lock);
|
||||
diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h
|
||||
index 35225e9..95e6bf9 100644
|
||||
--- a/drivers/net/wireless/mwifiex/main.h
|
||||
+++ b/drivers/net/wireless/mwifiex/main.h
|
||||
This needed some manual massage to work on compat-wireless
|
||||
@@ -567,7 +567,7 @@
|
||||
int (*event_complete) (struct mwifiex_adapter *, struct sk_buff *);
|
||||
int (*data_complete) (struct mwifiex_adapter *, struct sk_buff *);
|
||||
int (*dnld_fw) (struct mwifiex_adapter *, struct mwifiex_fw_image *);
|
||||
-};
|
||||
+} __no_const;
|
||||
|
||||
struct mwifiex_adapter {
|
||||
u8 iface_type;
|
||||
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
|
||||
index d66e298..55b0a89 100644
|
||||
--- a/drivers/net/wireless/rndis_wlan.c
|
||||
+++ b/drivers/net/wireless/rndis_wlan.c
|
||||
@@ -1278,7 +1278,7 @@ static int set_rts_threshold(struct usbnet *usbdev, u32 rts_threshold)
|
||||
|
||||
netdev_dbg(usbdev->net, "%s(): %i\n", __func__, rts_threshold);
|
||||
|
||||
- if (rts_threshold < 0 || rts_threshold > 2347)
|
||||
+ if (rts_threshold > 2347)
|
||||
rts_threshold = 2347;
|
||||
|
||||
tmp = cpu_to_le32(rts_threshold);
|
||||
diff --git a/drivers/net/wireless/wl1251/wl1251.h b/drivers/net/wireless/wl1251/wl1251.h
|
||||
index 9d8f581..0f6589e 100644
|
||||
--- a/drivers/net/wireless/ti/wl1251/wl1251.h
|
||||
+++ b/drivers/net/wireless/ti/wl1251/wl1251.h
|
||||
Special for compat-wireless: the module is in "ti" folder
|
||||
@@ -266,7 +266,7 @@ struct wl1251_if_operations {
|
||||
void (*reset)(struct wl1251 *wl);
|
||||
void (*enable_irq)(struct wl1251 *wl);
|
||||
void (*disable_irq)(struct wl1251 *wl);
|
||||
-};
|
||||
+} __no_const;
|
||||
|
||||
struct wl1251 {
|
||||
struct ieee80211_hw *hw;
|
||||
diff --git a/net/wireless/core.h b/net/wireless/core.h
|
||||
index 3ac2dd0..fbe533e 100644
|
||||
--- a/net/wireless/core.h
|
||||
+++ b/net/wireless/core.h
|
||||
@@ -27,7 +27,7 @@ struct cfg80211_registered_device {
|
||||
struct mutex mtx;
|
||||
|
||||
/* rfkill support */
|
||||
- struct rfkill_ops rfkill_ops;
|
||||
+ rfkill_ops_no_const rfkill_ops;
|
||||
struct rfkill *rfkill;
|
||||
struct work_struct rfkill_sync;
|
||||
|
||||
diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c
|
||||
index af648e0..6185d3a 100644
|
||||
--- a/net/wireless/wext-core.c
|
||||
+++ b/net/wireless/wext-core.c
|
||||
@@ -747,8 +747,7 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd,
|
||||
*/
|
||||
|
||||
/* Support for very large requests */
|
||||
- if ((descr->flags & IW_DESCR_FLAG_NOMAX) &&
|
||||
- (user_length > descr->max_tokens)) {
|
||||
+ if (user_length > descr->max_tokens) {
|
||||
/* Allow userspace to GET more than max so
|
||||
* we can support any size GET requests.
|
||||
* There is still a limit : -ENOMEM.
|
||||
@@ -787,22 +786,6 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd,
|
||||
}
|
||||
}
|
||||
|
||||
- if (IW_IS_GET(cmd) && !(descr->flags & IW_DESCR_FLAG_NOMAX)) {
|
||||
- /*
|
||||
- * If this is a GET, but not NOMAX, it means that the extra
|
||||
- * data is not bounded by userspace, but by max_tokens. Thus
|
||||
- * set the length to max_tokens. This matches the extra data
|
||||
- * allocation.
|
||||
- * The driver should fill it with the number of tokens it
|
||||
- * provided, and it may check iwp->length rather than having
|
||||
- * knowledge of max_tokens. If the driver doesn't change the
|
||||
- * iwp->length, this ioctl just copies back max_token tokens
|
||||
- * filled with zeroes. Hopefully the driver isn't claiming
|
||||
- * them to be valid data.
|
||||
- */
|
||||
- iwp->length = descr->max_tokens;
|
||||
- }
|
||||
-
|
||||
err = handler(dev, info, (union iwreq_data *) iwp, extra);
|
||||
|
||||
iwp->length += essid_compat;
|
||||
--- a/drivers/net/ethernet/atheros/alx/alx_sw.h
|
||||
+++ b/drivers/net/ethernet/atheros/alx/alx_sw.h
|
||||
Unsure about this, making alx_hw_callbacks writeable, is that SElinux conform?
|
||||
@@ -326,7 +326,7 @@
|
||||
|
||||
/* Others */
|
||||
int (*get_ethtool_regs)(struct alx_hw *, void *);
|
||||
-};
|
||||
+} __no_const;
|
||||
|
||||
struct alx_hw {
|
||||
struct alx_adapter *adpt;
|
||||
Loading…
Reference in a new issue