From 10cc04c918b8eecfa88cd70b07070d3caec6db47 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 19 Oct 2023 19:49:52 +0200 Subject: [PATCH] drop ethtool patch from all queues --- ...-mod-state-of-verbose-no_mask-bitset.patch | 104 ------------------ queue-5.10/series | 1 - ...-mod-state-of-verbose-no_mask-bitset.patch | 104 ------------------ queue-5.15/series | 1 - ...-mod-state-of-verbose-no_mask-bitset.patch | 104 ------------------ queue-6.1/series | 1 - ...-mod-state-of-verbose-no_mask-bitset.patch | 104 ------------------ queue-6.5/series | 1 - 8 files changed, 420 deletions(-) delete mode 100644 queue-5.10/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch delete mode 100644 queue-5.15/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch delete mode 100644 queue-6.1/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch delete mode 100644 queue-6.5/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch diff --git a/queue-5.10/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch b/queue-5.10/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch deleted file mode 100644 index 8672ade1790..00000000000 --- a/queue-5.10/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch +++ /dev/null @@ -1,104 +0,0 @@ -From f76a812f0f10d0b21d77f2cb1118b131bc34f28f Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 9 Oct 2023 15:36:45 +0200 -Subject: ethtool: Fix mod state of verbose no_mask bitset - -From: Kory Maincent - -[ Upstream commit 108a36d07c01edbc5942d27c92494d1c6e4d45a0 ] - -A bitset without mask in a _SET request means we want exactly the bits in -the bitset to be set. This works correctly for compact format but when -verbose format is parsed, ethnl_update_bitset32_verbose() only sets the -bits present in the request bitset but does not clear the rest. The commit -6699170376ab fixes this issue by clearing the whole target bitmap before we -start iterating. The solution proposed brought an issue with the behavior -of the mod variable. As the bitset is always cleared the old val will -always differ to the new val. - -Fix it by adding a new temporary variable which save the state of the old -bitmap. - -Fixes: 6699170376ab ("ethtool: fix application of verbose no_mask bitset") -Signed-off-by: Kory Maincent -Reviewed-by: Simon Horman -Link: https://lore.kernel.org/r/20231009133645.44503-1-kory.maincent@bootlin.com -Signed-off-by: Jakub Kicinski -Signed-off-by: Sasha Levin ---- - net/ethtool/bitset.c | 32 ++++++++++++++++++++++++++------ - 1 file changed, 26 insertions(+), 6 deletions(-) - -diff --git a/net/ethtool/bitset.c b/net/ethtool/bitset.c -index 0515d6604b3b9..883ed9be81f9f 100644 ---- a/net/ethtool/bitset.c -+++ b/net/ethtool/bitset.c -@@ -431,8 +431,10 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - ethnl_string_array_t names, - struct netlink_ext_ack *extack, bool *mod) - { -+ u32 *orig_bitmap, *saved_bitmap = NULL; - struct nlattr *bit_attr; - bool no_mask; -+ bool dummy; - int rem; - int ret; - -@@ -448,8 +450,22 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - } - - no_mask = tb[ETHTOOL_A_BITSET_NOMASK]; -- if (no_mask) -- ethnl_bitmap32_clear(bitmap, 0, nbits, mod); -+ if (no_mask) { -+ unsigned int nwords = DIV_ROUND_UP(nbits, 32); -+ unsigned int nbytes = nwords * sizeof(u32); -+ -+ /* The bitmap size is only the size of the map part without -+ * its mask part. -+ */ -+ saved_bitmap = kcalloc(nwords, sizeof(u32), GFP_KERNEL); -+ if (!saved_bitmap) -+ return -ENOMEM; -+ memcpy(saved_bitmap, bitmap, nbytes); -+ ethnl_bitmap32_clear(bitmap, 0, nbits, &dummy); -+ orig_bitmap = saved_bitmap; -+ } else { -+ orig_bitmap = bitmap; -+ } - - nla_for_each_nested(bit_attr, tb[ETHTOOL_A_BITSET_BITS], rem) { - bool old_val, new_val; -@@ -458,13 +474,14 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - if (nla_type(bit_attr) != ETHTOOL_A_BITSET_BITS_BIT) { - NL_SET_ERR_MSG_ATTR(extack, bit_attr, - "only ETHTOOL_A_BITSET_BITS_BIT allowed in ETHTOOL_A_BITSET_BITS"); -- return -EINVAL; -+ ret = -EINVAL; -+ goto out; - } - ret = ethnl_parse_bit(&idx, &new_val, nbits, bit_attr, no_mask, - names, extack); - if (ret < 0) -- return ret; -- old_val = bitmap[idx / 32] & ((u32)1 << (idx % 32)); -+ goto out; -+ old_val = orig_bitmap[idx / 32] & ((u32)1 << (idx % 32)); - if (new_val != old_val) { - if (new_val) - bitmap[idx / 32] |= ((u32)1 << (idx % 32)); -@@ -474,7 +491,10 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - } - } - -- return 0; -+ ret = 0; -+out: -+ kfree(saved_bitmap); -+ return ret; - } - - static int ethnl_compact_sanity_checks(unsigned int nbits, --- -2.40.1 - diff --git a/queue-5.10/series b/queue-5.10/series index bcc6eb9c56a..86673e00afe 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -22,7 +22,6 @@ net-macsec-indicate-next-pn-update-when-offloading.patch net-phy-mscc-macsec-reject-pn-update-requests.patch ixgbe-fix-crash-with-empty-vf-macvlan-list.patch net-nfc-fix-races-in-nfc_llcp_sock_get-and-nfc_llcp_.patch -ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch pinctrl-renesas-rzn1-enable-missing-pinmux.patch nfc-nci-assert-requested-protocol-is-valid.patch workqueue-override-implicit-ordered-attribute-in-wor.patch diff --git a/queue-5.15/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch b/queue-5.15/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch deleted file mode 100644 index 24bcc3e4bf4..00000000000 --- a/queue-5.15/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch +++ /dev/null @@ -1,104 +0,0 @@ -From aa33590a57ca33b47f9f686d021f74ad53c26cd8 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 9 Oct 2023 15:36:45 +0200 -Subject: ethtool: Fix mod state of verbose no_mask bitset - -From: Kory Maincent - -[ Upstream commit 108a36d07c01edbc5942d27c92494d1c6e4d45a0 ] - -A bitset without mask in a _SET request means we want exactly the bits in -the bitset to be set. This works correctly for compact format but when -verbose format is parsed, ethnl_update_bitset32_verbose() only sets the -bits present in the request bitset but does not clear the rest. The commit -6699170376ab fixes this issue by clearing the whole target bitmap before we -start iterating. The solution proposed brought an issue with the behavior -of the mod variable. As the bitset is always cleared the old val will -always differ to the new val. - -Fix it by adding a new temporary variable which save the state of the old -bitmap. - -Fixes: 6699170376ab ("ethtool: fix application of verbose no_mask bitset") -Signed-off-by: Kory Maincent -Reviewed-by: Simon Horman -Link: https://lore.kernel.org/r/20231009133645.44503-1-kory.maincent@bootlin.com -Signed-off-by: Jakub Kicinski -Signed-off-by: Sasha Levin ---- - net/ethtool/bitset.c | 32 ++++++++++++++++++++++++++------ - 1 file changed, 26 insertions(+), 6 deletions(-) - -diff --git a/net/ethtool/bitset.c b/net/ethtool/bitset.c -index 0515d6604b3b9..883ed9be81f9f 100644 ---- a/net/ethtool/bitset.c -+++ b/net/ethtool/bitset.c -@@ -431,8 +431,10 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - ethnl_string_array_t names, - struct netlink_ext_ack *extack, bool *mod) - { -+ u32 *orig_bitmap, *saved_bitmap = NULL; - struct nlattr *bit_attr; - bool no_mask; -+ bool dummy; - int rem; - int ret; - -@@ -448,8 +450,22 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - } - - no_mask = tb[ETHTOOL_A_BITSET_NOMASK]; -- if (no_mask) -- ethnl_bitmap32_clear(bitmap, 0, nbits, mod); -+ if (no_mask) { -+ unsigned int nwords = DIV_ROUND_UP(nbits, 32); -+ unsigned int nbytes = nwords * sizeof(u32); -+ -+ /* The bitmap size is only the size of the map part without -+ * its mask part. -+ */ -+ saved_bitmap = kcalloc(nwords, sizeof(u32), GFP_KERNEL); -+ if (!saved_bitmap) -+ return -ENOMEM; -+ memcpy(saved_bitmap, bitmap, nbytes); -+ ethnl_bitmap32_clear(bitmap, 0, nbits, &dummy); -+ orig_bitmap = saved_bitmap; -+ } else { -+ orig_bitmap = bitmap; -+ } - - nla_for_each_nested(bit_attr, tb[ETHTOOL_A_BITSET_BITS], rem) { - bool old_val, new_val; -@@ -458,13 +474,14 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - if (nla_type(bit_attr) != ETHTOOL_A_BITSET_BITS_BIT) { - NL_SET_ERR_MSG_ATTR(extack, bit_attr, - "only ETHTOOL_A_BITSET_BITS_BIT allowed in ETHTOOL_A_BITSET_BITS"); -- return -EINVAL; -+ ret = -EINVAL; -+ goto out; - } - ret = ethnl_parse_bit(&idx, &new_val, nbits, bit_attr, no_mask, - names, extack); - if (ret < 0) -- return ret; -- old_val = bitmap[idx / 32] & ((u32)1 << (idx % 32)); -+ goto out; -+ old_val = orig_bitmap[idx / 32] & ((u32)1 << (idx % 32)); - if (new_val != old_val) { - if (new_val) - bitmap[idx / 32] |= ((u32)1 << (idx % 32)); -@@ -474,7 +491,10 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - } - } - -- return 0; -+ ret = 0; -+out: -+ kfree(saved_bitmap); -+ return ret; - } - - static int ethnl_compact_sanity_checks(unsigned int nbits, --- -2.40.1 - diff --git a/queue-5.15/series b/queue-5.15/series index 41792fae0d5..e63408e5681 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -34,7 +34,6 @@ net-phy-mscc-macsec-reject-pn-update-requests.patch ixgbe-fix-crash-with-empty-vf-macvlan-list.patch net-mlx5e-again-mutually-exclude-rx-fcs-and-rx-port-.patch net-nfc-fix-races-in-nfc_llcp_sock_get-and-nfc_llcp_.patch -ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch net-smc-fix-pos-miscalculation-in-statistics.patch pinctrl-renesas-rzn1-enable-missing-pinmux.patch nfc-nci-assert-requested-protocol-is-valid.patch diff --git a/queue-6.1/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch b/queue-6.1/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch deleted file mode 100644 index bd27196f784..00000000000 --- a/queue-6.1/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch +++ /dev/null @@ -1,104 +0,0 @@ -From a48c130ea0bb4ed842e7d7e5532aade89a800f5a Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 9 Oct 2023 15:36:45 +0200 -Subject: ethtool: Fix mod state of verbose no_mask bitset - -From: Kory Maincent - -[ Upstream commit 108a36d07c01edbc5942d27c92494d1c6e4d45a0 ] - -A bitset without mask in a _SET request means we want exactly the bits in -the bitset to be set. This works correctly for compact format but when -verbose format is parsed, ethnl_update_bitset32_verbose() only sets the -bits present in the request bitset but does not clear the rest. The commit -6699170376ab fixes this issue by clearing the whole target bitmap before we -start iterating. The solution proposed brought an issue with the behavior -of the mod variable. As the bitset is always cleared the old val will -always differ to the new val. - -Fix it by adding a new temporary variable which save the state of the old -bitmap. - -Fixes: 6699170376ab ("ethtool: fix application of verbose no_mask bitset") -Signed-off-by: Kory Maincent -Reviewed-by: Simon Horman -Link: https://lore.kernel.org/r/20231009133645.44503-1-kory.maincent@bootlin.com -Signed-off-by: Jakub Kicinski -Signed-off-by: Sasha Levin ---- - net/ethtool/bitset.c | 32 ++++++++++++++++++++++++++------ - 1 file changed, 26 insertions(+), 6 deletions(-) - -diff --git a/net/ethtool/bitset.c b/net/ethtool/bitset.c -index 0515d6604b3b9..883ed9be81f9f 100644 ---- a/net/ethtool/bitset.c -+++ b/net/ethtool/bitset.c -@@ -431,8 +431,10 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - ethnl_string_array_t names, - struct netlink_ext_ack *extack, bool *mod) - { -+ u32 *orig_bitmap, *saved_bitmap = NULL; - struct nlattr *bit_attr; - bool no_mask; -+ bool dummy; - int rem; - int ret; - -@@ -448,8 +450,22 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - } - - no_mask = tb[ETHTOOL_A_BITSET_NOMASK]; -- if (no_mask) -- ethnl_bitmap32_clear(bitmap, 0, nbits, mod); -+ if (no_mask) { -+ unsigned int nwords = DIV_ROUND_UP(nbits, 32); -+ unsigned int nbytes = nwords * sizeof(u32); -+ -+ /* The bitmap size is only the size of the map part without -+ * its mask part. -+ */ -+ saved_bitmap = kcalloc(nwords, sizeof(u32), GFP_KERNEL); -+ if (!saved_bitmap) -+ return -ENOMEM; -+ memcpy(saved_bitmap, bitmap, nbytes); -+ ethnl_bitmap32_clear(bitmap, 0, nbits, &dummy); -+ orig_bitmap = saved_bitmap; -+ } else { -+ orig_bitmap = bitmap; -+ } - - nla_for_each_nested(bit_attr, tb[ETHTOOL_A_BITSET_BITS], rem) { - bool old_val, new_val; -@@ -458,13 +474,14 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - if (nla_type(bit_attr) != ETHTOOL_A_BITSET_BITS_BIT) { - NL_SET_ERR_MSG_ATTR(extack, bit_attr, - "only ETHTOOL_A_BITSET_BITS_BIT allowed in ETHTOOL_A_BITSET_BITS"); -- return -EINVAL; -+ ret = -EINVAL; -+ goto out; - } - ret = ethnl_parse_bit(&idx, &new_val, nbits, bit_attr, no_mask, - names, extack); - if (ret < 0) -- return ret; -- old_val = bitmap[idx / 32] & ((u32)1 << (idx % 32)); -+ goto out; -+ old_val = orig_bitmap[idx / 32] & ((u32)1 << (idx % 32)); - if (new_val != old_val) { - if (new_val) - bitmap[idx / 32] |= ((u32)1 << (idx % 32)); -@@ -474,7 +491,10 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - } - } - -- return 0; -+ ret = 0; -+out: -+ kfree(saved_bitmap); -+ return ret; - } - - static int ethnl_compact_sanity_checks(unsigned int nbits, --- -2.40.1 - diff --git a/queue-6.1/series b/queue-6.1/series index 49e1f1efb4f..db511f256b7 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -59,7 +59,6 @@ net-mlx5e-macsec-use-update_pn-flag-instead-of-pn-co.patch ixgbe-fix-crash-with-empty-vf-macvlan-list.patch net-mlx5e-again-mutually-exclude-rx-fcs-and-rx-port-.patch net-nfc-fix-races-in-nfc_llcp_sock_get-and-nfc_llcp_.patch -ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch net-smc-fix-pos-miscalculation-in-statistics.patch pinctrl-renesas-rzn1-enable-missing-pinmux.patch nfc-nci-assert-requested-protocol-is-valid.patch diff --git a/queue-6.5/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch b/queue-6.5/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch deleted file mode 100644 index b4450f3fe48..00000000000 --- a/queue-6.5/ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch +++ /dev/null @@ -1,104 +0,0 @@ -From e86daf36d0bae53b9d3a6e6ecb4a85e921a348cd Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 9 Oct 2023 15:36:45 +0200 -Subject: ethtool: Fix mod state of verbose no_mask bitset - -From: Kory Maincent - -[ Upstream commit 108a36d07c01edbc5942d27c92494d1c6e4d45a0 ] - -A bitset without mask in a _SET request means we want exactly the bits in -the bitset to be set. This works correctly for compact format but when -verbose format is parsed, ethnl_update_bitset32_verbose() only sets the -bits present in the request bitset but does not clear the rest. The commit -6699170376ab fixes this issue by clearing the whole target bitmap before we -start iterating. The solution proposed brought an issue with the behavior -of the mod variable. As the bitset is always cleared the old val will -always differ to the new val. - -Fix it by adding a new temporary variable which save the state of the old -bitmap. - -Fixes: 6699170376ab ("ethtool: fix application of verbose no_mask bitset") -Signed-off-by: Kory Maincent -Reviewed-by: Simon Horman -Link: https://lore.kernel.org/r/20231009133645.44503-1-kory.maincent@bootlin.com -Signed-off-by: Jakub Kicinski -Signed-off-by: Sasha Levin ---- - net/ethtool/bitset.c | 32 ++++++++++++++++++++++++++------ - 1 file changed, 26 insertions(+), 6 deletions(-) - -diff --git a/net/ethtool/bitset.c b/net/ethtool/bitset.c -index 0515d6604b3b9..883ed9be81f9f 100644 ---- a/net/ethtool/bitset.c -+++ b/net/ethtool/bitset.c -@@ -431,8 +431,10 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - ethnl_string_array_t names, - struct netlink_ext_ack *extack, bool *mod) - { -+ u32 *orig_bitmap, *saved_bitmap = NULL; - struct nlattr *bit_attr; - bool no_mask; -+ bool dummy; - int rem; - int ret; - -@@ -448,8 +450,22 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - } - - no_mask = tb[ETHTOOL_A_BITSET_NOMASK]; -- if (no_mask) -- ethnl_bitmap32_clear(bitmap, 0, nbits, mod); -+ if (no_mask) { -+ unsigned int nwords = DIV_ROUND_UP(nbits, 32); -+ unsigned int nbytes = nwords * sizeof(u32); -+ -+ /* The bitmap size is only the size of the map part without -+ * its mask part. -+ */ -+ saved_bitmap = kcalloc(nwords, sizeof(u32), GFP_KERNEL); -+ if (!saved_bitmap) -+ return -ENOMEM; -+ memcpy(saved_bitmap, bitmap, nbytes); -+ ethnl_bitmap32_clear(bitmap, 0, nbits, &dummy); -+ orig_bitmap = saved_bitmap; -+ } else { -+ orig_bitmap = bitmap; -+ } - - nla_for_each_nested(bit_attr, tb[ETHTOOL_A_BITSET_BITS], rem) { - bool old_val, new_val; -@@ -458,13 +474,14 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - if (nla_type(bit_attr) != ETHTOOL_A_BITSET_BITS_BIT) { - NL_SET_ERR_MSG_ATTR(extack, bit_attr, - "only ETHTOOL_A_BITSET_BITS_BIT allowed in ETHTOOL_A_BITSET_BITS"); -- return -EINVAL; -+ ret = -EINVAL; -+ goto out; - } - ret = ethnl_parse_bit(&idx, &new_val, nbits, bit_attr, no_mask, - names, extack); - if (ret < 0) -- return ret; -- old_val = bitmap[idx / 32] & ((u32)1 << (idx % 32)); -+ goto out; -+ old_val = orig_bitmap[idx / 32] & ((u32)1 << (idx % 32)); - if (new_val != old_val) { - if (new_val) - bitmap[idx / 32] |= ((u32)1 << (idx % 32)); -@@ -474,7 +491,10 @@ ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, - } - } - -- return 0; -+ ret = 0; -+out: -+ kfree(saved_bitmap); -+ return ret; - } - - static int ethnl_compact_sanity_checks(unsigned int nbits, --- -2.40.1 - diff --git a/queue-6.5/series b/queue-6.5/series index 469e39fc471..83f43ccc6ee 100644 --- a/queue-6.5/series +++ b/queue-6.5/series @@ -78,7 +78,6 @@ net-mlx5e-again-mutually-exclude-rx-fcs-and-rx-port-.patch s390-bpf-fix-clobbering-the-caller-s-backchain-in-th.patch s390-bpf-fix-unwinding-past-the-trampoline.patch net-nfc-fix-races-in-nfc_llcp_sock_get-and-nfc_llcp_.patch -ethtool-fix-mod-state-of-verbose-no_mask-bitset.patch net-smc-fix-pos-miscalculation-in-statistics.patch net-tcp-fix-crashes-trying-to-free-half-baked-mtu-pr.patch pinctrl-renesas-rzn1-enable-missing-pinmux.patch -- 2.47.3