summaryrefslogtreecommitdiff
path: root/net/dsa
diff options
context:
space:
mode:
authorChristian Marangi <ansuelsmth@gmail.com>2023-07-30 09:41:09 +0200
committerPaolo Abeni <pabeni@redhat.com>2023-08-01 12:02:42 +0200
commitde9db136dcc3b60ba99f1f5034fc6ae7af45fa99 (patch)
tree6d7dca030406594ad23f5f4a26bf388b65bf4a36 /net/dsa
parent630e0afacd4beb8ad3081774169632b5b84e653d (diff)
downloadlwn-de9db136dcc3b60ba99f1f5034fc6ae7af45fa99.tar.gz
lwn-de9db136dcc3b60ba99f1f5034fc6ae7af45fa99.zip
net: dsa: tag_qca: return early if dev is not found
Currently checksum is recalculated and dsa tag stripped even if we later don't find the dev. To improve code, exit early if we don't find the dev and skip additional operation on the skb since it will be freed anyway. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Reviewed-by: Vladimir Oltean <olteanv@gmail.com> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Link: https://lore.kernel.org/r/20230730074113.21889-1-ansuelsmth@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'net/dsa')
-rw-r--r--net/dsa/tag_qca.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/net/dsa/tag_qca.c b/net/dsa/tag_qca.c
index e757c8de06f1..e5ff7c34e577 100644
--- a/net/dsa/tag_qca.c
+++ b/net/dsa/tag_qca.c
@@ -75,10 +75,6 @@ static struct sk_buff *qca_tag_rcv(struct sk_buff *skb, struct net_device *dev)
return NULL;
}
- /* Remove QCA tag and recalculate checksum */
- skb_pull_rcsum(skb, QCA_HDR_LEN);
- dsa_strip_etype_header(skb, QCA_HDR_LEN);
-
/* Get source port information */
port = FIELD_GET(QCA_HDR_RECV_SOURCE_PORT, hdr);
@@ -86,6 +82,10 @@ static struct sk_buff *qca_tag_rcv(struct sk_buff *skb, struct net_device *dev)
if (!skb->dev)
return NULL;
+ /* Remove QCA tag and recalculate checksum */
+ skb_pull_rcsum(skb, QCA_HDR_LEN);
+ dsa_strip_etype_header(skb, QCA_HDR_LEN);
+
return skb;
}