diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2017-10-02 01:15:58 -0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2017-10-02 01:15:58 -0400 |
commit | 2848a7109905c7e5bc0eb9382955a43be6e1fc08 (patch) | |
tree | 7e324d34008af85cd4cc81f192ec1d57bb6cf129 | |
parent | 767c5e3e33322637c7848d18c0ad91dc58879405 (diff) | |
download | 4.12-rt-patches-2848a7109905c7e5bc0eb9382955a43be6e1fc08.tar.gz |
refresh net-use-trylock-in-icmp_sk.patch
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r-- | patches/net-use-trylock-in-icmp_sk.patch | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/patches/net-use-trylock-in-icmp_sk.patch b/patches/net-use-trylock-in-icmp_sk.patch index 3e706f3c8eded4..923f4ed4068a4d 100644 --- a/patches/net-use-trylock-in-icmp_sk.patch +++ b/patches/net-use-trylock-in-icmp_sk.patch @@ -1,6 +1,7 @@ +From 31137fdc9874abc84d5af811cd6746def38d364d Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Thu, 21 Sep 2017 14:42:04 +0200 -Subject: net: use trylock in icmp_sk +Subject: [PATCH] net: use trylock in icmp_sk The locking path can be recursive (same as for sk->sk_lock.slock) and therefore we need a trylock version for the locallock, too. @@ -8,13 +9,12 @@ therefore we need a trylock version for the locallock, too. Cc: rt-stable@vger.kernel.org Reported-by: Jacek Konieczny <jajcus@jajcus.net> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> ---- - net/ipv4/icmp.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) +diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c +index b1224a69aed3..0785c5383efd 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c -@@ -217,12 +217,16 @@ static inline struct sock *icmp_xmit_loc +@@ -217,12 +217,16 @@ static inline struct sock *icmp_xmit_lock(struct net *net) { struct sock *sk; @@ -31,7 +31,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> return NULL; } return sk; -@@ -231,6 +235,7 @@ static inline struct sock *icmp_xmit_loc +@@ -231,6 +235,7 @@ static inline struct sock *icmp_xmit_lock(struct net *net) static inline void icmp_xmit_unlock(struct sock *sk) { spin_unlock(&sk->sk_lock.slock); @@ -39,7 +39,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> } int sysctl_icmp_msgs_per_sec __read_mostly = 1000; -@@ -420,7 +425,6 @@ static void icmp_reply(struct icmp_bxm * +@@ -420,7 +425,6 @@ static void icmp_reply(struct icmp_bxm *icmp_param, struct sk_buff *skb) /* Needed by both icmp_global_allow and icmp_xmit_lock */ local_bh_disable(); @@ -47,7 +47,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /* global icmp_msgs_per_sec */ if (!icmpv4_global_allow(net, type, code)) -@@ -465,7 +469,6 @@ static void icmp_reply(struct icmp_bxm * +@@ -465,7 +469,6 @@ static void icmp_reply(struct icmp_bxm *icmp_param, struct sk_buff *skb) out_unlock: icmp_xmit_unlock(sk); out_bh_enable: @@ -55,15 +55,15 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> local_bh_enable(); } -@@ -678,7 +681,6 @@ void icmp_send(struct sk_buff *skb_in, i +@@ -678,7 +681,6 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info) /* Needed by both icmp_global_allow and icmp_xmit_lock */ local_bh_disable(); - local_lock(icmp_sk_lock); - /* Check global sysctl_icmp_msgs_per_sec ratelimit, unless - * incoming dev is loopback. If outgoing dev change to not be -@@ -767,7 +769,6 @@ void icmp_send(struct sk_buff *skb_in, i + /* Check global sysctl_icmp_msgs_per_sec ratelimit */ + if (!icmpv4_global_allow(net, type, code)) +@@ -763,7 +765,6 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info) out_unlock: icmp_xmit_unlock(sk); out_bh_enable: @@ -71,3 +71,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> local_bh_enable(); out:; } +-- +2.1.4 + |