]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Jul 2022 15:41:37 +0000 (17:41 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Jul 2022 15:41:37 +0000 (17:41 +0200)
added patches:
ip-fix-data-races-around-sysctl_ip_default_ttl.patch
r8152-fix-a-wol-issue.patch

queue-5.15/ip-fix-data-races-around-sysctl_ip_default_ttl.patch [new file with mode: 0644]
queue-5.15/r8152-fix-a-wol-issue.patch [new file with mode: 0644]
queue-5.15/series

diff --git a/queue-5.15/ip-fix-data-races-around-sysctl_ip_default_ttl.patch b/queue-5.15/ip-fix-data-races-around-sysctl_ip_default_ttl.patch
new file mode 100644 (file)
index 0000000..2aa4001
--- /dev/null
@@ -0,0 +1,100 @@
+From 8281b7ec5c56b71cb2cc5a1728b41607be66959c Mon Sep 17 00:00:00 2001
+From: Kuniyuki Iwashima <kuniyu@amazon.com>
+Date: Wed, 13 Jul 2022 13:51:51 -0700
+Subject: ip: Fix data-races around sysctl_ip_default_ttl.
+
+From: Kuniyuki Iwashima <kuniyu@amazon.com>
+
+commit 8281b7ec5c56b71cb2cc5a1728b41607be66959c upstream.
+
+While reading sysctl_ip_default_ttl, it can be changed concurrently.
+Thus, we need to add READ_ONCE() to its readers.
+
+Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
+Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/netronome/nfp/flower/action.c |    2 +-
+ include/net/route.h                                |    2 +-
+ net/ipv4/ip_sockglue.c                             |    2 +-
+ net/ipv4/netfilter/nf_reject_ipv4.c                |    4 ++--
+ net/ipv4/proc.c                                    |    2 +-
+ net/netfilter/nf_synproxy_core.c                   |    2 +-
+ 6 files changed, 7 insertions(+), 7 deletions(-)
+
+--- a/drivers/net/ethernet/netronome/nfp/flower/action.c
++++ b/drivers/net/ethernet/netronome/nfp/flower/action.c
+@@ -472,7 +472,7 @@ nfp_fl_set_tun(struct nfp_app *app, stru
+                       set_tun->ttl = ip4_dst_hoplimit(&rt->dst);
+                       ip_rt_put(rt);
+               } else {
+-                      set_tun->ttl = net->ipv4.sysctl_ip_default_ttl;
++                      set_tun->ttl = READ_ONCE(net->ipv4.sysctl_ip_default_ttl);
+               }
+       }
+--- a/include/net/route.h
++++ b/include/net/route.h
+@@ -360,7 +360,7 @@ static inline int ip4_dst_hoplimit(const
+       struct net *net = dev_net(dst->dev);
+       if (hoplimit == 0)
+-              hoplimit = net->ipv4.sysctl_ip_default_ttl;
++              hoplimit = READ_ONCE(net->ipv4.sysctl_ip_default_ttl);
+       return hoplimit;
+ }
+--- a/net/ipv4/ip_sockglue.c
++++ b/net/ipv4/ip_sockglue.c
+@@ -1597,7 +1597,7 @@ static int do_ip_getsockopt(struct sock
+       {
+               struct net *net = sock_net(sk);
+               val = (inet->uc_ttl == -1 ?
+-                     net->ipv4.sysctl_ip_default_ttl :
++                     READ_ONCE(net->ipv4.sysctl_ip_default_ttl) :
+                      inet->uc_ttl);
+               break;
+       }
+--- a/net/ipv4/netfilter/nf_reject_ipv4.c
++++ b/net/ipv4/netfilter/nf_reject_ipv4.c
+@@ -62,7 +62,7 @@ struct sk_buff *nf_reject_skb_v4_tcp_res
+       skb_reserve(nskb, LL_MAX_HEADER);
+       niph = nf_reject_iphdr_put(nskb, oldskb, IPPROTO_TCP,
+-                                 net->ipv4.sysctl_ip_default_ttl);
++                                 READ_ONCE(net->ipv4.sysctl_ip_default_ttl));
+       nf_reject_ip_tcphdr_put(nskb, oldskb, oth);
+       niph->tot_len = htons(nskb->len);
+       ip_send_check(niph);
+@@ -115,7 +115,7 @@ struct sk_buff *nf_reject_skb_v4_unreach
+       skb_reserve(nskb, LL_MAX_HEADER);
+       niph = nf_reject_iphdr_put(nskb, oldskb, IPPROTO_ICMP,
+-                                 net->ipv4.sysctl_ip_default_ttl);
++                                 READ_ONCE(net->ipv4.sysctl_ip_default_ttl));
+       skb_reset_transport_header(nskb);
+       icmph = skb_put_zero(nskb, sizeof(struct icmphdr));
+--- a/net/ipv4/proc.c
++++ b/net/ipv4/proc.c
+@@ -387,7 +387,7 @@ static int snmp_seq_show_ipstats(struct
+       seq_printf(seq, "\nIp: %d %d",
+                  IPV4_DEVCONF_ALL(net, FORWARDING) ? 1 : 2,
+-                 net->ipv4.sysctl_ip_default_ttl);
++                 READ_ONCE(net->ipv4.sysctl_ip_default_ttl));
+       BUILD_BUG_ON(offsetof(struct ipstats_mib, mibs) != 0);
+       snmp_get_cpu_field64_batch(buff64, snmp4_ipstats_list,
+--- a/net/netfilter/nf_synproxy_core.c
++++ b/net/netfilter/nf_synproxy_core.c
+@@ -427,7 +427,7 @@ synproxy_build_ip(struct net *net, struc
+       iph->tos        = 0;
+       iph->id         = 0;
+       iph->frag_off   = htons(IP_DF);
+-      iph->ttl        = net->ipv4.sysctl_ip_default_ttl;
++      iph->ttl        = READ_ONCE(net->ipv4.sysctl_ip_default_ttl);
+       iph->protocol   = IPPROTO_TCP;
+       iph->check      = 0;
+       iph->saddr      = saddr;
diff --git a/queue-5.15/r8152-fix-a-wol-issue.patch b/queue-5.15/r8152-fix-a-wol-issue.patch
new file mode 100644 (file)
index 0000000..8c5637e
--- /dev/null
@@ -0,0 +1,79 @@
+From cdf0b86b250fd3c1c3e120c86583ea510c52e4ce Mon Sep 17 00:00:00 2001
+From: Hayes Wang <hayeswang@realtek.com>
+Date: Mon, 18 Jul 2022 16:21:20 +0800
+Subject: r8152: fix a WOL issue
+
+From: Hayes Wang <hayeswang@realtek.com>
+
+commit cdf0b86b250fd3c1c3e120c86583ea510c52e4ce upstream.
+
+This fixes that the platform is waked by an unexpected packet. The
+size and range of FIFO is different when the device enters S3 state,
+so it is necessary to correct some settings when suspending.
+
+Regardless of jumbo frame, set RMS to 1522 and MTPS to MTPS_DEFAULT.
+Besides, enable MCU_BORW_EN to update the method of calculating the
+pointer of data. Then, the hardware could get the correct data.
+
+Fixes: 195aae321c82 ("r8152: support new chips")
+Signed-off-by: Hayes Wang <hayeswang@realtek.com>
+Link: https://lore.kernel.org/r/20220718082120.10957-391-nic_swsd@realtek.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/usb/r8152.c |   16 ++++++++++++++--
+ 1 file changed, 14 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/usb/r8152.c
++++ b/drivers/net/usb/r8152.c
+@@ -32,7 +32,7 @@
+ #define NETNEXT_VERSION               "12"
+ /* Information for net */
+-#define NET_VERSION           "12"
++#define NET_VERSION           "13"
+ #define DRIVER_VERSION                "v1." NETNEXT_VERSION "." NET_VERSION
+ #define DRIVER_AUTHOR "Realtek linux nic maintainers <nic_swsd@realtek.com>"
+@@ -5915,7 +5915,8 @@ static void r8153_enter_oob(struct r8152
+       wait_oob_link_list_ready(tp);
+-      ocp_write_word(tp, MCU_TYPE_PLA, PLA_RMS, mtu_to_size(tp->netdev->mtu));
++      ocp_write_word(tp, MCU_TYPE_PLA, PLA_RMS, 1522);
++      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_MTPS, MTPS_DEFAULT);
+       switch (tp->version) {
+       case RTL_VER_03:
+@@ -5951,6 +5952,10 @@ static void r8153_enter_oob(struct r8152
+       ocp_data |= NOW_IS_OOB | DIS_MCU_CLROOB;
+       ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data);
++      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7);
++      ocp_data |= MCU_BORW_EN;
++      ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data);
++
+       rxdy_gated_en(tp, false);
+       ocp_data = ocp_read_dword(tp, MCU_TYPE_PLA, PLA_RCR);
+@@ -6553,6 +6558,9 @@ static void rtl8156_down(struct r8152 *t
+       rtl_disable(tp);
+       rtl_reset_bmu(tp);
++      ocp_write_word(tp, MCU_TYPE_PLA, PLA_RMS, 1522);
++      ocp_write_byte(tp, MCU_TYPE_PLA, PLA_MTPS, MTPS_DEFAULT);
++
+       /* Clear teredo wake event. bit[15:8] is the teredo wakeup
+        * type. Set it to zero. bits[7:0] are the W1C bits about
+        * the events. Set them to all 1 to clear them.
+@@ -6563,6 +6571,10 @@ static void rtl8156_down(struct r8152 *t
+       ocp_data |= NOW_IS_OOB;
+       ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data);
++      ocp_data = ocp_read_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7);
++      ocp_data |= MCU_BORW_EN;
++      ocp_write_word(tp, MCU_TYPE_PLA, PLA_SFF_STS_7, ocp_data);
++
+       rtl_rx_vlan_en(tp, true);
+       rxdy_gated_en(tp, false);
index 3cbe2485bf4a5d8b839b3c5f4167f81e93d47f61..281aac168299a25147e7a741272937920dba006c 100644 (file)
@@ -24,3 +24,5 @@ xfs-rename-the-next_agno-perag-iteration-variable.patch
 xfs-terminate-perag-iteration-reliably-on-agcount.patch
 xfs-fix-perag-reference-leak-on-iteration-race-with-growfs.patch
 xfs-prevent-a-warn_once-in-xfs_ioc_attr_list.patch
+r8152-fix-a-wol-issue.patch
+ip-fix-data-races-around-sysctl_ip_default_ttl.patch