]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
fixes for 4.9
authorSasha Levin <sashal@kernel.org>
Tue, 12 Nov 2019 14:27:15 +0000 (09:27 -0500)
committerSasha Levin <sashal@kernel.org>
Tue, 12 Nov 2019 14:27:15 +0000 (09:27 -0500)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.9/net-prevent-load-store-tearing-on-sk-sk_stamp.patch [new file with mode: 0644]
queue-4.9/series

diff --git a/queue-4.9/net-prevent-load-store-tearing-on-sk-sk_stamp.patch b/queue-4.9/net-prevent-load-store-tearing-on-sk-sk_stamp.patch
new file mode 100644 (file)
index 0000000..cd9a0ec
--- /dev/null
@@ -0,0 +1,50 @@
+From b9652677e4c5c32192a1b6c42eaa902dd9197cc4 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 4 Nov 2019 21:38:43 -0800
+Subject: net: prevent load/store tearing on sk->sk_stamp
+
+From: Eric Dumazet <edumazet@google.com>
+
+[ Upstream commit f75359f3ac855940c5718af10ba089b8977bf339 ]
+
+Add a couple of READ_ONCE() and WRITE_ONCE() to prevent
+load-tearing and store-tearing in sock_read_timestamp()
+and sock_write_timestamp()
+
+This might prevent another KCSAN report.
+
+Fixes: 3a0ed3e96197 ("sock: Make sock->sk_stamp thread-safe")
+Signed-off-by: Eric Dumazet <edumazet@google.com>
+Cc: Deepa Dinamani <deepa.kernel@gmail.com>
+Acked-by: Deepa Dinamani <deepa.kernel@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ include/net/sock.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/net/sock.h b/include/net/sock.h
+index 469c012a6d014..d8d14ae8892a7 100644
+--- a/include/net/sock.h
++++ b/include/net/sock.h
+@@ -2142,7 +2142,7 @@ static inline ktime_t sock_read_timestamp(struct sock *sk)
+       return kt;
+ #else
+-      return sk->sk_stamp;
++      return READ_ONCE(sk->sk_stamp);
+ #endif
+ }
+@@ -2153,7 +2153,7 @@ static inline void sock_write_timestamp(struct sock *sk, ktime_t kt)
+       sk->sk_stamp = kt;
+       write_sequnlock(&sk->sk_stamp_seq);
+ #else
+-      sk->sk_stamp = kt;
++      WRITE_ONCE(sk->sk_stamp, kt);
+ #endif
+ }
+-- 
+2.20.1
+
index 6b5b3516a3e63dbe3783fef62b1fbdbd853568f0..52ae35ea6d4a2a96a22ea38462f0f7ab19d6ca9a 100644 (file)
@@ -62,3 +62,4 @@ x86-apic-32-avoid-bogus-ldr-warnings.patch
 can-flexcan-disable-completely-the-ecc-mechanism.patch
 mm-filemap.c-don-t-initiate-writeback-if-mapping-has-no-dirty-pages.patch
 cgroup-writeback-don-t-switch-wbs-immediately-on-dead-wbs-if-the-memcg-is-dead.patch
+net-prevent-load-store-tearing-on-sk-sk_stamp.patch