|
@@ -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);
|