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: Jakub Kicinski <jakub.kicinski@netronome.com>,
	Willem de Bruijn <willemb@google.com>,
	Boris Pismenny <borisp@mellanox.com>,
	"David S . Miller" <davem@davemloft.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: [PATCH 5.2 132/135] net/tls: prevent skb_orphan() from leaking TLS plain text with offload
Date: Thu, 22 Aug 2019 13:08:08 -0400	[thread overview]
Message-ID: <20190822170811.13303-133-sashal@kernel.org> (raw)
In-Reply-To: <20190822170811.13303-1-sashal@kernel.org>

From: Jakub Kicinski <jakub.kicinski@netronome.com>

[ Upstream commit 414776621d1006e57e80e6db7fdc3837897aaa64 ]

sk_validate_xmit_skb() and drivers depend on the sk member of
struct sk_buff to identify segments requiring encryption.
Any operation which removes or does not preserve the original TLS
socket such as skb_orphan() or skb_clone() will cause clear text
leaks.

Make the TCP socket underlying an offloaded TLS connection
mark all skbs as decrypted, if TLS TX is in offload mode.
Then in sk_validate_xmit_skb() catch skbs which have no socket
(or a socket with no validation) and decrypted flag set.

Note that CONFIG_SOCK_VALIDATE_XMIT, CONFIG_TLS_DEVICE and
sk->sk_validate_xmit_skb are slightly interchangeable right now,
they all imply TLS offload. The new checks are guarded by
CONFIG_TLS_DEVICE because that's the option guarding the
sk_buff->decrypted member.

Second, smaller issue with orphaning is that it breaks
the guarantee that packets will be delivered to device
queues in-order. All TLS offload drivers depend on that
scheduling property. This means skb_orphan_partial()'s
trick of preserving partial socket references will cause
issues in the drivers. We need a full orphan, and as a
result netem delay/throttling will cause all TLS offload
skbs to be dropped.

Reusing the sk_buff->decrypted flag also protects from
leaking clear text when incoming, decrypted skb is redirected
(e.g. by TC).

See commit 0608c69c9a80 ("bpf: sk_msg, sock{map|hash} redirect
through ULP") for justification why the internal flag is safe.
The only location which could leak the flag in is tcp_bpf_sendmsg(),
which is taken care of by clearing the previously unused bit.

v2:
 - remove superfluous decrypted mark copy (Willem);
 - remove the stale doc entry (Boris);
 - rely entirely on EOR marking to prevent coalescing (Boris);
 - use an internal sendpages flag instead of marking the socket
   (Boris).
v3 (Willem):
 - reorganize the can_skb_orphan_partial() condition;
 - fix the flag leak-in through tcp_bpf_sendmsg.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Acked-by: Willem de Bruijn <willemb@google.com>
Reviewed-by: Boris Pismenny <borisp@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 Documentation/networking/tls-offload.rst | 18 ------------------
 include/linux/skbuff.h                   |  8 ++++++++
 include/linux/socket.h                   |  3 +++
 include/net/sock.h                       | 10 +++++++++-
 net/core/sock.c                          | 19 ++++++++++++++-----
 net/ipv4/tcp.c                           |  3 +++
 net/ipv4/tcp_bpf.c                       |  6 +++++-
 net/ipv4/tcp_output.c                    |  3 +++
 net/tls/tls_device.c                     |  9 +++++++--
 9 files changed, 52 insertions(+), 27 deletions(-)

diff --git a/Documentation/networking/tls-offload.rst b/Documentation/networking/tls-offload.rst
index cb85af559dff1..178f4104f5cf2 100644
--- a/Documentation/networking/tls-offload.rst
+++ b/Documentation/networking/tls-offload.rst
@@ -445,24 +445,6 @@ These flags will be acted upon accordingly by the core ``ktls`` code.
 TLS device feature flags only control adding of new TLS connection
 offloads, old connections will remain active after flags are cleared.
 
-Known bugs
-==========
-
-skb_orphan() leaks clear text
------------------------------
-
-Currently drivers depend on the :c:member:`sk` member of
-:c:type:`struct sk_buff <sk_buff>` to identify segments requiring
-encryption. Any operation which removes or does not preserve the socket
-association such as :c:func:`skb_orphan` or :c:func:`skb_clone`
-will cause the driver to miss the packets and lead to clear text leaks.
-
-Redirects leak clear text
--------------------------
-
-In the RX direction, if segment has already been decrypted by the device
-and it gets redirected or mirrored - clear text will be transmitted out.
-
 .. _pre_tls_data:
 
 Transmission of pre-TLS data
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 056f557d5194e..64fa59b2c8d5a 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -1358,6 +1358,14 @@ static inline void skb_copy_hash(struct sk_buff *to, const struct sk_buff *from)
 	to->l4_hash = from->l4_hash;
 };
 
