diff options
Diffstat (limited to 'net/nfc/rawsock.c')
-rw-r--r-- | net/nfc/rawsock.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/nfc/rawsock.c b/net/nfc/rawsock.c index 313bf1bc848a..cd958b381f96 100644 --- a/net/nfc/rawsock.c +++ b/net/nfc/rawsock.c | |||
@@ -142,11 +142,11 @@ static void rawsock_data_exchange_complete(void *context, struct sk_buff *skb, | |||
142 | 142 | ||
143 | err = rawsock_add_header(skb); | 143 | err = rawsock_add_header(skb); |
144 | if (err) | 144 | if (err) |
145 | goto error; | 145 | goto error_skb; |
146 | 146 | ||
147 | err = sock_queue_rcv_skb(sk, skb); | 147 | err = sock_queue_rcv_skb(sk, skb); |
148 | if (err) | 148 | if (err) |
149 | goto error; | 149 | goto error_skb; |
150 | 150 | ||
151 | spin_lock_bh(&sk->sk_write_queue.lock); | 151 | spin_lock_bh(&sk->sk_write_queue.lock); |
152 | if (!skb_queue_empty(&sk->sk_write_queue)) | 152 | if (!skb_queue_empty(&sk->sk_write_queue)) |
@@ -158,6 +158,9 @@ static void rawsock_data_exchange_complete(void *context, struct sk_buff *skb, | |||
158 | sock_put(sk); | 158 | sock_put(sk); |
159 | return; | 159 | return; |
160 | 160 | ||
161 | error_skb: | ||
162 | kfree_skb(skb); | ||
163 | |||
161 | error: | 164 | error: |
162 | rawsock_report_error(sk, err); | 165 | rawsock_report_error(sk, err); |
163 | sock_put(sk); | 166 | sock_put(sk); |