Home Home > GIT Browse > openSUSE-15.1
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Tesarik <ptesarik@suse.cz>2019-06-10 14:04:29 +0200
committerPetr Tesarik <ptesarik@suse.cz>2019-06-10 14:04:29 +0200
commitaa98fde98b8f567dbe6e9045413b4646c3fd3287 (patch)
treeb9cf9752ce9588ca553f86720d5aa47be0fe145b
parentb30515c1ab6c2f4002c4303af2e12866701c11c9 (diff)
parent11184fffbd6f7ef27b6f2566362a27c4fc912a31 (diff)
Merge branch 'users/jslaby/SLE15/for-next' into SLE15
Pull networking fixes from Jiri Slaby
-rw-r--r--patches.suse/ipv4-Define-__ipv4_neigh_lookup_noref-when-CONFIG_IN.patch42
-rw-r--r--patches.suse/kernel-signal.c-trace_signal_deliver-when-signal_gro.patch47
-rw-r--r--patches.suse/neighbor-Call-__ipv4_neigh_lookup_noref-in-neigh_xmi.patch55
-rw-r--r--patches.suse/tipc-fix-hanging-clients-using-poll-with-EPOLLOUT-fl.patch52
-rw-r--r--series.conf4
5 files changed, 200 insertions, 0 deletions
diff --git a/patches.suse/ipv4-Define-__ipv4_neigh_lookup_noref-when-CONFIG_IN.patch b/patches.suse/ipv4-Define-__ipv4_neigh_lookup_noref-when-CONFIG_IN.patch
new file mode 100644
index 0000000000..179ff0392e
--- /dev/null
+++ b/patches.suse/ipv4-Define-__ipv4_neigh_lookup_noref-when-CONFIG_IN.patch
@@ -0,0 +1,42 @@
+From: David Ahern <dsahern@gmail.com>
+Date: Sun, 5 May 2019 11:16:20 -0700
+Subject: ipv4: Define __ipv4_neigh_lookup_noref when CONFIG_INET is disabled
+Git-commit: 9b3040a6aafd7898ece7fc7efcbca71e42aa8069
+Patch-mainline: v5.2-rc1
+References: git-fixes
+
+Define __ipv4_neigh_lookup_noref to return NULL when CONFIG_INET is disabled.
+
+Fixes: 4b2a2bfeb3f0 ("neighbor: Call __ipv4_neigh_lookup_noref in neigh_xmit")
+Reported-by: kbuild test robot <lkp@intel.com>
+Signed-off-by: David Ahern <dsahern@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ include/net/arp.h | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/include/net/arp.h
++++ b/include/net/arp.h
+@@ -17,6 +17,7 @@ static inline u32 arp_hashfn(const void
+ return val * hash_rnd[0];
+ }
+
++#ifdef CONFIG_INET
+ static inline struct neighbour *__ipv4_neigh_lookup_noref(struct net_device *dev, u32 key)
+ {
+ if (dev->flags & (IFF_LOOPBACK | IFF_POINTOPOINT))
+@@ -24,6 +25,13 @@ static inline struct neighbour *__ipv4_n
+
+ return ___neigh_lookup_noref(&arp_tbl, neigh_key_eq32, arp_hashfn, &key, dev);
+ }
++#else
++static inline
++struct neighbour *__ipv4_neigh_lookup_noref(struct net_device *dev, u32 key)
++{
++ return NULL;
++}
++#endif
+
+ static inline struct neighbour *__ipv4_neigh_lookup(struct net_device *dev, u32 key)
+ {
diff --git a/patches.suse/kernel-signal.c-trace_signal_deliver-when-signal_gro.patch b/patches.suse/kernel-signal.c-trace_signal_deliver-when-signal_gro.patch
new file mode 100644
index 0000000000..8fb312e9c8
--- /dev/null
+++ b/patches.suse/kernel-signal.c-trace_signal_deliver-when-signal_gro.patch
@@ -0,0 +1,47 @@
+From: Zhenliang Wei <weizhenliang@huawei.com>
+Date: Fri, 31 May 2019 22:30:52 -0700
+Subject: kernel/signal.c: trace_signal_deliver when signal_group_exit
+Git-commit: 98af37d624ed8c83f1953b1b6b2f6866011fc064
+Patch-mainline: v5.2-rc3
+References: git-fixes
+
+In the fixes commit, removing SIGKILL from each thread signal mask and
+executing "goto fatal" directly will skip the call to
+"trace_signal_deliver". At this point, the delivery tracking of the
+SIGKILL signal will be inaccurate.
+
+Therefore, we need to add trace_signal_deliver before "goto fatal" after
+executing sigdelset.
+
+Note: SEND_SIG_NOINFO matches the fact that SIGKILL doesn't have any info.
+
+Link: http://lkml.kernel.org/r/20190425025812.91424-1-weizhenliang@huawei.com
+Fixes: cf43a757fd4944 ("signal: Restore the stop PTRACE_EVENT_EXIT")
+Signed-off-by: Zhenliang Wei <weizhenliang@huawei.com>
+Reviewed-by: Christian Brauner <christian@brauner.io>
+Reviewed-by: Oleg Nesterov <oleg@redhat.com>
+Cc: Eric W. Biederman <ebiederm@xmission.com>
+Cc: Ivan Delalande <colona@arista.com>
+Cc: Arnd Bergmann <arnd@arndb.de>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Cc: Deepa Dinamani <deepa.kernel@gmail.com>
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ kernel/signal.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/kernel/signal.c
++++ b/kernel/signal.c
+@@ -2257,6 +2257,8 @@ relock:
+ if (signal_group_exit(signal)) {
+ ksig->info.si_signo = signr = SIGKILL;
+ sigdelset(&current->pending.signal, SIGKILL);
++ trace_signal_deliver(SIGKILL, SEND_SIG_NOINFO,
++ &sighand->action[SIGKILL - 1]);
+ recalc_sigpending();
+ goto fatal;
+ }
diff --git a/patches.suse/neighbor-Call-__ipv4_neigh_lookup_noref-in-neigh_xmi.patch b/patches.suse/neighbor-Call-__ipv4_neigh_lookup_noref-in-neigh_xmi.patch
new file mode 100644
index 0000000000..28dd9d912f
--- /dev/null
+++ b/patches.suse/neighbor-Call-__ipv4_neigh_lookup_noref-in-neigh_xmi.patch
@@ -0,0 +1,55 @@
+From: David Ahern <dsahern@gmail.com>
+Date: Wed, 1 May 2019 18:18:42 -0700
+Subject: neighbor: Call __ipv4_neigh_lookup_noref in neigh_xmit
+Git-commit: 4b2a2bfeb3f056461a90bd621e8bd7d03fa47f60
+Patch-mainline: v5.2-rc1
+References: git-fixes
+
+Commit cd9ff4de0107 changed the key for IFF_POINTOPOINT devices to
+INADDR_ANY but neigh_xmit which is used for MPLS encapsulations was not
+updated to use the altered key. The result is that every packet Tx does
+a lookup on the gateway address which does not find an entry, a new one
+is created only to find the existing one in the table right before the
+insert since arp_constructor was updated to reset the primary key. This
+is seen in the allocs and destroys counters:
+ ip -s -4 ntable show | head -10 | grep alloc
+
+which increase for each packet showing the unnecessary overhread.
+
+Fix by having neigh_xmit use __ipv4_neigh_lookup_noref for NEIGH_ARP_TABLE.
+
+Fixes: cd9ff4de0107 ("ipv4: Make neigh lookup keys for loopback/point-to-point devices be INADDR_ANY")
+Reported-by: Alan Maguire <alan.maguire@oracle.com>
+Signed-off-by: David Ahern <dsahern@gmail.com>
+Tested-by: Alan Maguire <alan.maguire@oracle.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ net/core/neighbour.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/net/core/neighbour.c
++++ b/net/core/neighbour.c
+@@ -30,6 +30,7 @@
+ #include <linux/times.h>
+ #include <net/net_namespace.h>
+ #include <net/neighbour.h>
++#include <net/arp.h>
+ #include <net/dst.h>
+ #include <net/sock.h>
+ #include <net/netevent.h>
+@@ -2529,7 +2530,13 @@ int neigh_xmit(int index, struct net_dev
+ if (!tbl)
+ goto out;
+ rcu_read_lock_bh();
+- neigh = __neigh_lookup_noref(tbl, addr, dev);
++ if (index == NEIGH_ARP_TABLE) {
++ u32 key = *((u32 *)addr);
++
++ neigh = __ipv4_neigh_lookup_noref(dev, key);
++ } else {
++ neigh = __neigh_lookup_noref(tbl, addr, dev);
++ }
+ if (!neigh)
+ neigh = __neigh_create(tbl, addr, dev, false);
+ err = PTR_ERR(neigh);
diff --git a/patches.suse/tipc-fix-hanging-clients-using-poll-with-EPOLLOUT-fl.patch b/patches.suse/tipc-fix-hanging-clients-using-poll-with-EPOLLOUT-fl.patch
new file mode 100644
index 0000000000..aebb493dca
--- /dev/null
+++ b/patches.suse/tipc-fix-hanging-clients-using-poll-with-EPOLLOUT-fl.patch
@@ -0,0 +1,52 @@
+From: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@gmail.com>
+Date: Thu, 9 May 2019 07:13:42 +0200
+Subject: tipc: fix hanging clients using poll with EPOLLOUT flag
+Git-commit: ff946833b70e0c7f93de9a3f5b329b5ae2287b38
+Patch-mainline: v5.2-rc1
+References: git-fixes
+
+commit 517d7c79bdb398 ("tipc: fix hanging poll() for stream sockets")
+introduced a regression for clients using non-blocking sockets.
+After the commit, we send EPOLLOUT event to the client even in
+TIPC_CONNECTING state. This causes the subsequent send() to fail
+with ENOTCONN, as the socket is still not in TIPC_ESTABLISHED state.
+
+In this commit, we:
+- improve the fix for hanging poll() by replacing sk_data_ready()
+ with sk_state_change() to wake up all clients.
+- revert the faulty updates introduced by commit 517d7c79bdb398
+ ("tipc: fix hanging poll() for stream sockets").
+
+Fixes: 517d7c79bdb398 ("tipc: fix hanging poll() for stream sockets")
+Signed-off-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@gmail.com>
+Acked-by: Jon Maloy <jon.maloy@ericsson.se>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ net/tipc/socket.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/net/tipc/socket.c
++++ b/net/tipc/socket.c
+@@ -711,11 +711,11 @@ static unsigned int tipc_poll(struct fil
+
+ switch (sk->sk_state) {
+ case TIPC_ESTABLISHED:
+- case TIPC_CONNECTING:
+ if (!tsk->cong_link_cnt && !tsk_conn_cong(tsk))
+ mask |= POLLOUT;
+ /* fall thru' */
+ case TIPC_LISTEN:
++ case TIPC_CONNECTING:
+ if (!skb_queue_empty(&sk->sk_receive_queue))
+ mask |= (POLLIN | POLLRDNORM);
+ break;
+@@ -1597,7 +1597,7 @@ static bool filter_connect(struct tipc_s
+ return true;
+
+ /* If empty 'ACK-' message, wake up sleeping connect() */
+- sk->sk_data_ready(sk);
++ sk->sk_state_change(sk);
+
+ /* 'ACK-' message is neither accepted nor rejected: */
+ msg_set_dest_droppable(hdr, 1);
diff --git a/series.conf b/series.conf
index c684b10e0d..ea294b075d 100644
--- a/series.conf
+++ b/series.conf
@@ -22112,6 +22112,8 @@
patches.fixes/0001-p54-drop-device-reference-count-if-fails-to-enable-d.patch
patches.drivers/brcm80211-potential-NULL-dereference-in-brcmf_cfg802.patch
patches.drivers/net-ena-fix-return-value-of-ena_com_config_llq_info.patch
+ patches.suse/neighbor-Call-__ipv4_neigh_lookup_noref-in-neigh_xmi.patch
+ patches.suse/ipv4-Define-__ipv4_neigh_lookup_noref-when-CONFIG_IN.patch
patches.fixes/0001-dt-bindings-net-Fix-a-typo-in-the-phy-mode-list-for-.patch
patches.drivers/usb-storage-Set-virt_boundary_mask-to-avoid-SG-overf.patch
patches.drivers/USB-cdc-acm-fix-unthrottle-races.patch
@@ -22181,6 +22183,7 @@
patches.fixes/RDMA-rxe-Consider-skb-reserve-space-based-on-netdev-.patch
patches.drivers/clk-rockchip-fix-wrong-clock-definitions-for-rk3328.patch
patches.drivers/clk-rockchip-Fix-video-codec-clocks-on-rk3288.patch
+ patches.suse/tipc-fix-hanging-clients-using-poll-with-EPOLLOUT-fl.patch
patches.arch/powerpc-numa-improve-control-of-topology-updates.patch
patches.arch/powerpc-numa-document-topology_updates_enabled-disab.patch
patches.arch/powerpc-pseries-Track-LMB-nid-instead-of-using-devic.patch
@@ -22294,6 +22297,7 @@
patches.suse/net-dsa-mv88e6xxx-fix-handling-of-upper-half-of-STAT.patch
patches.drm/0004-drm-etnaviv-lock-MMU-while-dumping-core.patch
patches.suse/memcg-make-it-work-on-sparse-non-0-node-systems.patch
+ patches.suse/kernel-signal.c-trace_signal_deliver-when-signal_gro.patch
patches.arch/powerpc-perf-Fix-MMCRA-corruption-by-bhrb_filter.patch
# dhowells/linux-fs keys-uefi