From 12003ce76d17ca07fdddf069247a399b41e67eb0 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Sat, 11 May 2024 19:37:42 -0400 Subject: [PATCH] Fixes for 5.4 Signed-off-by: Sasha Levin --- ...nitize-rc-in-qede_add_tc_flower_fltr.patch | 78 +++++++++++++++++++ ...rom-qede_parse_flow_attr-for-fl.patch-6660 | 58 ++++++++++++++ queue-5.4/series | 2 + 3 files changed, 138 insertions(+) create mode 100644 queue-5.4/net-qede-sanitize-rc-in-qede_add_tc_flower_fltr.patch create mode 100644 queue-5.4/net-qede-use-return-from-qede_parse_flow_attr-for-fl.patch-6660 diff --git a/queue-5.4/net-qede-sanitize-rc-in-qede_add_tc_flower_fltr.patch b/queue-5.4/net-qede-sanitize-rc-in-qede_add_tc_flower_fltr.patch new file mode 100644 index 00000000000..e53f2467370 --- /dev/null +++ b/queue-5.4/net-qede-sanitize-rc-in-qede_add_tc_flower_fltr.patch @@ -0,0 +1,78 @@ +From 696cc563c0c2ea8b6d9f69ce00a2726b0cfae450 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 6 May 2024 21:24:22 +0000 +Subject: net: qede: sanitize 'rc' in qede_add_tc_flower_fltr() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Asbjørn Sloth Tønnesen + +[ Upstream commit e25714466abd9d96901b15efddf82c60a38abd86 ] + +Explicitly set 'rc' (return code), before jumping to the +unlock and return path. + +By not having any code depend on that 'rc' remains at +it's initial value of -EINVAL, then we can re-use 'rc' for +the return code of function calls in subsequent patches. + +Only compile tested. + +Signed-off-by: Asbjørn Sloth Tønnesen +Reviewed-by: Simon Horman +Signed-off-by: David S. Miller +Stable-dep-of: fcee2065a178 ("net: qede: use return from qede_parse_flow_attr() for flower") +[ resolved conflict in v5.4, no extack for qede_parse_actions() yet ] +Signed-off-by: Asbjørn Sloth Tønnesen +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/qlogic/qede/qede_filter.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/ethernet/qlogic/qede/qede_filter.c b/drivers/net/ethernet/qlogic/qede/qede_filter.c +index 31223de0c766e..c02938002278f 100644 +--- a/drivers/net/ethernet/qlogic/qede/qede_filter.c ++++ b/drivers/net/ethernet/qlogic/qede/qede_filter.c +@@ -1949,8 +1949,8 @@ int qede_add_tc_flower_fltr(struct qede_dev *edev, __be16 proto, + struct flow_cls_offload *f) + { + struct qede_arfs_fltr_node *n; +- int min_hlen, rc = -EINVAL; + struct qede_arfs_tuple t; ++ int min_hlen, rc; + + __qede_lock(edev); + +@@ -1960,8 +1960,10 @@ int qede_add_tc_flower_fltr(struct qede_dev *edev, __be16 proto, + } + + /* parse flower attribute and prepare filter */ +- if (qede_parse_flow_attr(edev, proto, f->rule, &t)) ++ if (qede_parse_flow_attr(edev, proto, f->rule, &t)) { ++ rc = -EINVAL; + goto unlock; ++ } + + /* Validate profile mode and number of filters */ + if ((edev->arfs->filter_count && edev->arfs->mode != t.mode) || +@@ -1969,12 +1971,15 @@ int qede_add_tc_flower_fltr(struct qede_dev *edev, __be16 proto, + DP_NOTICE(edev, + "Filter configuration invalidated, filter mode=0x%x, configured mode=0x%x, filter count=0x%x\n", + t.mode, edev->arfs->mode, edev->arfs->filter_count); ++ rc = -EINVAL; + goto unlock; + } + + /* parse tc actions and get the vf_id */ +- if (qede_parse_actions(edev, &f->rule->action)) ++ if (qede_parse_actions(edev, &f->rule->action)) { ++ rc = -EINVAL; + goto unlock; ++ } + + if (qede_flow_find_fltr(edev, &t)) { + rc = -EEXIST; +-- +2.43.0 + diff --git a/queue-5.4/net-qede-use-return-from-qede_parse_flow_attr-for-fl.patch-6660 b/queue-5.4/net-qede-use-return-from-qede_parse_flow_attr-for-fl.patch-6660 new file mode 100644 index 00000000000..4ba217a0a5d --- /dev/null +++ b/queue-5.4/net-qede-use-return-from-qede_parse_flow_attr-for-fl.patch-6660 @@ -0,0 +1,58 @@ +From 93a220e90eb6fee2a641635e578001bf9fa875ab Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 6 May 2024 21:24:23 +0000 +Subject: net: qede: use return from qede_parse_flow_attr() for flower +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Asbjørn Sloth Tønnesen + +[ Upstream commit fcee2065a178f78be6fd516302830378b17dba3d ] + +In qede_add_tc_flower_fltr(), when calling +qede_parse_flow_attr() then the return code +was only used for a non-zero check, and then +-EINVAL was returned. + +qede_parse_flow_attr() can currently fail with: +* -EINVAL +* -EOPNOTSUPP +* -EPROTONOSUPPORT + +This patch changes the code to use the actual +return code, not just return -EINVAL. + +The blaimed commit introduced these functions. + +Only compile tested. + +Fixes: 2ce9c93eaca6 ("qede: Ingress tc flower offload (drop action) support.") +Signed-off-by: Asbjørn Sloth Tønnesen +Reviewed-by: Simon Horman +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/qlogic/qede/qede_filter.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/ethernet/qlogic/qede/qede_filter.c b/drivers/net/ethernet/qlogic/qede/qede_filter.c +index c02938002278f..3142d92a98f02 100644 +--- a/drivers/net/ethernet/qlogic/qede/qede_filter.c ++++ b/drivers/net/ethernet/qlogic/qede/qede_filter.c +@@ -1960,10 +1960,9 @@ int qede_add_tc_flower_fltr(struct qede_dev *edev, __be16 proto, + } + + /* parse flower attribute and prepare filter */ +- if (qede_parse_flow_attr(edev, proto, f->rule, &t)) { +- rc = -EINVAL; ++ rc = qede_parse_flow_attr(edev, proto, f->rule, &t); ++ if (rc) + goto unlock; +- } + + /* Validate profile mode and number of filters */ + if ((edev->arfs->filter_count && edev->arfs->mode != t.mode) || +-- +2.43.0 + diff --git a/queue-5.4/series b/queue-5.4/series index a0477d95e91..bc91addbfc9 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -71,3 +71,5 @@ rtnetlink-correct-nested-ifla_vf_vlan_list-attribute.patch phonet-fix-rtm_phonet_notify-skb-allocation.patch net-bridge-fix-corrupted-ethernet-header-on-multicas.patch ipv6-fib6_rules-avoid-possible-null-dereference-in-f.patch +net-qede-sanitize-rc-in-qede_add_tc_flower_fltr.patch +net-qede-use-return-from-qede_parse_flow_attr-for-fl.patch-6660 -- 2.47.2