All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Eric Dumazet <edumazet@google.com>,
	Michal Kubecek <mkubecek@suse.cz>, Firo Yang <firo.yang@suse.com>,
	Jakub Kicinski <jakub.kicinski@netronome.com>,
	Sasha Levin <sashal@kernel.org>,
	rcu@vger.kernel.org, netdev@vger.kernel.org
Subject: [PATCH AUTOSEL 5.4 103/187] tcp/dccp: fix possible race __inet_lookup_established()
Date: Fri, 27 Dec 2019 12:39:31 -0500	[thread overview]
Message-ID: <20191227174055.4923-103-sashal@kernel.org> (raw)
In-Reply-To: <20191227174055.4923-1-sashal@kernel.org>

From: Eric Dumazet <edumazet@google.com>

[ Upstream commit 8dbd76e79a16b45b2ccb01d2f2e08dbf64e71e40 ]

Michal Kubecek and Firo Yang did a very nice analysis of crashes
happening in __inet_lookup_established().

Since a TCP socket can go from TCP_ESTABLISH to TCP_LISTEN
(via a close()/socket()/listen() cycle) without a RCU grace period,
I should not have changed listeners linkage in their hash table.

They must use the nulls protocol (Documentation/RCU/rculist_nulls.txt),
so that a lookup can detect a socket in a hash list was moved in
another one.

Since we added code in commit d296ba60d8e2 ("soreuseport: Resolve
merge conflict for v4/v6 ordering fix"), we have to add
hlist_nulls_add_tail_rcu() helper.

Fixes: 3b24d854cb35 ("tcp/dccp: do not touch listener sk_refcnt under synflood")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Michal Kubecek <mkubecek@suse.cz>
Reported-by: Firo Yang <firo.yang@suse.com>
Reviewed-by: Michal Kubecek <mkubecek@suse.cz>
Link: https://lore.kernel.org/netdev/20191120083919.GH27852@unicorn.suse.cz/
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/rculist_nulls.h | 37 +++++++++++++++++++++++++++++++++++
 include/net/inet_hashtables.h | 12 +++++++++---
 include/net/sock.h            |  5 +++++
 net/ipv4/inet_diag.c          |  3 ++-
 net/ipv4/inet_hashtables.c    | 16 +++++++--------
 net/ipv4/tcp_ipv4.c           |  7 ++++---
 6 files changed, 65 insertions(+), 15 deletions(-)

diff --git a/include/linux/rculist_nulls.h b/include/linux/rculist_nulls.h
index bc8206a8f30e..61974c4c566b 100644
--- a/include/linux/rculist_nulls.h
+++ b/include/linux/rculist_nulls.h
@@ -100,6 +100,43 @@ static inline void hlist_nulls_add_head_rcu(struct hlist_nulls_node *n,
 		first->pprev = &n->next;
 }
 
+/**
+ * hlist_nulls_add_tail_rcu
+ * @n: the element to add to the hash list.
+ * @h: the list to add to.
+ *
+ * Description:
+ * Adds the specified element to the specified hlist_nulls,
+ * while permitting racing traversals.
+ *
+ * The caller must take whatever precautions are necessary
+ * (such as holding appropriate locks) to avoid racing
+ * with another list-mutation primitive, such as hlist_nulls_add_head_rcu()
+ * or hlist_nulls_del_rcu(), running on this same list.
+ * However, it is perfectly legal to run concurrently with
+ * the _rcu list-traversal primitives, such as
+ * hlist_nulls_for_each_entry_rcu(), used to prevent memory-consistency
+ * problems on Alpha CPUs.  Regardless of the type of CPU, the
+ * list-traversal primitive must be guarded by rcu_read_lock().
+ */
+static inline void hlist_nulls_add_tail_rcu(struct hlist_nulls_node *n,
+					    struct hlist_nulls_head *h)
+{
+	struct hlist_nulls_node *i, *last = NULL;
+
+	/* Note: write side code, so rcu accessors are not needed. */
+	for (i = h->first; !is_a_nulls(i); i = i->next)
+		last = i;
+
+	if (last) {
+		n->next = last->next;
+		n->pprev = &last->next;
+		rcu_assign_pointer(hlist_next_rcu(last), n);
+	} else {
+		hlist_nulls_add_head_rcu(n, h);
+	}
+}
+
 /**
  * hlist_nulls_for_each_entry_rcu - iterate over rcu list of given type
  * @tpos:	the type * to use as a loop cursor.
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
index af2b4c065a04..d0019d3395cf 100644
--- a/include/net/inet_hashtables.h
+++ b/include/net/inet_hashtables.h
@@ -103,13 +103,19 @@ struct inet_bind_hashbucket {
 	struct hlist_head	chain;
 };
 
-/*
- * Sockets can be hashed in established or listening table
+/* Sockets can be hashed in established or listening table.
+ * We must use different 'nulls' end-of-chain value for all hash buckets :
+ * A socket might transition from ESTABLISH to LISTEN state without
+ * RCU grace period. A lookup in ehash table needs to handle this case.
  */
+#define LISTENING_NULLS_BASE (1U << 29)
 struct inet_listen_hashbucket {
 	spinlock_t		lock;
 	unsigned int		count;
-	struct hlist_head	head;
+	union {
+		struct hlist_head	head;
+		struct hlist_nulls_head	nulls_head;
+	};
 };
 
 /* This is for listening sockets, thus all sockets which possess wildcards. */
diff --git a/include/net/sock.h b/include/net/sock.h
index 718e62fbe869..fe7cd6899cde 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -723,6 +723,11 @@ static inline void __sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_h
 	hlist_nulls_add_head_rcu(&sk->sk_nulls_node, list);
 }
 
