mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 13:16:41 +00:00
linux: update to linux-4.1.12
Signed-off-by: Stephan Raue <stephan@openelec.tv>
This commit is contained in:
parent
c0eaf86646
commit
dc54c26032
@ -40,7 +40,7 @@ case "$LINUX" in
|
|||||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET imx6-status-led imx6-soc-fan"
|
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET imx6-status-led imx6-soc-fan"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
PKG_VERSION="4.1.11"
|
PKG_VERSION="4.1.12"
|
||||||
PKG_URL="http://www.kernel.org/pub/linux/kernel/v4.x/$PKG_NAME-$PKG_VERSION.tar.xz"
|
PKG_URL="http://www.kernel.org/pub/linux/kernel/v4.x/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -1,63 +0,0 @@
|
|||||||
From 8f6a05588928ef61e751ca3cb008b9847fb6b83d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eric Dumazet <edumazet@google.com>
|
|
||||||
Date: Thu, 1 Oct 2015 05:39:26 -0700
|
|
||||||
Subject: [PATCH] inet: fix race in reqsk_queue_unlink()
|
|
||||||
|
|
||||||
reqsk_timer_handler() tests if icsk_accept_queue.listen_opt
|
|
||||||
is NULL at its beginning.
|
|
||||||
|
|
||||||
By the time it calls inet_csk_reqsk_queue_drop() and
|
|
||||||
reqsk_queue_unlink(), listener might have been closed and
|
|
||||||
inet_csk_listen_stop() had called reqsk_queue_yank_acceptq()
|
|
||||||
which sets icsk_accept_queue.listen_opt to NULL
|
|
||||||
|
|
||||||
We therefore need to correctly check listen_opt being NULL
|
|
||||||
after holding syn_wait_lock for proper synchronization.
|
|
||||||
|
|
||||||
Fixes: fa76ce7328b2 ("inet: get rid of central tcp/dccp listener timer")
|
|
||||||
Fixes: b357a364c57c ("inet: fix possible panic in reqsk_queue_unlink()")
|
|
||||||
Signed-off-by: Eric Dumazet <edumazet@google.com>
|
|
||||||
Cc: Yuchung Cheng <ycheng@google.com>
|
|
||||||
---
|
|
||||||
net/ipv4/inet_connection_sock.c | 19 ++++++++++---------
|
|
||||||
1 file changed, 10 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
|
|
||||||
index e664706b350c..37c8b45af44b 100644
|
|
||||||
--- a/net/ipv4/inet_connection_sock.c
|
|
||||||
+++ b/net/ipv4/inet_connection_sock.c
|
|
||||||
@@ -568,21 +568,22 @@ EXPORT_SYMBOL(inet_rtx_syn_ack);
|
|
||||||
static bool reqsk_queue_unlink(struct request_sock_queue *queue,
|
|
||||||
struct request_sock *req)
|
|
||||||
{
|
|
||||||
- struct listen_sock *lopt = queue->listen_opt;
|
|
||||||
struct request_sock **prev;
|
|
||||||
+ struct listen_sock *lopt;
|
|
||||||
bool found = false;
|
|
||||||
|
|
||||||
spin_lock(&queue->syn_wait_lock);
|
|
||||||
-
|
|
||||||
- for (prev = &lopt->syn_table[req->rsk_hash]; *prev != NULL;
|
|
||||||
- prev = &(*prev)->dl_next) {
|
|
||||||
- if (*prev == req) {
|
|
||||||
- *prev = req->dl_next;
|
|
||||||
- found = true;
|
|
||||||
- break;
|
|
||||||
+ lopt = queue->listen_opt;
|
|
||||||
+ if (lopt) {
|
|
||||||
+ for (prev = &lopt->syn_table[req->rsk_hash]; *prev != NULL;
|
|
||||||
+ prev = &(*prev)->dl_next) {
|
|
||||||
+ if (*prev == req) {
|
|
||||||
+ *prev = req->dl_next;
|
|
||||||
+ found = true;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-
|
|
||||||
spin_unlock(&queue->syn_wait_lock);
|
|
||||||
if (timer_pending(&req->rsk_timer) && del_timer_sync(&req->rsk_timer))
|
|
||||||
reqsk_put(req);
|
|
||||||
--
|
|
||||||
2.4.3
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user