net: dsa: sja1105: Check return value
authorArtem Chernyshev <artem.chernyshev@red-soft.ru>
Thu, 1 Dec 2022 14:00:32 +0000 (17:00 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Dec 2022 10:37:25 +0000 (11:37 +0100)
[ Upstream commit 8948876335b1752176afdff8e704099a3ea0f6e6 ]

Return NULL if we got unexpected value from skb_trim_rcsum() in
sja1110_rcv_inband_control_extension()

Fixes: 4913b8ebf8a9 ("net: dsa: add support for the SJA1110 native tagging protocol")
Signed-off-by: Artem Chernyshev <artem.chernyshev@red-soft.ru>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Link: https://lore.kernel.org/r/20221201140032.26746-3-artem.chernyshev@red-soft.ru
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/dsa/tag_sja1105.c

index 2edede9..d43fead 100644 (file)
@@ -644,7 +644,8 @@ static struct sk_buff *sja1110_rcv_inband_control_extension(struct sk_buff *skb,
                 * padding and trailer we need to account for the fact that
                 * skb->data points to skb_mac_header(skb) + ETH_HLEN.
                 */
-               pskb_trim_rcsum(skb, start_of_padding - ETH_HLEN);
+               if (pskb_trim_rcsum(skb, start_of_padding - ETH_HLEN))
+                       return NULL;
        /* Trap-to-host frame, no timestamp trailer */
        } else {
                *source_port = SJA1110_RX_HEADER_SRC_PORT(rx_header);