public inbox for linux-kernel@vger.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: 160+ 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  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox