Skip to content
  1. Apr 26, 2024
    • Eric Dumazet's avatar
      ipv6: annotate some data-races around sk->sk_prot · ff8710da
      Eric Dumazet authored
      
      
      commit 086d4905 upstream.
      
      IPv6 has this hack changing sk->sk_prot when an IPv6 socket
      is 'converted' to an IPv4 one with IPV6_ADDRFORM option.
      
      This operation is only performed for TCP and UDP, knowing
      their 'struct proto' for the two network families are populated
      in the same way, and can not disappear while a reader
      might use and dereference sk->sk_prot.
      
      If we think about it all reads of sk->sk_prot while
      either socket lock or RTNL is not acquired should be using READ_ONCE().
      
      Also note that other layers like MPTCP, XFRM, CHELSIO_TLS also
      write over sk->sk_prot.
      
      BUG: KCSAN: data-race in inet6_recvmsg / ipv6_setsockopt
      
      write to 0xffff8881386f7aa8 of 8 bytes by task 26932 on cpu 0:
       do_ipv6_setsockopt net/ipv6/ipv6_sockglue.c:492 [inline]
       ipv6_setsockopt+0x3758/0x3910 net/ipv6/ipv6_sockglue.c:1019
       udpv6_setsockopt+0x85/0x90 net/ipv6/udp.c:1649
       sock_common_setsockopt+0x5d/0x70 net/core/sock.c:3489
       __sys_setsockopt+0x209/0x2a0 net/socket.c:2180
       __do_sys_setsockopt net/socket.c:2191 [inline]
       __se_sys_setsockopt net/socket.c:2188 [inline]
       __x64_sys_setsockopt+0x62/0x70 net/socket.c:2188
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x44/0xd0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x44/0xae
      
      read to 0xffff8881386f7aa8 of 8 bytes by task 26911 on cpu 1:
       inet6_recvmsg+0x7a/0x210 net/ipv6/af_inet6.c:659
       ____sys_recvmsg+0x16c/0x320
       ___sys_recvmsg net/socket.c:2674 [inline]
       do_recvmmsg+0x3f5/0xae0 net/socket.c:2768
       __sys_recvmmsg net/socket.c:2847 [inline]
       __do_sys_recvmmsg net/socket.c:2870 [inline]
       __se_sys_recvmmsg net/socket.c:2863 [inline]
       __x64_sys_recvmmsg+0xde/0x160 net/socket.c:2863
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x44/0xd0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x44/0xae
      
      value changed: 0xffffffff85e0e980 -> 0xffffffff85e01580
      
      Reported by Kernel Concurrency Sanitizer on:
      CPU: 1 PID: 26911 Comm: syz-executor.3 Not tainted 5.17.0-rc2-syzkaller-00316-g0457e5153e0e-dirty #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarPaul Gortmaker <paulg@kernel.org>
      Signed-off-by: default avatarBruce Ashfield <bruce.ashfield@gmail.com>
      ff8710da
    • Kuniyuki Iwashima's avatar
      tcp: Fix data races around icsk->icsk_af_ops. · e8c2eafa
      Kuniyuki Iwashima authored
      
      
      commit f49cd2f4 upstream.
      
      setsockopt(IPV6_ADDRFORM) and tcp_v6_connect() change icsk->icsk_af_ops
      under lock_sock(), but tcp_(get|set)sockopt() read it locklessly.  To
      avoid load/store tearing, we need to add READ_ONCE() and WRITE_ONCE()
      for the reads and writes.
      
      Thanks to Eric Dumazet for providing the syzbot report:
      
      BUG: KCSAN: data-race in tcp_setsockopt / tcp_v6_connect
      
      write to 0xffff88813c624518 of 8 bytes by task 23936 on cpu 0:
      tcp_v6_connect+0x5b3/0xce0 net/ipv6/tcp_ipv6.c:240
      __inet_stream_connect+0x159/0x6d0 net/ipv4/af_inet.c:660
      inet_stream_connect+0x44/0x70 net/ipv4/af_inet.c:724
      __sys_connect_file net/socket.c:1976 [inline]
      __sys_connect+0x197/0x1b0 net/socket.c:1993
      __do_sys_connect net/socket.c:2003 [inline]
      __se_sys_connect net/socket.c:2000 [inline]
      __x64_sys_connect+0x3d/0x50 net/socket.c:2000
      do_syscall_x64 arch/x86/entry/common.c:50 [inline]
      do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80
      entry_SYSCALL_64_after_hwframe+0x63/0xcd
      
      read to 0xffff88813c624518 of 8 bytes by task 23937 on cpu 1:
      tcp_setsockopt+0x147/0x1c80 net/ipv4/tcp.c:3789
      sock_common_setsockopt+0x5d/0x70 net/core/sock.c:3585
      __sys_setsockopt+0x212/0x2b0 net/socket.c:2252
      __do_sys_setsockopt net/socket.c:2263 [inline]
      __se_sys_setsockopt net/socket.c:2260 [inline]
      __x64_sys_setsockopt+0x62/0x70 net/socket.c:2260
      do_syscall_x64 arch/x86/entry/common.c:50 [inline]
      do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80
      entry_SYSCALL_64_after_hwframe+0x63/0xcd
      
      value changed: 0xffffffff8539af68 -> 0xffffffff8539aff8
      
      Reported by Kernel Concurrency Sanitizer on:
      CPU: 1 PID: 23937 Comm: syz-executor.5 Not tainted
      6.0.0-rc4-syzkaller-00331-g4ed9c1e971b1-dirty #0
      
      Hardware name: Google Google Compute Engine/Google Compute Engine,
      BIOS Google 08/26/2022
      
      Fixes: 1da177e4 ("Linux-2.6.12-rc2")
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Reported-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarPaul Gortmaker <paulg@kernel.org>
      Signed-off-by: default avatarBruce Ashfield <bruce.ashfield@gmail.com>
      e8c2eafa
  2. Apr 16, 2024
    • Bruce Ashfield's avatar
      Merge tag 'v5.15.155' into v5.15/standard/base · 97a728f8
      Bruce Ashfield authored
      This is the 5.15.155 stable release
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmYaZkEACgkQONu9yGCS
      # aT7WPQ//UOemmbVF8Xpa/B1YJ0SRX03M+Q2wD1sLmhVrQjjBtRePsGfj3Zrl/TqK
      # 0/3kDhkhwX33dSPnpQsmzDkrJwBi6Cj6j88JSubYeSV8WWwfR0mivNBT7peH09pr
      # Q+41GFcM7Yyul6ycXZ5Z9T1W/s2x1foY7UUeACQvWgXnfgNbPh25VEhj76wvgGCU
      # aOIfHpRMI/FSiz3tbGFsg9IFRKXbRh33d2HpighhV1a9cW2lmG/IjtxykAnOFgot
      # ARvkw2PttXN6O05K+FXBdkv744jYLwEr8O7RuBQlfjfiH4R1Cg2IbDbYFuNgcUs7
      # Cv5oN0YL+nAtho05/JmllB1/0pzJ9Fj3lrm0JlKo/DsjuKIAy5jwyC6WjjpOKhVT
      # FTCUOEWHg1Qct38vG0kgylnXmD7qUwXYB3VAIOXcBEtr6f4nYeeZG/70CP6Esq7M
      # wzxofybkZgvq39TCK7PFf0cyzynUmOGJ9eizPdNFR9SfvAcV3/vPQcrENS0Vnlsn
      # FMwrXPZlNkhhJrN68VVONX9NjAsw0HJw53f+Pd7jjp48DPgK+QEj1zg1w6mz5TH3
      # E8GUV0lgHCZ5Y4CArATb12S9N82PXXQFvXkVT+ajR60Oaf3dSOM/hy5P6YH+WCN3
      # E7Qha7isjx9+79UY89OtnbKW5htbU2thKA2LGSoj5Y/GZMA+32U=
      # =ETyc
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Sat 13 Apr 2024 07:02:25 AM EDT
      # gpg:                using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
      # gpg: Can't check signature: No public key
      97a728f8
    • Bruce Ashfield's avatar
      Merge tag 'v5.15.154' into v5.15/standard/base · d7416e8d
      Bruce Ashfield authored
      This is the 5.15.154 stable release
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmYWoCsACgkQONu9yGCS
      # aT4kexAAq18sMargvRMhSjsMtcrT8A/a9riOcjRjf60TfJOPSMYsHSx5rc7wuOr5
      # j7LenaBJLR1nbBYuxzmH+RlXHI9CNqp24UHup6Qj8KeAxW9efkEP2Q27Dylk+Lke
      # XA7lnC2xceS/eCU1uNtYLjnzc2FfxpOdYlAAaNbxIhbn3Z2yomWD3FcwJyVAPdU1
      # gl8TWqMFG+RDYy3xB8zE/AV+9J1X1UQgjhOX+uMOwmb8XBJl4GCSDNMMTf62XqfZ
      # g0Y5y+h/9nhT4esDrkWQkUd9P//3oyVJ/z2CdsiJ9wJXjHJSOmna/MbZEJjkTUzH
      # pxrYWNSCoMLpWxy8f9ajbFoOnDN7pAAuShNEFzFqjUEx06UdvTEG/osPSCFHCwpr
      # 3HdsiPCkjalyK9NESLAKj6s99A0CN7vUT1QeJsXwLcYlAs7TBnC9ITMa2DpvjZ2k
      # 7flENlsIrZHfLjEre7Wt28AlDYECkHEHr01W3J2Tz15K2F3telmsUd6jnVKyqmjC
      # 6NkVQUUqflTtc9fjUBxSqKGmGcCwMEzcy74AG03B3Rf7etCGWdyFglhLW7Ce1600
      # +b9rNjHEcnTfaOQ1Z2iD8yC2leGUaedbIpmmtUwqPS4RcKzbLV8Fs8yOYlD13jPO
      # CH9qc8yhA5BWf2+kZiiyTLeQY5mhvTfhHL1UADkCjk+phQsq7Sk=
      # =dFke
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Wed 10 Apr 2024 10:20:27 AM EDT
      # gpg:                using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
      # gpg: Can't check signature: No public key
      d7416e8d
  3. Apr 13, 2024