From 79f4a70cb8e989e309f06829ddf132a86b0d5a8c Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sat, 18 Feb 2023 12:13:14 +0100 Subject: [PATCH] 5.4-stable patches added patches: i40e-add-double-of-vlan-header-when-computing-the-max-mtu.patch ixgbe-allow-to-increase-mtu-to-3k-with-xdp-enabled.patch net-bgmac-fix-bcm5358-support-by-setting-correct-flags.patch revert-squashfs-harden-sanity-check-in-squashfs_read_xattr_id_table.patch sctp-sctp_sock_filter-avoid-list_entry-on-possibly-empty-list.patch --- ...an-header-when-computing-the-max-mtu.patch | 33 ++++++++ ...-increase-mtu-to-3k-with-xdp-enabled.patch | 75 +++++++++++++++++++ ...358-support-by-setting-correct-flags.patch | 51 +++++++++++++ ...heck-in-squashfs_read_xattr_id_table.patch | 34 +++++++++ ...id-list_entry-on-possibly-empty-list.patch | 37 +++++++++ queue-5.4/series | 5 ++ 6 files changed, 235 insertions(+) create mode 100644 queue-5.4/i40e-add-double-of-vlan-header-when-computing-the-max-mtu.patch create mode 100644 queue-5.4/ixgbe-allow-to-increase-mtu-to-3k-with-xdp-enabled.patch create mode 100644 queue-5.4/net-bgmac-fix-bcm5358-support-by-setting-correct-flags.patch create mode 100644 queue-5.4/revert-squashfs-harden-sanity-check-in-squashfs_read_xattr_id_table.patch create mode 100644 queue-5.4/sctp-sctp_sock_filter-avoid-list_entry-on-possibly-empty-list.patch diff --git a/queue-5.4/i40e-add-double-of-vlan-header-when-computing-the-max-mtu.patch b/queue-5.4/i40e-add-double-of-vlan-header-when-computing-the-max-mtu.patch new file mode 100644 index 00000000000..b4a01ce528f --- /dev/null +++ b/queue-5.4/i40e-add-double-of-vlan-header-when-computing-the-max-mtu.patch @@ -0,0 +1,33 @@ +From ce45ffb815e8e238f05de1630be3969b6bb15e4e Mon Sep 17 00:00:00 2001 +From: Jason Xing +Date: Wed, 8 Feb 2023 10:43:33 +0800 +Subject: i40e: add double of VLAN header when computing the max MTU + +From: Jason Xing + +commit ce45ffb815e8e238f05de1630be3969b6bb15e4e upstream. + +Include the second VLAN HLEN into account when computing the maximum +MTU size as other drivers do. + +Fixes: 0c8493d90b6b ("i40e: add XDP support for pass and drop actions") +Signed-off-by: Jason Xing +Reviewed-by: Alexander Duyck +Tested-by: Chandan Kumar Rout (A Contingent Worker at Intel) +Signed-off-by: Tony Nguyen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/ethernet/intel/i40e/i40e_main.c ++++ b/drivers/net/ethernet/intel/i40e/i40e_main.c +@@ -2702,7 +2702,7 @@ static int i40e_change_mtu(struct net_de + struct i40e_pf *pf = vsi->back; + + if (i40e_enabled_xdp_vsi(vsi)) { +- int frame_size = new_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN; ++ int frame_size = new_mtu + I40E_PACKET_HDR_PAD; + + if (frame_size > i40e_max_xdp_frame_size(vsi)) + return -EINVAL; diff --git a/queue-5.4/ixgbe-allow-to-increase-mtu-to-3k-with-xdp-enabled.patch b/queue-5.4/ixgbe-allow-to-increase-mtu-to-3k-with-xdp-enabled.patch new file mode 100644 index 00000000000..9fb787326a6 --- /dev/null +++ b/queue-5.4/ixgbe-allow-to-increase-mtu-to-3k-with-xdp-enabled.patch @@ -0,0 +1,75 @@ +From f9cd6a4418bac6a046ee78382423b1ae7565fb24 Mon Sep 17 00:00:00 2001 +From: Jason Xing +Date: Wed, 8 Feb 2023 10:43:32 +0800 +Subject: ixgbe: allow to increase MTU to 3K with XDP enabled + +From: Jason Xing + +commit f9cd6a4418bac6a046ee78382423b1ae7565fb24 upstream. + +Recently I encountered one case where I cannot increase the MTU size +directly from 1500 to a much bigger value with XDP enabled if the +server is equipped with IXGBE card, which happened on thousands of +servers in production environment. After applying the current patch, +we can set the maximum MTU size to 3K. + +This patch follows the behavior of changing MTU as i40e/ice does. + +References: +[1] commit 23b44513c3e6 ("ice: allow 3k MTU for XDP") +[2] commit 0c8493d90b6b ("i40e: add XDP support for pass and drop actions") + +Fixes: fabf1bce103a ("ixgbe: Prevent unsupported configurations with XDP") +Signed-off-by: Jason Xing +Reviewed-by: Alexander Duyck +Tested-by: Chandan Kumar Rout (A Contingent Worker at Intel) +Signed-off-by: Tony Nguyen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 25 ++++++++++++++++--------- + 1 file changed, 16 insertions(+), 9 deletions(-) + +--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c ++++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +@@ -6722,6 +6722,18 @@ static void ixgbe_free_all_rx_resources( + } + + /** ++ * ixgbe_max_xdp_frame_size - returns the maximum allowed frame size for XDP ++ * @adapter: device handle, pointer to adapter ++ */ ++static int ixgbe_max_xdp_frame_size(struct ixgbe_adapter *adapter) ++{ ++ if (PAGE_SIZE >= 8192 || adapter->flags2 & IXGBE_FLAG2_RX_LEGACY) ++ return IXGBE_RXBUFFER_2K; ++ else ++ return IXGBE_RXBUFFER_3K; ++} ++ ++/** + * ixgbe_change_mtu - Change the Maximum Transfer Unit + * @netdev: network interface device structure + * @new_mtu: new value for maximum frame size +@@ -6732,18 +6744,13 @@ static int ixgbe_change_mtu(struct net_d + { + struct ixgbe_adapter *adapter = netdev_priv(netdev); + +- if (adapter->xdp_prog) { ++ if (ixgbe_enabled_xdp_adapter(adapter)) { + int new_frame_size = new_mtu + ETH_HLEN + ETH_FCS_LEN + + VLAN_HLEN; +- int i; +- +- for (i = 0; i < adapter->num_rx_queues; i++) { +- struct ixgbe_ring *ring = adapter->rx_ring[i]; + +- if (new_frame_size > ixgbe_rx_bufsz(ring)) { +- e_warn(probe, "Requested MTU size is not supported with XDP\n"); +- return -EINVAL; +- } ++ if (new_frame_size > ixgbe_max_xdp_frame_size(adapter)) { ++ e_warn(probe, "Requested MTU size is not supported with XDP\n"); ++ return -EINVAL; + } + } + diff --git a/queue-5.4/net-bgmac-fix-bcm5358-support-by-setting-correct-flags.patch b/queue-5.4/net-bgmac-fix-bcm5358-support-by-setting-correct-flags.patch new file mode 100644 index 00000000000..a45b73a7deb --- /dev/null +++ b/queue-5.4/net-bgmac-fix-bcm5358-support-by-setting-correct-flags.patch @@ -0,0 +1,51 @@ +From d61615c366a489646a1bfe5b33455f916762d5f4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Wed, 8 Feb 2023 10:16:37 +0100 +Subject: net: bgmac: fix BCM5358 support by setting correct flags +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Rafał Miłecki + +commit d61615c366a489646a1bfe5b33455f916762d5f4 upstream. + +Code blocks handling BCMA_CHIP_ID_BCM5357 and BCMA_CHIP_ID_BCM53572 were +incorrectly unified. Chip package values are not unique and cannot be +checked independently. They are meaningful only in a context of a given +chip. + +Packages BCM5358 and BCM47188 share the same value but then belong to +different chips. Code unification resulted in treating BCM5358 as +BCM47188 and broke its initialization. + +Link: https://github.com/openwrt/openwrt/issues/8278 +Fixes: cb1b0f90acfe ("net: ethernet: bgmac: unify code of the same family") +Cc: Jon Mason +Signed-off-by: Rafał Miłecki +Reviewed-by: Florian Fainelli +Link: https://lore.kernel.org/r/20230208091637.16291-1-zajec5@gmail.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/broadcom/bgmac-bcma.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/net/ethernet/broadcom/bgmac-bcma.c ++++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c +@@ -228,12 +228,12 @@ static int bgmac_probe(struct bcma_devic + bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST; + bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL1; + bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_PHY; +- if (ci->pkg == BCMA_PKG_ID_BCM47188 || +- ci->pkg == BCMA_PKG_ID_BCM47186) { ++ if ((ci->id == BCMA_CHIP_ID_BCM5357 && ci->pkg == BCMA_PKG_ID_BCM47186) || ++ (ci->id == BCMA_CHIP_ID_BCM53572 && ci->pkg == BCMA_PKG_ID_BCM47188)) { + bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_RGMII; + bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED; + } +- if (ci->pkg == BCMA_PKG_ID_BCM5358) ++ if (ci->id == BCMA_CHIP_ID_BCM5357 && ci->pkg == BCMA_PKG_ID_BCM5358) + bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_EPHYRMII; + break; + case BCMA_CHIP_ID_BCM53573: diff --git a/queue-5.4/revert-squashfs-harden-sanity-check-in-squashfs_read_xattr_id_table.patch b/queue-5.4/revert-squashfs-harden-sanity-check-in-squashfs_read_xattr_id_table.patch new file mode 100644 index 00000000000..974691a3a2d --- /dev/null +++ b/queue-5.4/revert-squashfs-harden-sanity-check-in-squashfs_read_xattr_id_table.patch @@ -0,0 +1,34 @@ +From a5b21d8d791cd4db609d0bbcaa9e0c7e019888d1 Mon Sep 17 00:00:00 2001 +From: Andrew Morton +Date: Thu, 2 Feb 2023 18:07:35 -0800 +Subject: revert "squashfs: harden sanity check in squashfs_read_xattr_id_table" + +From: Andrew Morton + +commit a5b21d8d791cd4db609d0bbcaa9e0c7e019888d1 upstream. + +This fix was nacked by Philip, for reasons identified in the email linked +below. + +Link: https://lkml.kernel.org/r/68f15d67-8945-2728-1f17-5b53a80ec52d@squashfs.org.uk +Fixes: 72e544b1b28325 ("squashfs: harden sanity check in squashfs_read_xattr_id_table") +Cc: Alexey Khoroshilov +Cc: Fedor Pchelkin +Cc: Phillip Lougher +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman +--- + fs/squashfs/xattr_id.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/squashfs/xattr_id.c ++++ b/fs/squashfs/xattr_id.c +@@ -76,7 +76,7 @@ __le64 *squashfs_read_xattr_id_table(str + /* Sanity check values */ + + /* there is always at least one xattr id */ +- if (*xattr_ids <= 0) ++ if (*xattr_ids == 0) + return ERR_PTR(-EINVAL); + + len = SQUASHFS_XATTR_BLOCK_BYTES(*xattr_ids); diff --git a/queue-5.4/sctp-sctp_sock_filter-avoid-list_entry-on-possibly-empty-list.patch b/queue-5.4/sctp-sctp_sock_filter-avoid-list_entry-on-possibly-empty-list.patch new file mode 100644 index 00000000000..0fa78e91396 --- /dev/null +++ b/queue-5.4/sctp-sctp_sock_filter-avoid-list_entry-on-possibly-empty-list.patch @@ -0,0 +1,37 @@ +From a1221703a0f75a9d81748c516457e0fc76951496 Mon Sep 17 00:00:00 2001 +From: Pietro Borrello +Date: Thu, 9 Feb 2023 12:13:05 +0000 +Subject: sctp: sctp_sock_filter(): avoid list_entry() on possibly empty list + +From: Pietro Borrello + +commit a1221703a0f75a9d81748c516457e0fc76951496 upstream. + +Use list_is_first() to check whether tsp->asoc matches the first +element of ep->asocs, as the list is not guaranteed to have an entry. + +Fixes: 8f840e47f190 ("sctp: add the sctp_diag.c file") +Signed-off-by: Pietro Borrello +Acked-by: Xin Long +Link: https://lore.kernel.org/r/20230208-sctp-filter-v2-1-6e1f4017f326@diag.uniroma1.it +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + net/sctp/diag.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +--- a/net/sctp/diag.c ++++ b/net/sctp/diag.c +@@ -349,11 +349,9 @@ static int sctp_sock_filter(struct sctp_ + struct sctp_comm_param *commp = p; + struct sock *sk = ep->base.sk; + const struct inet_diag_req_v2 *r = commp->r; +- struct sctp_association *assoc = +- list_entry(ep->asocs.next, struct sctp_association, asocs); + + /* find the ep only once through the transports by this condition */ +- if (tsp->asoc != assoc) ++ if (!list_is_first(&tsp->asoc->asocs, &ep->asocs)) + return 0; + + if (r->sdiag_family != AF_UNSPEC && sk->sk_family != r->sdiag_family) diff --git a/queue-5.4/series b/queue-5.4/series index a5001b81079..5d58dbecd30 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -135,3 +135,8 @@ sched-psi-fix-use-after-free-in-ep_remove_wait_queue.patch hugetlb-check-for-undefined-shift-on-32-bit-architectures.patch revert-mm-always-release-pages-to-the-buddy-allocator-in-memblock_free_late.patch net-fix-unwanted-sign-extension-in-netdev_stats_to_stats64.patch +revert-squashfs-harden-sanity-check-in-squashfs_read_xattr_id_table.patch +ixgbe-allow-to-increase-mtu-to-3k-with-xdp-enabled.patch +i40e-add-double-of-vlan-header-when-computing-the-max-mtu.patch +net-bgmac-fix-bcm5358-support-by-setting-correct-flags.patch +sctp-sctp_sock_filter-avoid-list_entry-on-possibly-empty-list.patch -- 2.47.2