+static inline void __sk_nulls_add_node_tail_rcu(struct sock *sk, struct hlist_nulls_head *list)
+{
+	hlist_nulls_add_tail_rcu(&sk->sk_nulls_node, list);
+}
+
 static inline void sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list)
 {
 	sock_hold(sk);
diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c
index 7dc79b973e6e..6a4c82f96e78 100644
--- a/net/ipv4/inet_diag.c
+++ b/net/ipv4/inet_diag.c
@@ -914,11 +914,12 @@ void inet_diag_dump_icsk(struct inet_hashinfo *hashinfo, struct sk_buff *skb,
 
 		for (i = s_i; i < INET_LHTABLE_SIZE; i++) {
 			struct inet_listen_hashbucket *ilb;
+			struct hlist_nulls_node *node;
 
 			num = 0;
 			ilb = &hashinfo->listening_hash[i];
 			spin_lock(&ilb->lock);
-			sk_for_each(sk, &ilb->head) {
+			sk_nulls_for_each(sk, node, &ilb->nulls_head) {
 				struct inet_sock *inet = inet_sk(sk);
 
 				if (!net_eq(sock_net(sk), net))
diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
index 83fb00153018..2bbaaf0c7176 100644
--- a/net/ipv4/inet_hashtables.c
+++ b/net/ipv4/inet_hashtables.c
@@ -516,10 +516,11 @@ static int inet_reuseport_add_sock(struct sock *sk,
 				   struct inet_listen_hashbucket *ilb)
 {
 	struct inet_bind_bucket *tb = inet_csk(sk)->icsk_bind_hash;
+	const struct hlist_nulls_node *node;
 	struct sock *sk2;
 	kuid_t uid = sock_i_uid(sk);
 
-	sk_for_each_rcu(sk2, &ilb->head) {
+	sk_nulls_for_each_rcu(sk2, node, &ilb->nulls_head) {
 		if (sk2 != sk &&
 		    sk2->sk_family == sk->sk_family &&
 		    ipv6_only_sock(sk2) == ipv6_only_sock(sk) &&
@@ -555,9 +556,9 @@ int __inet_hash(struct sock *sk, struct sock *osk)
 	}
 	if (IS_ENABLED(CONFIG_IPV6) && sk->sk_reuseport &&
 		sk->sk_family == AF_INET6)
-		hlist_add_tail_rcu(&sk->sk_node, &ilb->head);
+		__sk_nulls_add_node_tail_rcu(sk, &ilb->nulls_head);
 	else
-		hlist_add_head_rcu(&sk->sk_node, &ilb->head);
+		__sk_nulls_add_node_rcu(sk, &ilb->nulls_head);
 	inet_hash2(hashinfo, sk);
 	ilb->count++;
 	sock_set_flag(sk, SOCK_RCU_FREE);
@@ -606,11 +607,9 @@ void inet_unhash(struct sock *sk)
 		reuseport_detach_sock(sk);
 	if (ilb) {
 		inet_unhash2(hashinfo, sk);
-		 __sk_del_node_init(sk);
-		 ilb->count--;
-	} else {
-		__sk_nulls_del_node_init_rcu(sk);
+		ilb->count--;
 	}
+	__sk_nulls_del_node_init_rcu(sk);
 	sock_prot_inuse_add(sock_net(sk), sk->sk_prot, -1);
 unlock:
 	spin_unlock_bh(lock);
@@ -750,7 +749,8 @@ void inet_hashinfo_init(struct inet_hashinfo *h)
 
 	for (i = 0; i < INET_LHTABLE_SIZE; i++) {
 		spin_lock_init(&h->listening_hash[i].lock);
-		INIT_HLIST_HEAD(&h->listening_hash[i].head);
+		INIT_HLIST_NULLS_HEAD(&h->listening_hash[i].nulls_head,
+				      i + LISTENING_NULLS_BASE);
 		h->listening_hash[i].count = 0;
 	}
 
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 67b2dc7a1727..eda64871f983 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -2149,13 +2149,14 @@ static void *listening_get_next(struct seq_file *seq, void *cur)
 	struct tcp_iter_state *st = seq->private;
 	struct net *net = seq_file_net(seq);
 	struct inet_listen_hashbucket *ilb;
+	struct hlist_nulls_node *node;
 	struct sock *sk = cur;
 
 	if (!sk) {
 get_head:
 		ilb = &tcp_hashinfo.listening_hash[st->bucket];
 		spin_lock(&ilb->lock);
-		sk = sk_head(&ilb->head);
+		sk = sk_nulls_head(&ilb->nulls_head);
 		st->offset = 0;
 		goto get_sk;
 	}
@@ -2163,9 +2164,9 @@ static void *listening_get_next(struct seq_file *seq, void *cur)
 	++st->num;
 	++st->offset;
 
-	sk = sk_next(sk);
+	sk = sk_nulls_next(sk);
 get_sk:
-	sk_for_each_from(sk) {
+	sk_nulls_for_each_from(sk, node) {
 		if (!net_eq(sock_net(sk), net))
 			continue;
 		if (sk->sk_family == afinfo->family)
-- 
2.20.1


  parent reply	other threads:[~2019-12-27 17:43 UTC|newest]

Thread overview: 181+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-27 17:37 [PATCH AUTOSEL 5.4 001/187] ASoC: rt5682: fix i2c arbitration lost issue Sasha Levin
2019-12-27 17:37 ` [alsa-devel] " Sasha Levin
2019-12-27 17:37 ` [PATCH AUTOSEL 5.4 002/187] spi: pxa2xx: Add support for Intel Jasper Lake Sasha Levin
2019-12-27 17:37   ` Sasha Levin
2019-12-27 17:37   ` Sasha Levin
2019-12-27 17:37 ` [PATCH AUTOSEL 5.4 003/187] regulator: fix use after free issue Sasha Levin
2019-12-27 17:37 ` [PATCH AUTOSEL 5.4 004/187] spi: cadence: Correct handling of native chipselect Sasha Levin
2019-12-27 17:37 ` [PATCH AUTOSEL 5.4 005/187] ASoC: max98090: remove msleep in PLL unlocked workaround Sasha Levin
2019-12-27 17:37   ` [alsa-devel] " Sasha Levin
2019-12-27 22:43   ` Mark Brown
2019-12-27 22:43     ` [alsa-devel] " Mark Brown
2019-12-27 17:37 ` [PATCH AUTOSEL 5.4 006/187] ASoC: max98090: exit workaround earlier if PLL is locked Sasha Levin
2019-12-27 17:37   ` [alsa-devel] " Sasha Levin
2019-12-27 22:44   ` Mark Brown
2019-12-27 22:44     ` [alsa-devel] " Mark Brown
2020-01-05 15:30     ` Sasha Levin
2020-01-05 15:30       ` [alsa-devel] " Sasha Levin
2019-12-27 17:37 ` [PATCH AUTOSEL 5.4 007/187] ASoC: max98090: fix possible race conditions Sasha Levin
2019-12-27 17:37   ` [alsa-devel] " Sasha Levin
2019-12-27 17:37 ` [PATCH AUTOSEL 5.4 008/187] mwifiex: fix possible heap overflow in mwifiex_process_country_ie() Sasha Levin
2020-01-06 22:51   ` Brian Norris
2020-01-09 15:29     ` Sasha Levin
2020-01-09 17:33       ` Brian Norris
2019-12-27 17:37 ` [PATCH AUTOSEL 5.4 009/187] spi: dw: Correct handling of native chipselect Sasha Levin
2019-12-27 17:37 ` [PATCH AUTOSEL 5.4 010/187] spi: fsl: Fix GPIO descriptor support Sasha Levin
2019-12-27 17:37 ` [PATCH AUTOSEL 5.4 011/187] gpio: Handle counting of Freescale chipselects Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 012/187] spi: fsl: Handle the single hardwired chipselect case Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 013/187] locking/spinlock/debug: Fix various data races Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 014/187] netfilter: ctnetlink: netns exit must wait for callbacks Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 015/187] x86/intel: Disable HPET on Intel Coffee Lake H platforms Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 016/187] x86/intel: Disable HPET on Intel Ice Lake platforms Sasha Levin
2020-01-30 19:50   ` Len Brown
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 017/187] netfilter: nf_tables_offload: Check for the NETDEV_UNREGISTER event Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 018/187] mwifiex: Fix heap overflow in mmwifiex_process_tdls_action_frame() Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 019/187] libtraceevent: Fix lib installation with O= Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 020/187] libtraceevent: Copy pkg-config file to output folder when using O= Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 021/187] regulator: core: fix regulator_register() error paths to properly release rdev Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 022/187] x86/efi: Update e820 with reserved EFI boot services data to fix kexec breakage Sasha Levin
2019-12-27 17:38   ` Sasha Levin
2019-12-27 17:38   ` Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 023/187] ASoC: Intel: bytcr_rt5640: Update quirk for Teclast X89 Sasha Levin
2019-12-27 17:38   ` [alsa-devel] " Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 024/187] selftests: netfilter: use randomized netns names Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 025/187] netfilter: nf_queue: enqueue skbs with NULL dst Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 026/187] efi/gop: Return EFI_NOT_FOUND if there are no usable GOPs Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 027/187] efi/gop: Return EFI_SUCCESS if a usable GOP was found Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 028/187] efi/gop: Fix memory leak in __gop_query32/64() Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 029/187] efi/earlycon: Remap entire framebuffer after page initialization Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 030/187] ARM: dts: imx6ul: imx6ul-14x14-evk.dtsi: Fix SPI NOR probing Sasha Levin
2019-12-27 17:38   ` Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 031/187] ARM: vexpress: Set-up shared OPP table instead of individual for each CPU Sasha Levin
2019-12-27 17:38   ` Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 032/187] netfilter: uapi: Avoid undefined left-shift in xt_sctp.h Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 033/187] netfilter: nft_set_rbtree: bogus lookup/get on consecutive elements in named sets Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 034/187] netfilter: nf_tables: validate NFT_SET_ELEM_INTERVAL_END Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 035/187] netfilter: nf_tables: validate NFT_DATA_VALUE after nft_data_init() Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 036/187] netfilter: nf_tables: skip module reference count bump on object updates Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 037/187] netfilter: nf_tables_offload: return EOPNOTSUPP if rule specifies no actions Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 038/187] netfilter: bridge: make sure to pull arp header in br_nf_forward_arp() Sasha Levin
2019-12-27 17:38   ` [Bridge] " Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 039/187] ARM: dts: BCM5301X: Fix MDIO node address/size cells Sasha Levin
2019-12-27 17:38   ` Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 040/187] selftests/ftrace: Fix to check the existence of set_ftrace_filter Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 041/187] selftests/ftrace: Fix ftrace test cases to check unsupported Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 042/187] selftests/ftrace: Do not to use absolute debugfs path Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 043/187] selftests/ftrace: Fix multiple kprobe testcase Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 044/187] selftests: safesetid: Move link library to LDLIBS Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 045/187] selftests: safesetid: Check the return value of setuid/setgid Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 046/187] selftests: safesetid: Fix Makefile to set correct test program Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 047/187] ARM: exynos_defconfig: Restore debugfs support Sasha Levin
2019-12-27 17:38   ` Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 048/187] ARM: dts: Cygnus: Fix MDIO node address/size cells Sasha Levin
2019-12-27 17:38   ` Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 049/187] mlxsw: spectrum_router: Remove unlikely user-triggerable warning Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 050/187] selftests: forwarding: Delete IPv6 address at the end Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 051/187] spi: spi-cavium-thunderx: Add missing pci_release_regions() Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 052/187] net: ethernet: ti: davinci_cpdma: fix warning "device driver frees DMA memory with different size" Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 053/187] af_packet: set defaule value for tmo Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 054/187] fjes: fix missed check in fjes_acpi_add Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 055/187] NFC: nxp-nci: Fix probing without ACPI Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 056/187] Revert "iwlwifi: assign directly to iwl_trans->cfg in QuZ detection" Sasha Levin
2019-12-30  5:48   ` Anders Kaseorg
2020-01-05 15:42     ` Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 057/187] iwlwifi: pcie: move power gating workaround earlier in the flow Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 058/187] reset: Do not register resource data for missing resets Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 059/187] efi: Don't attempt to map RCI2 config table if it doesn't exist Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 060/187] ASoC: topology: Check return value for snd_soc_add_dai_link() Sasha Levin
2019-12-27 17:38   ` [alsa-devel] " Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 061/187] ASoC: topology: Check return value for soc_tplg_pcm_create() Sasha Levin
2019-12-27 17:38   ` [alsa-devel] " Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 062/187] ASoC: SOF: loader: snd_sof_fw_parse_ext_data log warning on unknown header Sasha Levin
2019-12-27 17:38   ` [alsa-devel] " Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 063/187] ASoC: SOF: Intel: split cht and byt debug window sizes Sasha Levin
2019-12-27 17:38   ` [alsa-devel] " Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 064/187] ARM: dts: am335x-sancloud-bbe: fix phy mode Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 065/187] ARM: omap2plus_defconfig: Add back DEBUG_FS Sasha Levin
2019-12-27 17:38   ` Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 066/187] ARM: dts: bcm283x: Fix critical trip point Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 067/187] bnxt_en: Fix MSIX request logic for RDMA driver Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 068/187] bnxt_en: Return error if FW returns more data than dump length Sasha Levin
2019-12-27 17:38   ` Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 069/187] net: ena: fix napi handler misbehavior when the napi budget is zero Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 070/187] arm64: dts: ls1028a: fix typo in TMU calibration data Sasha Levin
2019-12-27 17:38   ` Sasha Levin
2019-12-27 17:38 ` [PATCH AUTOSEL 5.4 071/187] bpf, riscv: Limit to 33 tail calls Sasha Levin
2019-12-27 17:38   ` Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 072/187] bpf, mips: " Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 073/187] bpftool: Don't crash on missing jited insns or ksyms Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 074/187] perf metricgroup: Fix printing event names of metric group with multiple events Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 075/187] perf header: Fix false warning when there are no duplicate cache entries Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 076/187] spi: spi-ti-qspi: Fix a bug when accessing non default CS Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 077/187] ARM: dts: am437x-gp/epos-evm: fix panel compatible Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 078/187] kselftest/runner: Print new line in print of timeout log Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 079/187] kselftest: Support old perl versions Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 080/187] samples: bpf: Replace symbol compare of trace_event Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 081/187] samples: bpf: fix syscall_tp due to unused syscall Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 082/187] arm64: dts: ls1028a: fix reboot node Sasha Levin
2019-12-27 17:39   ` Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 083/187] ARM: imx_v6_v7_defconfig: Explicitly restore CONFIG_DEBUG_FS Sasha Levin
2019-12-27 17:39   ` Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 084/187] tty: serial: msm_serial: Fix lockup for sysrq and oops Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 085/187] pinctrl: aspeed-g6: Fix LPC/eSPI mux configuration Sasha Levin
2019-12-27 17:39   ` Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 086/187] bus: ti-sysc: Fix missing reset delay handling Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 087/187] net: usb: lan78xx: Fix suspend/resume PHY register access error Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 088/187] qede: Fix multicast mac configuration Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 089/187] clk: walk orphan list on clock provider registration Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 090/187] mac80211: fix TID field in monitor mode transmit Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 091/187] cfg80211: fix double-free after changing network namespace Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 092/187] pinctrl: pinmux: fix a possible null pointer in pinmux_can_be_used_for_gpio Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 093/187] powerpc: Ensure that swiotlb buffer is allocated from low memory Sasha Levin
2019-12-27 17:39   ` Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 094/187] btrfs: Fix error messages in qgroup_rescan_init Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 095/187] Btrfs: fix cloning range with a hole when using the NO_HOLES feature Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 096/187] ARM: shmobile: defconfig: Restore debugfs support Sasha Levin
2019-12-27 17:39   ` Sasha Levin
2020-01-09 22:12   ` Geert Uytterhoeven
2020-01-09 22:12     ` Geert Uytterhoeven
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 097/187] btrfs: handle error in btrfs_cache_block_group Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 098/187] Btrfs: fix hole extent items with a zero size after range cloning Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 099/187] ocxl: Fix potential memory leak on context creation Sasha Levin
2019-12-27 17:39   ` Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 100/187] bpf: Clear skb->tstamp in bpf_redirect when necessary Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 101/187] bnxt: apply computed clamp value for coalece parameter Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 102/187] ipv6/addrconf: only check invalid header values when NETLINK_F_STRICT_CHK is set Sasha Levin
2019-12-27 17:39 ` Sasha Levin [this message]
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 104/187] 6pack,mkiss: fix possible deadlock Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 105/187] habanalabs: rate limit error msg on waiting for CS Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 106/187] habanalabs: remove variable 'val' set but not used Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 107/187] net: marvell: mvpp2: phylink requires the link interrupt Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 108/187] hv_netvsc: Fix tx_table init in rndis_set_subchannel() Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 109/187] bnx2x: Do not handle requests from VFs after parity Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 110/187] bnx2x: Fix logic to get total no. of PFs per engine Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 111/187] bonding: fix active-backup transition after link failure Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 112/187] gtp: do not allow adding duplicate tid and ms_addr pdp context Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 113/187] gtp: fix wrong condition in gtp_genl_dump_pdp() Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 114/187] gtp: fix an use-after-free in ipv4_pdp_find() Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 115/187] gtp: avoid zero size hashtable Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 116/187] net: phylink: fix interface passed to mac_link_up Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 117/187] net/smc: add fallback check to connect() Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 118/187] cxgb4: Fix kernel panic while accessing sge_info Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 119/187] net: usb: lan78xx: Fix error message format specifier Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 120/187] parisc: fix compilation when KEXEC=n and KEXEC_FILE=y Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 121/187] parisc: add missing __init annotation Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 122/187] rfkill: Fix incorrect check to avoid NULL pointer dereference Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 123/187] ASoC: wm8962: fix lambda value Sasha Levin
2019-12-27 17:39   ` [alsa-devel] " Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 124/187] regulator: rn5t618: fix module aliases Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 125/187] spi: nxp-fspi: Ensure width is respected in spi-mem operations Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 126/187] powerpc: Fix __clear_user() with KUAP enabled Sasha Levin
2019-12-27 17:39   ` Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 127/187] clk: at91: fix possible deadlock Sasha Levin
2019-12-27 17:39   ` Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 128/187] net: dsa: b53: Fix egress flooding settings Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 129/187] net: gemini: Fix memory leak in gmac_setup_txqs Sasha Levin
2019-12-27 17:39   ` Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 130/187] staging: axis-fifo: add unspecified HAS_IOMEM dependency Sasha Levin
2019-12-27 17:39   ` Sasha Levin
2019-12-27 17:39 ` [PATCH AUTOSEL 5.4 131/187] iommu/iova: Init the struct iova to fix the possible memleak Sasha Levin
2019-12-27 17:39   ` Sasha Levin
2019-12-27 17:40 ` [PATCH AUTOSEL 5.4 132/187] kconfig: don't crash on NULL expressions in expr_eq() Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191227174055.4923-103-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=edumazet@google.com \
    --cc=firo.yang@suse.com \
    --cc=jakub.kicinski@netronome.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mkubecek@suse.cz \
    --cc=netdev@vger.kernel.org \
    --cc=rcu@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.