+static inline void skb_copy_decrypted(struct sk_buff *to,
+				      const struct sk_buff *from)
+{
+#ifdef CONFIG_TLS_DEVICE
+	to->decrypted = from->decrypted;
+#endif
+}
+
 #ifdef NET_SKBUFF_DATA_USES_OFFSET
 static inline unsigned char *skb_end_pointer(const struct sk_buff *skb)
 {
diff --git a/include/linux/socket.h b/include/linux/socket.h
index b57cd8bf96e2b..810d5ec0ada32 100644
--- a/include/linux/socket.h
+++ b/include/linux/socket.h
@@ -291,6 +291,9 @@ struct ucred {
 #define MSG_BATCH	0x40000 /* sendmmsg(): more messages coming */
 #define MSG_EOF         MSG_FIN
 #define MSG_NO_SHARED_FRAGS 0x80000 /* sendpage() internal : page frags are not shared */
+#define MSG_SENDPAGE_DECRYPTED	0x100000 /* sendpage() internal : page may carry
+					  * plain text and require encryption
+					  */
 
 #define MSG_ZEROCOPY	0x4000000	/* Use user data in kernel path */
 #define MSG_FASTOPEN	0x20000000	/* Send data in TCP SYN */
diff --git a/include/net/sock.h b/include/net/sock.h
index 6cbc16136357d..526de911cd91d 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -2482,6 +2482,7 @@ static inline bool sk_fullsock(const struct sock *sk)
 
 /* Checks if this SKB belongs to an HW offloaded socket
  * and whether any SW fallbacks are required based on dev.
+ * Check decrypted mark in case skb_orphan() cleared socket.
  */
 static inline struct sk_buff *sk_validate_xmit_skb(struct sk_buff *skb,
 						   struct net_device *dev)
@@ -2489,8 +2490,15 @@ static inline struct sk_buff *sk_validate_xmit_skb(struct sk_buff *skb,
 #ifdef CONFIG_SOCK_VALIDATE_XMIT
 	struct sock *sk = skb->sk;
 
-	if (sk && sk_fullsock(sk) && sk->sk_validate_xmit_skb)
+	if (sk && sk_fullsock(sk) && sk->sk_validate_xmit_skb) {
 		skb = sk->sk_validate_xmit_skb(sk, dev, skb);
+#ifdef CONFIG_TLS_DEVICE
+	} else if (unlikely(skb->decrypted)) {
+		pr_warn_ratelimited("unencrypted skb with no associated socket - dropping\n");
+		kfree_skb(skb);
+		skb = NULL;
+#endif
+	}
 #endif
 
 	return skb;
diff --git a/net/core/sock.c b/net/core/sock.c
index aa4a00d381e38..df7b38b60164f 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -1988,6 +1988,19 @@ void skb_set_owner_w(struct sk_buff *skb, struct sock *sk)
 }
 EXPORT_SYMBOL(skb_set_owner_w);
 
+static bool can_skb_orphan_partial(const struct sk_buff *skb)
+{
+#ifdef CONFIG_TLS_DEVICE
+	/* Drivers depend on in-order delivery for crypto offload,
+	 * partial orphan breaks out-of-order-OK logic.
+	 */
+	if (skb->decrypted)
+		return false;
+#endif
+	return (skb->destructor == sock_wfree ||
+		(IS_ENABLED(CONFIG_INET) && skb->destructor == tcp_wfree));
+}
+
 /* This helper is used by netem, as it can hold packets in its
  * delay queue. We want to allow the owner socket to send more
  * packets, as if they were already TX completed by a typical driver.
@@ -1999,11 +2012,7 @@ void skb_orphan_partial(struct sk_buff *skb)
 	if (skb_is_tcp_pure_ack(skb))
 		return;
 
-	if (skb->destructor == sock_wfree
-#ifdef CONFIG_INET
-	    || skb->destructor == tcp_wfree
-#endif
-		) {
+	if (can_skb_orphan_partial(skb)) {
 		struct sock *sk = skb->sk;
 
 		if (refcount_inc_not_zero(&sk->sk_refcnt)) {
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 5264f064a87e3..b30f7f8771817 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -984,6 +984,9 @@ ssize_t do_tcp_sendpages(struct sock *sk, struct page *page, int offset,
 			if (!skb)
 				goto wait_for_memory;
 
+#ifdef CONFIG_TLS_DEVICE
+			skb->decrypted = !!(flags & MSG_SENDPAGE_DECRYPTED);
+#endif
 			skb_entail(sk, skb);
 			copy = size_goal;
 		}
diff --git a/net/ipv4/tcp_bpf.c b/net/ipv4/tcp_bpf.c
index 3d1e154013844..8a56e09cfb0ed 100644
--- a/net/ipv4/tcp_bpf.c
+++ b/net/ipv4/tcp_bpf.c
@@ -398,10 +398,14 @@ static int tcp_bpf_send_verdict(struct sock *sk, struct sk_psock *psock,
 static int tcp_bpf_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
 {
 	struct sk_msg tmp, *msg_tx = NULL;
-	int flags = msg->msg_flags | MSG_NO_SHARED_FRAGS;
 	int copied = 0, err = 0;
 	struct sk_psock *psock;
 	long timeo;
+	int flags;
+
+	/* Don't let internal do_tcp_sendpages() flags through */
+	flags = (msg->msg_flags & ~MSG_SENDPAGE_DECRYPTED);
+	flags |= MSG_NO_SHARED_FRAGS;
 
 	psock = sk_psock_get(sk);
 	if (unlikely(!psock))
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 7d0be046cbc13..359d298348c72 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -1318,6 +1318,7 @@ int tcp_fragment(struct sock *sk, enum tcp_queue tcp_queue,
 	buff = sk_stream_alloc_skb(sk, nsize, gfp, true);
 	if (!buff)
 		return -ENOMEM; /* We'll just try again later. */
+	skb_copy_decrypted(buff, skb);
 
 	sk->sk_wmem_queued += buff->truesize;
 	sk_mem_charge(sk, buff->truesize);
@@ -1872,6 +1873,7 @@ static int tso_fragment(struct sock *sk, struct sk_buff *skb, unsigned int len,
 	buff = sk_stream_alloc_skb(sk, 0, gfp, true);
 	if (unlikely(!buff))
 		return -ENOMEM;
+	skb_copy_decrypted(buff, skb);
 
 	sk->sk_wmem_queued += buff->truesize;
 	sk_mem_charge(sk, buff->truesize);
@@ -2141,6 +2143,7 @@ static int tcp_mtu_probe(struct sock *sk)
 	sk_mem_charge(sk, nskb->truesize);
 
 	skb = tcp_send_head(sk);
+	skb_copy_decrypted(nskb, skb);
 
 	TCP_SKB_CB(nskb)->seq = TCP_SKB_CB(skb)->seq;
 	TCP_SKB_CB(nskb)->end_seq = TCP_SKB_CB(skb)->seq + probe_size;
diff --git a/net/tls/tls_device.c b/net/tls/tls_device.c
index eb8f24f420f0f..4cfcce211c2f1 100644
--- a/net/tls/tls_device.c
+++ b/net/tls/tls_device.c
@@ -342,9 +342,9 @@ static int tls_push_data(struct sock *sk,
 	struct tls_context *tls_ctx = tls_get_ctx(sk);
 	struct tls_prot_info *prot = &tls_ctx->prot_info;
 	struct tls_offload_context_tx *ctx = tls_offload_ctx_tx(tls_ctx);
-	int tls_push_record_flags = flags | MSG_SENDPAGE_NOTLAST;
 	int more = flags & (MSG_SENDPAGE_NOTLAST | MSG_MORE);
 	struct tls_record_info *record = ctx->open_record;
+	int tls_push_record_flags;
 	struct page_frag *pfrag;
 	size_t orig_size = size;
 	u32 max_open_record_len;
@@ -359,6 +359,9 @@ static int tls_push_data(struct sock *sk,
 	if (sk->sk_err)
 		return -sk->sk_err;
 
+	flags |= MSG_SENDPAGE_DECRYPTED;
+	tls_push_record_flags = flags | MSG_SENDPAGE_NOTLAST;
+
 	timeo = sock_sndtimeo(sk, flags & MSG_DONTWAIT);
 	if (tls_is_partially_sent_record(tls_ctx)) {
 		rc = tls_push_partial_record(sk, tls_ctx, flags);
@@ -545,7 +548,9 @@ void tls_device_write_space(struct sock *sk, struct tls_context *ctx)
 		gfp_t sk_allocation = sk->sk_allocation;
 
 		sk->sk_allocation = GFP_ATOMIC;
-		tls_push_partial_record(sk, ctx, MSG_DONTWAIT | MSG_NOSIGNAL);
+		tls_push_partial_record(sk, ctx,
+					MSG_DONTWAIT | MSG_NOSIGNAL |
+					MSG_SENDPAGE_DECRYPTED);
 		sk->sk_allocation = sk_allocation;
 	}
 }
-- 
2.20.1


  parent reply	other threads:[~2019-08-22 17:10 UTC|newest]

Thread overview: 161+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-22 17:05 [PATCH 5.2 000/135] 5.2.10-stable review Sasha Levin
2019-08-22 17:05 ` [PATCH 5.2 001/135] KEYS: trusted: allow module init if TPM is inactive or deactivated Sasha Levin
2019-08-22 17:05 ` [PATCH 5.2 002/135] sh: kernel: hw_breakpoint: Fix missing break in switch statement Sasha Levin
2019-08-22 17:05 ` [PATCH 5.2 003/135] seq_file: fix problem when seeking mid-record Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 004/135] mm/hmm: fix bad subpage pointer in try_to_unmap_one Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 005/135] mm: mempolicy: make the behavior consistent when MPOL_MF_MOVE* and MPOL_MF_STRICT were specified Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 006/135] mm: mempolicy: handle vma with unmovable pages mapped correctly in mbind Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 007/135] mm/z3fold.c: fix z3fold_destroy_pool() ordering Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 008/135] mm/z3fold.c: fix z3fold_destroy_pool() race condition Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 009/135] mm/memcontrol.c: fix use after free in mem_cgroup_iter() Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 010/135] mm/usercopy: use memory range to be accessed for wraparound check Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 011/135] mm, vmscan: do not special-case slab reclaim when watermarks are boosted Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 012/135] cpufreq: schedutil: Don't skip freq update when limits change Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 013/135] drm/amdgpu: fix gfx9 soft recovery Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 014/135] drm/nouveau: Only recalculate PBN/VCPI on mode/connector changes Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 015/135] xtensa: add missing isync to the cpu_reset TLB code Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 016/135] arm64: ftrace: Ensure module ftrace trampoline is coherent with I-side Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 017/135] ALSA: hda/realtek - Add quirk for HP Envy x360 Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 018/135] ALSA: usb-audio: Fix a stack buffer overflow bug in check_input_term Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 019/135] ALSA: usb-audio: Fix an OOB bug in parse_audio_mixer_unit Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 020/135] ALSA: hda - Apply workaround for another AMD chip 1022:1487 Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 021/135] ALSA: hda - Fix a memory leak bug Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 022/135] ALSA: hda - Add a generic reboot_notify Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 023/135] ALSA: hda - Let all conexant codec enter D3 when rebooting Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 024/135] HID: holtek: test for sanity of intfdata Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 025/135] HID: hiddev: avoid opening a disconnected device Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 026/135] HID: hiddev: do cleanup in failure of opening a device Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 027/135] Input: kbtab - sanity check for endpoint type Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 028/135] Input: iforce - add sanity checks Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 029/135] net: usb: pegasus: fix improper read if get_registers() fail Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 030/135] bpf: fix access to skb_shared_info->gso_segs Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 031/135] netfilter: ebtables: also count base chain policies Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 032/135] riscv: Correct the initialized flow of FP register Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 033/135] riscv: Make __fstate_clean() work correctly Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 034/135] Revert "i2c: imx: improve the error handling in i2c_imx_dma_request()" Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 035/135] blk-mq: move cancel of requeue_work to the front of blk_exit_queue Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 036/135] io_uring: fix manual setup of iov_iter for fixed buffers Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 037/135] RDMA/hns: Fix sg offset non-zero issue Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 038/135] IB/mlx5: Replace kfree with kvfree Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 039/135] clk: at91: generated: Truncate divisor to GENERATED_MAX_DIV + 1 Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 040/135] clk: sprd: Select REGMAP_MMIO to avoid compile errors Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 041/135] clk: renesas: cpg-mssr: Fix reset control race condition Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 042/135] dma-mapping: check pfn validity in dma_common_{mmap,get_sgtable} Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 043/135] platform/x86: pcengines-apuv2: Fix softdep statement Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 044/135] platform/x86: intel_pmc_core: Add ICL-NNPI support to PMC Core Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 045/135] mm/hmm: always return EBUSY for invalid ranges in hmm_range_{fault,snapshot} Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 046/135] xen/pciback: remove set but not used variable 'old_state' Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 047/135] irqchip/gic-v3-its: Free unused vpt_page when alloc vpe table fail Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 048/135] irqchip/irq-imx-gpcv2: Forward irq type to parent Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 049/135] f2fs: fix to read source block before invalidating it Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 050/135] tools perf beauty: Fix usbdevfs_ioctl table generator to handle _IOC() Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 051/135] perf header: Fix divide by zero error if f_header.attr_size==0 Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 052/135] perf header: Fix use of unitialized value warning Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 053/135] RDMA/qedr: Fix the hca_type and hca_rev returned in device attributes Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 054/135] ALSA: pcm: fix lost wakeup event scenarios in snd_pcm_drain Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 055/135] libata: zpodd: Fix small read overflow in zpodd_get_mech_type() Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 056/135] powerpc/nvdimm: Pick nearby online node if the device node is not online Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 057/135] drm/bridge: lvds-encoder: Fix build error while CONFIG_DRM_KMS_HELPER=m Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 058/135] drm/bridge: tc358764: Fix build error Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 059/135] Btrfs: fix deadlock between fiemap and transaction commits Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 060/135] scsi: hpsa: correct scsi command status issue after reset Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 061/135] scsi: qla2xxx: Fix possible fcport null-pointer dereferences Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 062/135] tracing: Fix header include guards in trace event headers Sasha Levin
2019-08-22 17:06 ` [PATCH 5.2 063/135] drm/amdkfd: Fix byte align on VegaM Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 064/135] drm/amd/powerplay: fix null pointer dereference around dpm state relates Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 065/135] drm/amdgpu: fix error handling in amdgpu_cs_process_fence_dep Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 066/135] drm/amdgpu: fix a potential information leaking bug Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 067/135] ata: libahci: do not complain in case of deferred probe Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 068/135] kbuild: modpost: handle KBUILD_EXTRA_SYMBOLS only for external modules Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 069/135] kbuild: Check for unknown options with cc-option usage in Kconfig and clang Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 070/135] arm64/efi: fix variable 'si' set but not used Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 071/135] riscv: Fix perf record without libelf support Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 072/135] arm64: Lower priority mask for GIC_PRIO_IRQON Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 073/135] arm64: unwind: Prohibit probing on return_address() Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 074/135] arm64/mm: fix variable 'pud' set but not used Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 075/135] arm64/mm: fix variable 'tag' " Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 076/135] IB/core: Add mitigation for Spectre V1 Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 077/135] IB/mlx5: Fix MR registration flow to use UMR properly Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 078/135] RDMA/restrack: Track driver QP types in resource tracker Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 079/135] IB/mad: Fix use-after-free in ib mad completion handling Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 080/135] RDMA/mlx5: Release locks during notifier unregister Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 081/135] drm: msm: Fix add_gpu_components Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 082/135] RDMA/hns: Fix error return code in hns_roce_v1_rsv_lp_qp() Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 083/135] drm/exynos: fix missing decrement of retry counter Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 084/135] arm64: kprobes: Recover pstate.D in single-step exception handler Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 085/135] arm64: Make debug exception handlers visible from RCU Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 086/135] Revert "kmemleak: allow to coexist with fault injection" Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 087/135] ocfs2: remove set but not used variable 'last_hash' Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 088/135] page flags: prioritize kasan bits over last-cpuid Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 089/135] asm-generic: fix -Wtype-limits compiler warnings Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 090/135] tpm: tpm_ibm_vtpm: Fix unallocated banks Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 091/135] arm64: KVM: regmap: Fix unexpected switch fall-through Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 092/135] staging: comedi: dt3000: Fix signed integer overflow 'divider * base' Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 093/135] staging: comedi: dt3000: Fix rounding up of timer divisor Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 094/135] iio: adc: max9611: Fix temperature reading in probe Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 095/135] USB: core: Fix races in character device registration and deregistraion Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 096/135] usb: gadget: udc: renesas_usb3: Fix sysfs interface of "role" Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 097/135] usb: cdc-acm: make sure a refcount is taken early enough Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 098/135] USB: CDC: fix sanity checks in CDC union parser Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 099/135] USB: serial: option: add D-Link DWM-222 device ID Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 100/135] USB: serial: option: Add support for ZTE MF871A Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 101/135] USB: serial: option: add the BroadMobi BM818 card Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 102/135] USB: serial: option: Add Motorola modem UARTs Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 103/135] usb: setup authorized_default attributes using usb_bus_notify Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 104/135] netfilter: conntrack: Use consistent ct id hash calculation Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 105/135] iwlwifi: Add support for SAR South Korea limitation Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 106/135] Input: psmouse - fix build error of multiple definition Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 107/135] bnx2x: Fix VF's VLAN reconfiguration in reload Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 108/135] bonding: Add vlan tx offload to hw_enc_features Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 109/135] net: dsa: Check existence of .port_mdb_add callback before calling it Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 110/135] net/mlx4_en: fix a memory leak bug Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 111/135] net/packet: fix race in tpacket_snd() Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 112/135] net: sched: sch_taprio: fix memleak in error path for sched list parse Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 113/135] sctp: fix memleak in sctp_send_reset_streams Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 114/135] sctp: fix the transport error_count check Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 115/135] team: Add vlan tx offload to hw_enc_features Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 116/135] tipc: initialise addr_trail_end when setting node addresses Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 117/135] xen/netback: Reset nr_frags before freeing skb Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 118/135] net/mlx5e: Only support tx/rx pause setting for port owner Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 119/135] bnxt_en: Fix VNIC clearing logic for 57500 chips Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 120/135] bnxt_en: Improve RX doorbell sequence Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 121/135] bnxt_en: Fix handling FRAG_ERR when NVM_INSTALL_UPDATE cmd fails Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 122/135] bnxt_en: Suppress HWRM errors for HWRM_NVM_GET_VARIABLE command Sasha Levin
2019-08-22 17:07 ` [PATCH 5.2 123/135] bnxt_en: Use correct src_fid to determine direction of the flow Sasha Levin
2019-08-22 17:08 ` [PATCH 5.2 124/135] bnxt_en: Fix to include flow direction in L2 key Sasha Levin
2019-08-22 17:08 ` [PATCH 5.2 125/135] net sched: update skbedit action for batched events operations Sasha Levin
2019-08-22 17:08 ` [PATCH 5.2 126/135] tc-testing: updated skbedit action tests with batch create/delete Sasha Levin
2019-08-22 17:08 ` [PATCH 5.2 127/135] netdevsim: Restore per-network namespace accounting for fib entries Sasha Levin
2019-08-22 17:08 ` [PATCH 5.2 128/135] net/mlx5e: ethtool, Avoid setting speed to 56GBASE when autoneg off Sasha Levin
2019-08-22 17:08 ` [PATCH 5.2 129/135] net/mlx5e: Fix false negative indication on tx reporter CQE recovery Sasha Levin
2019-08-22 17:08 ` [PATCH 5.2 130/135] net/mlx5e: Remove redundant check in CQE recovery flow of tx reporter Sasha Levin
2019-08-22 17:08 ` [PATCH 5.2 131/135] net/mlx5e: Use flow keys dissector to parse packets for ARFS Sasha Levin
2019-08-22 17:08 ` Sasha Levin [this message]
2019-08-22 17:08 ` [PATCH 5.2 133/135] net: phy: consider AN_RESTART status when reading link status Sasha Levin
2019-08-22 17:08 ` [PATCH 5.2 134/135] netlink: Fix nlmsg_parse as a wrapper for strict message parsing Sasha Levin
2019-08-22 17:08 ` [PATCH 5.2 135/135] Linux 5.2.10-rc1 Sasha Levin
2019-08-22 17:26 ` [PATCH 5.2 000/135] 5.2.10-stable review Greg KH
2019-08-22 22:05   ` Stefan Lippers-Hollmann
2019-08-22 23:38     ` Greg KH
2019-08-23  0:42       ` Stefan Lippers-Hollmann
2019-08-23  6:28         ` Sasha Levin
2019-08-23 17:36           ` Greg KH
2019-08-24  1:18             ` Sasha Levin
2019-08-24  2:32               ` Greg KH
2019-08-24  5:48                 ` Sasha Levin
2019-08-24 12:14                   ` Greg KH
2019-08-22 20:57 ` kernelci.org bot
2019-08-23  2:08 ` Jon Hunter
2019-08-23  2:08   ` Jon Hunter
2019-08-23  8:09 ` Naresh Kamboju
2019-08-23 14:29 ` Guenter Roeck
2019-08-23 18:41 ` shuah
2019-08-23 22:05   ` Sasha Levin
2019-08-24  2:38   ` Greg KH
2019-08-24 15:21     ` shuah
2019-08-24 15:33       ` Greg KH
2019-08-24 17:01         ` shuah
2019-08-24 18:14           ` Greg KH
2019-08-24 21:49             ` shuah
2019-08-27 10:51               ` Sasha Levin
2019-08-25  0:08           ` shuah

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=20190822170811.13303-133-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=borisp@mellanox.com \
    --cc=davem@davemloft.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=jakub.kicinski@netronome.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=willemb@google.com \
    /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.