net/hsr: Check skb_put_padto() return value
authorFlorian Fainelli <f.fainelli@gmail.com>
Mon, 21 Aug 2017 19:59:10 +0000 (12:59 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 1 Oct 2020 18:40:01 +0000 (20:40 +0200)
commit 414e7d76af6d3ec2dd4e9079927dbe0e2e4ca914 upstream.

skb_put_padto() will free the sk_buff passed as reference in case of
errors, but we still need to check its return value and decide what to
do.

Detected by CoverityScan, CID#1416688 ("CHECKED_RETURN")

Fixes: ee1c27977284 ("net/hsr: Added support for HSR v1")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/hsr/hsr_device.c

index aead5ac4dbf680be1bc1fd06e26dc3dcd384b3cf..ea07c91ab3488da3c4202d48c664f8758ce7de07 100644 (file)
@@ -315,7 +315,8 @@ static void send_hsr_supervision_frame(struct hsr_port *master,
        hsr_sp = (typeof(hsr_sp)) skb_put(skb, sizeof(struct hsr_sup_payload));
        ether_addr_copy(hsr_sp->MacAddressA, master->dev->dev_addr);
 
-       skb_put_padto(skb, ETH_ZLEN + HSR_HLEN);
+       if (skb_put_padto(skb, ETH_ZLEN + HSR_HLEN))
+               return;
 
        hsr_forward_skb(skb, master);
        return;