NFC: rawsock: Fix a memory leak
In the rawsock data exchange callback, the sk_buff is not freed on error. Signed-off-by: Thierry Escande <thierry.escande@linux.intel.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
e44666b981
commit
4cf7e03296
|
@ -142,11 +142,11 @@ static void rawsock_data_exchange_complete(void *context, struct sk_buff *skb,
|
|||
|
||||
err = rawsock_add_header(skb);
|
||||
if (err)
|
||||
goto error;
|
||||
goto error_skb;
|
||||
|
||||
err = sock_queue_rcv_skb(sk, skb);
|
||||
if (err)
|
||||
goto error;
|
||||
goto error_skb;
|
||||
|
||||
spin_lock_bh(&sk->sk_write_queue.lock);
|
||||
if (!skb_queue_empty(&sk->sk_write_queue))
|
||||
|
@ -158,6 +158,9 @@ static void rawsock_data_exchange_complete(void *context, struct sk_buff *skb,
|
|||
sock_put(sk);
|
||||
return;
|
||||
|
||||
error_skb:
|
||||
kfree_skb(skb);
|
||||
|
||||
error:
|
||||
rawsock_report_error(sk, err);
|
||||
sock_put(sk);
|
||||
|
|
Loading…
Reference in New Issue