summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernels/linux-libre-rt/PKGBUILD68
-rw-r--r--kernels/linux-libre-rt/fix_race_condition_in_packet_set_ring.diff84
2 files changed, 31 insertions, 121 deletions
diff --git a/kernels/linux-libre-rt/PKGBUILD b/kernels/linux-libre-rt/PKGBUILD
index e12c53cda..8165adde6 100644
--- a/kernels/linux-libre-rt/PKGBUILD
+++ b/kernels/linux-libre-rt/PKGBUILD
@@ -10,9 +10,9 @@
pkgbase=linux-libre-rt
_pkgbasever=4.8-gnu
-_pkgver=4.8.11-gnu
+_pkgver=4.8.15-gnu
_rtbasever=4.8
-_rtpatchver=rt7
+_rtpatchver=rt10
_replacesarchkernel=('linux%') # '%' gets replaced with _kernelname
_replacesoldkernels=() # '%' gets replaced with _kernelname
@@ -21,7 +21,7 @@ _replacesoldmodules=() # '%' gets replaced with _kernelname
_srcname=linux-${_pkgbasever%-*}
_archpkgver=${_pkgver%-*}_${_rtpatchver}
pkgver=${_pkgver//-/_}.${_rtpatchver}
-pkgrel=2
+pkgrel=1
rcnrel=armv7-x4
arch=('i686' 'x86_64' 'armv7h')
url="https://rt.wiki.kernel.org/"
@@ -48,7 +48,6 @@ source=("https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/l
# standard config files for mkinitcpio ramdisk
'linux.preset'
'change-default-console-loglevel.patch'
- 'fix_race_condition_in_packet_set_ring.diff'
'0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch'
'0002-fix-Atmel-maXTouch-touchscreen-support.patch'
# armv7h patches
@@ -67,42 +66,41 @@ source=("https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/l
'0011-usb-musb-Call-pm_runtime-from-musb_gadget_queue.patch'
'0012-phy-twl4030-usb-better-handle-musb_mailbox-failure.patch'
'0013-Revert-gpu-drm-omapdrm-dss-of-add-missing-of_node_pu.patch')
-sha256sums=('d54e0f8a27e24f3666c19b395c19dba194635db26929c89e78ffa4b2b0e8ca3a'
+sha512sums=('728da6c27bd73a41866d37c82bfdc350a3bff59e15291e80a94af9e0b7b4401ea161da4c2ec4d8fc25d30c35becd85624ac32d068afff4c12ee7790c5649da2d'
'SKIP'
- '4485fe9df1be80a5095b8662233a5c7e9a82afb1fe11f9f97475036bb94a972f'
+ 'b37a6f02244f3b8cfb45a34c468a33b0444410e42f392e0df297a1a0e774ed47ff5503bc6627788fcb3b7ddcbfece9ee0d4fdf8c5f59172c142cec2ca48f9cf3'
'SKIP'
- 'f258a256ebdb51ceabbe1e482706756437c7113c6d987025203468bfb8601f9a'
+ '8894497ea625a2f9a553074879dcb06ddcb789c7aa9006a8d3f2961e364104c67ac81e198b7b9c9f105b6d4c6cbdd3e89ecb089b3946acc8cdba2c24e40efd40'
'SKIP'
- 'bfd4a7f61febe63c880534dcb7c31c5b932dde6acf991810b41a939a93535494'
+ '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3'
'SKIP'
- '13bd7a8d9ed6b6bc971e4cd162262c5a20448a83796af39ce394d827b0e5de74'
+ '267295aa0cea65684968420c68b32f1a66a22d018b9d2b2c1ef14267bcf4cb68aaf7099d073cbfefe6c25c8608bdcbbd45f7ac8893fdcecbf1e621abdfe9ecc1'
'SKIP'
- '6de8a8319271809ffdb072b68d53d155eef12438e6d04ff06a5a4db82c34fa8a'
+ '7a3716bfe3b9f546da309c7492f3e08f8f506813afeb1c737a474c83313d5c313cf4582b65215c2cfce3b74d9d1021c96e8badafe8f6e5b01fe28d2b5c61ae78'
'SKIP'
- 'cde14ecb6628addddce0854e1d6ff87df1627d56dc56b03a64fa957eb821b10f'
- 'c45f0960bca7e0e063d41e0691eefb5cf9db85fdbf35bb6243881d5a32f7f870'
- 'ca8d75011d7eb130c7502083d9f36fe07974a7c656daeb5d3b3e129d00fbf25e'
- '834bd254b56ab71d73f59b3221f056c72f559553c04718e350ab2a3e2991afe0'
- 'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65'
- '1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99'
- 'ad1ee95f906f88d31fcdb9273cd08e02e8eda177449f0c98dc1bff8cbf1483c2'
- '0376bd5efa31d4e2a9d52558777cebd9f0941df8e1adab916c868bf0c05f2fc3'
- '351fd96be8cd5ebd0435c0a8a978673fc023e3b1026085e67f86d815b2285e25'
- '20b46f54f296f553b75b53f7a1e3dd88c8d84fb92ce839916a243e39fd2f3940'
+ 'ce017d630ae6ef4ee7cca4ef2b601784ba4e69d02a6192d8cb062ffd92e25209ab687619cff5f1b6a01fe6cdf1a4b728e09008840692bdab339a8e083173451a'
+ 'c94247a86305e955a51a3f8cdf1fed7ec99b04c034f6bd7f4e833d5f3216692706fa8b3f3015f9de21729727315e8c919d00aec12815dfe1171475258734d4a5'
+ '62fddb459a8b6ef41421044e4b1ab08670b0224fe9e099ad246b7ed24969ab131336eb4fc6c9162ef2a4491380f6654e868dcfc50734461e15a63125c59174dc'
+ 'd6faa67f3ef40052152254ae43fee031365d0b1524aa0718b659eb75afc21a3f79ea8d62d66ea311a800109bed545bc8f79e8752319cd378eef2cbd3a09aba22'
+ '2dc6b0ba8f7dbf19d2446c5c5f1823587de89f4e28e9595937dd51a87755099656f2acec50e3e2546ea633ad1bfd1c722e0c2b91eef1d609103d8abdc0a7cbaf'
+ 'd9d28e02e964704ea96645a5107f8b65cae5f4fb4f537e224e5e3d087fd296cb770c29ac76e0ce95d173bc420ea87fb8f187d616672a60a0cae618b0ef15b8c8'
+ '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af'
+ 'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168'
+ 'fbafe14e3e1a8699e2531230ced96252636620bf42fc8c5d9544999ed65dd8430fe10e0a18a71c712a37f182f76d5b07dfe1b9c92d9b5c93527b1466b50ced5b'
'SKIP'
- '858eac5f4aadb7a4157a36b31d101d75d841a9c58199e580201d8305356044e3'
- 'eee25f5fa6e6b0fb3d5ab913521af67adf788b8613cad1b6d38711261f70646f'
- 'ece5581c6b19073ccb191a6c49d50cd17ff61916ab53c7eb3039e5ecbcf2d0e3'
- '0b7f588d1bccef7ac116f4d64e8877aefdf9099f16177a75ffc0c1bcd5d2fff9'
- '9b504e544345119660fc50875decc1b9ee59ca9783bc5b466461410b307974f2'
- '1b2eb7f52cf0f5481bdaca484cbd3175b2e472e63e46887cc0ed003e39e57ff3'
- 'c7bba5a22db69e50ea8c7c7abc6bb8d133a30b27b2e7d77fc1f7e435f328366a'
- 'f485923217433862978af1029d6d0573b39d6779796fb8f85ab4d588466ec0d2'
- '5b21335a3a23345f8296e9258c20f7d70d9668a771019f4ea52eda3e916915b5'
- '616970b049d597e994930d323c5a5efdd3e1344275c53792840a1898a52bb5dd'
- '9b0afd186edf6dae0fe0c89ca1c83e5cfa207640859d5c560defead6897478b2'
- 'e565ff56ec6b4dcb43a45cb4d79060d5311e6363f6f0dcfe209cb0efb49df65c'
- '10055949d09efc74b1586df4d74531910b551a8a8e047ab3800942881e97c974')
+ 'b529e23fe03a2960dc54c8dd07ad5ce5ab92bb87339384556d3a63041690b19fa8279070455dd2cc666538d08a2383363fb78e6333992b56e662480abd06e345'
+ 'd0247beaac78a7d513b376e8644e5affae6651166ed6abc29501339eb8b0e57121575881a527bf0ed2ba9c4c8daafa1d27e07dd6ddcdccc242d474fb73217091'
+ '3ada1d222c22afb430dd73a77712785fbc5f01335bdb4ce488d47bae9996beb2139a4b32f350e5405dbec62699540a7e4f1be576b4a28d85423e0861360549b8'
+ 'e7defca3c835ee254c8ec0de1ddb4bfae41626467ec29f3171cabb887cb34cb09e752f725cb8cc3f3adbe64e404ecc31a47a16ba17e2be172b944fef90fcb217'
+ '223d3bf4f125898ef134b9caef6dbca0f4be0ef601818ad30bf2419cf339d87c2563782de03ffca87840d04e86dcdffa414aa6b762b3b37f2ca5d6c286320641'
+ '2661119afa6d3b36459c0a4dcf444900089be33d525ebd9bc7639404441eb1e14980c59cb41c1ea5cf4e9f11aa40e26b7a9ab66e3c9fda379a2ad3f742780cef'
+ '807b8f5a2b0b6e3e0dddb9a2aef24d925f19429d58971f7a1e5d2538d7202ab96c99432445bafe10147a516c3932ed4b1ac44b61ccbf628ae00d3f9ad874a752'
+ '28d5c780950f8316d7b70b88152cbb77aa437749a117c25721f417362d936b139c5c450d4e462fe46e64f7dfcb5c74ff68b069a0eef98e5a13fa0b7f04e41e29'
+ 'be425b9d0145cc17f0a629d877c53a49c76b859a05a7dfe58c94f1a9ebd5bec6929d15671edc8316dd750f16e356aa57c98f717b7979e56cd5a94dc8df88f809'
+ '0db5b91718bd03cf1e3358b9e35b04dadd6ff55b10445ee2e115a635123f423f80d472e51b7b054886296fb5b4816c4abee5fc60357d4055cd29eb64d2aa0a8d'
+ '759bfdd52f925a107bd623d50113dcdde57edfec577f2f41df9e9e5bb68d2bc64ba404816040c3ef15c684b932ec7e2d42dd3ecbbe1a544d745ed2d4f4aee448'
+ 'c99f692fc98420f399449af57f63ca3829cde6710ce97ad0c3d9559ebd7ec91115573411cce241b521cc41730dbc2f532bd63540753c9220711d07c9e7f23db8'
+ '6c36dee67aecf776afca58e6b5a36c428366dccf8d4be9b2fa54b0740fb12fdec27911391926129244d138abebde6b0442c5126f3a3275875a3f92fd2149b1e2')
validpgpkeys=(
'474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva
'C92BAA713B8D53D3CAE63FC9E6974752F9704456' # André Silva
@@ -161,10 +159,6 @@ prepare() {
install -m644 -t drivers/video/logo \
"${srcdir}/logo_linux_"{clut224.ppm,vga16.ppm,mono.pbm}
- # fix a race condition that allows to gain root
- # https://marc.info/?l=linux-netdev&m=148054660230570&w=2
- patch -p1 -i "${srcdir}/fix_race_condition_in_packet_set_ring.diff"
-
# add latest fixes from stable queue, if needed
# http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
diff --git a/kernels/linux-libre-rt/fix_race_condition_in_packet_set_ring.diff b/kernels/linux-libre-rt/fix_race_condition_in_packet_set_ring.diff
deleted file mode 100644
index 12048f611..000000000
--- a/kernels/linux-libre-rt/fix_race_condition_in_packet_set_ring.diff
+++ /dev/null
@@ -1,84 +0,0 @@
-From: Philip Pettersson <philip.pettersson@gmail.com>
-
-When packet_set_ring creates a ring buffer it will initialize a
-struct timer_list if the packet version is TPACKET_V3. This value
-can then be raced by a different thread calling setsockopt to
-set the version to TPACKET_V1 before packet_set_ring has finished.
-
-This leads to a use-after-free on a function pointer in the
-struct timer_list when the socket is closed as the previously
-initialized timer will not be deleted.
-
-The bug is fixed by taking lock_sock(sk) in packet_setsockopt when
-changing the packet version while also taking the lock at the start
-of packet_set_ring.
-
-Fixes: f6fb8f100b80 ("af-packet: TPACKET_V3 flexible buffer implementation.")
-Signed-off-by: Philip Pettersson <philip.pettersson@gmail.com>
-Signed-off-by: Eric Dumazet <edumazet@google.com>
----
- net/packet/af_packet.c | 18 ++++++++++++------
- 1 file changed, 12 insertions(+), 6 deletions(-)
-
-diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
-index d2238b204691b8e4f2e3acb9bc167b553ba32d50..dd2332390c45bbff7c3fc5d259453f2e1ca352bf 100644
---- a/net/packet/af_packet.c
-+++ b/net/packet/af_packet.c
-@@ -3648,19 +3648,25 @@ packet_setsockopt(struct socket *sock, int level, int optname, char __user *optv
-
- if (optlen != sizeof(val))
- return -EINVAL;
-- if (po->rx_ring.pg_vec || po->tx_ring.pg_vec)
-- return -EBUSY;
- if (copy_from_user(&val, optval, sizeof(val)))
- return -EFAULT;
- switch (val) {
- case TPACKET_V1:
- case TPACKET_V2:
- case TPACKET_V3:
-- po->tp_version = val;
-- return 0;
-+ break;
- default:
- return -EINVAL;
- }
-+ lock_sock(sk);
-+ if (po->rx_ring.pg_vec || po->tx_ring.pg_vec) {
-+ ret = -EBUSY;
-+ } else {
-+ po->tp_version = val;
-+ ret = 0;
-+ }
-+ release_sock(sk);
-+ return ret;
- }
- case PACKET_RESERVE:
- {
-@@ -4164,6 +4170,7 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u,
- /* Added to avoid minimal code churn */
- struct tpacket_req *req = &req_u->req;
-
-+ lock_sock(sk);
- /* Opening a Tx-ring is NOT supported in TPACKET_V3 */
- if (!closing && tx_ring && (po->tp_version > TPACKET_V2)) {
- net_warn_ratelimited("Tx-ring is not supported.\n");
-@@ -4245,7 +4252,6 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u,
- goto out;
- }
-
-- lock_sock(sk);
-
- /* Detach socket from network */
- spin_lock(&po->bind_lock);
-@@ -4294,11 +4300,11 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u,
- if (!tx_ring)
- prb_shutdown_retire_blk_timer(po, rb_queue);
- }
-- release_sock(sk);
-
- if (pg_vec)
- free_pg_vec(pg_vec, order, req->tp_block_nr);
- out:
-+ release_sock(sk);
- return err;
- }