diff mbox

[net] Fix net/hsr/hsr_device to check for freed skb buffer.

Message ID 0102015b8a4332ea-1e523746-5fd0-48d9-9045-d9de973fcd1a-000000@eu-west-1.amazonses.com
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Peter Heise April 20, 2017, 7:28 a.m. UTC
Fixed an unchecked call of skb_put_padto. Return value was ignored
before, however, skb_put_padto frees skb buffer in case of error.

As reported by Dan Carpenter on kernel-janitors.

Signed-off-by: Peter Heise <mail@pheise.de>
---
 net/hsr/hsr_device.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Sergei Shtylyov April 20, 2017, 10:15 a.m. UTC | #1
Hello!

On 4/20/2017 10:28 AM, Peter Heise wrote:

> Fixed an unchecked call of skb_put_padto. Return value was ignored
> before, however, skb_put_padto frees skb buffer in case of error.
>
> As reported by Dan Carpenter on kernel-janitors.
>
> Signed-off-by: Peter Heise <mail@pheise.de>
> ---
>  net/hsr/hsr_device.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/net/hsr/hsr_device.c b/net/hsr/hsr_device.c
> index c73160fb11e7..22d693f213be 100644
> --- a/net/hsr/hsr_device.c
> +++ b/net/hsr/hsr_device.c
> @@ -314,7 +314,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))

    Need a space after *if*. Pleae run your patches thru scripts/checkpatch.pl 
before sending.

> +		return;
>
>  	hsr_forward_skb(skb, master);
>  	return;

MBR, Seregi
diff mbox

Patch

diff --git a/net/hsr/hsr_device.c b/net/hsr/hsr_device.c
index c73160fb11e7..22d693f213be 100644
--- a/net/hsr/hsr_device.c
+++ b/net/hsr/hsr_device.c
@@ -314,7 +314,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;