mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	Refresh patches Fixes: CVE-2017-5754 aka Meltdown Tested-on: ar71xx Archer C7 v2 Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com> [fix conflict after 4.14 bump] Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
		
			
				
	
	
		
			91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 40fc3423b983b864bf70b03199191260ae9b2ea6 Mon Sep 17 00:00:00 2001
 | 
						|
From: Eric Dumazet <edumazet@google.com>
 | 
						|
Date: Sat, 3 Dec 2016 11:14:50 -0800
 | 
						|
Subject: [PATCH 01/10] tcp: tsq: add tsq_flags / tsq_enum
 | 
						|
 | 
						|
This is a cleanup, to ease code review of following patches.
 | 
						|
 | 
						|
Old 'enum tsq_flags' is renamed, and a new enumeration is added
 | 
						|
with the flags used in cmpxchg() operations as opposed to
 | 
						|
single bit operations.
 | 
						|
 | 
						|
Signed-off-by: Eric Dumazet <edumazet@google.com>
 | 
						|
Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
						|
---
 | 
						|
 include/linux/tcp.h   | 11 ++++++++++-
 | 
						|
 net/ipv4/tcp_output.c | 16 ++++++++--------
 | 
						|
 2 files changed, 18 insertions(+), 9 deletions(-)
 | 
						|
 | 
						|
--- a/include/linux/tcp.h
 | 
						|
+++ b/include/linux/tcp.h
 | 
						|
@@ -368,7 +368,7 @@ struct tcp_sock {
 | 
						|
 	u32	*saved_syn;
 | 
						|
 };
 | 
						|
 
 | 
						|
-enum tsq_flags {
 | 
						|
+enum tsq_enum {
 | 
						|
 	TSQ_THROTTLED,
 | 
						|
 	TSQ_QUEUED,
 | 
						|
 	TCP_TSQ_DEFERRED,	   /* tcp_tasklet_func() found socket was owned */
 | 
						|
@@ -379,6 +379,15 @@ enum tsq_flags {
 | 
						|
 				    */
 | 
						|
 };
 | 
						|
 
 | 
						|
+enum tsq_flags {
 | 
						|
+	TSQF_THROTTLED			= (1UL << TSQ_THROTTLED),
 | 
						|
+	TSQF_QUEUED			= (1UL << TSQ_QUEUED),
 | 
						|
+	TCPF_TSQ_DEFERRED		= (1UL << TCP_TSQ_DEFERRED),
 | 
						|
+	TCPF_WRITE_TIMER_DEFERRED	= (1UL << TCP_WRITE_TIMER_DEFERRED),
 | 
						|
+	TCPF_DELACK_TIMER_DEFERRED	= (1UL << TCP_DELACK_TIMER_DEFERRED),
 | 
						|
+	TCPF_MTU_REDUCED_DEFERRED	= (1UL << TCP_MTU_REDUCED_DEFERRED),
 | 
						|
+};
 | 
						|
+
 | 
						|
 static inline struct tcp_sock *tcp_sk(const struct sock *sk)
 | 
						|
 {
 | 
						|
 	return (struct tcp_sock *)sk;
 | 
						|
--- a/net/ipv4/tcp_output.c
 | 
						|
+++ b/net/ipv4/tcp_output.c
 | 
						|
@@ -784,10 +784,10 @@ static void tcp_tasklet_func(unsigned lo
 | 
						|
 	}
 | 
						|
 }
 | 
						|
 
 | 
						|
-#define TCP_DEFERRED_ALL ((1UL << TCP_TSQ_DEFERRED) |		\
 | 
						|
-			  (1UL << TCP_WRITE_TIMER_DEFERRED) |	\
 | 
						|
-			  (1UL << TCP_DELACK_TIMER_DEFERRED) |	\
 | 
						|
-			  (1UL << TCP_MTU_REDUCED_DEFERRED))
 | 
						|
+#define TCP_DEFERRED_ALL (TCPF_TSQ_DEFERRED |		\
 | 
						|
+			  TCPF_WRITE_TIMER_DEFERRED |	\
 | 
						|
+			  TCPF_DELACK_TIMER_DEFERRED |	\
 | 
						|
+			  TCPF_MTU_REDUCED_DEFERRED)
 | 
						|
 /**
 | 
						|
  * tcp_release_cb - tcp release_sock() callback
 | 
						|
  * @sk: socket
 | 
						|
@@ -808,7 +808,7 @@ void tcp_release_cb(struct sock *sk)
 | 
						|
 		nflags = flags & ~TCP_DEFERRED_ALL;
 | 
						|
 	} while (cmpxchg(&tp->tsq_flags, flags, nflags) != flags);
 | 
						|
 
 | 
						|
-	if (flags & (1UL << TCP_TSQ_DEFERRED))
 | 
						|
+	if (flags & TCPF_TSQ_DEFERRED)
 | 
						|
 		tcp_tsq_handler(sk);
 | 
						|
 
 | 
						|
 	/* Here begins the tricky part :
 | 
						|
@@ -822,15 +822,15 @@ void tcp_release_cb(struct sock *sk)
 | 
						|
 	 */
 | 
						|
 	sock_release_ownership(sk);
 | 
						|
 
 | 
						|
-	if (flags & (1UL << TCP_WRITE_TIMER_DEFERRED)) {
 | 
						|
+	if (flags & TCPF_WRITE_TIMER_DEFERRED) {
 | 
						|
 		tcp_write_timer_handler(sk);
 | 
						|
 		__sock_put(sk);
 | 
						|
 	}
 | 
						|
-	if (flags & (1UL << TCP_DELACK_TIMER_DEFERRED)) {
 | 
						|
+	if (flags & TCPF_DELACK_TIMER_DEFERRED) {
 | 
						|
 		tcp_delack_timer_handler(sk);
 | 
						|
 		__sock_put(sk);
 | 
						|
 	}
 | 
						|
-	if (flags & (1UL << TCP_MTU_REDUCED_DEFERRED)) {
 | 
						|
+	if (flags & TCPF_MTU_REDUCED_DEFERRED) {
 | 
						|
 		inet_csk(sk)->icsk_af_ops->mtu_reduced(sk);
 | 
						|
 		__sock_put(sk);
 | 
						|
 	}
 |