Commit 0eae1b98cf3022715b5a6ea5f1ac6b0bd7ac4edd
Committed by
David S. Miller
1 parent
ebad5c0984
Exists in
master
and in
39 other branches
ax25: join the return paths that free skb
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 1 changed file with 15 additions and 26 deletions Side-by-side Diff
net/ax25/ax25_in.c
... | ... | @@ -200,19 +200,15 @@ |
200 | 200 | |
201 | 201 | skb_reset_transport_header(skb); |
202 | 202 | |
203 | - if ((ax25_dev = ax25_dev_ax25dev(dev)) == NULL) { | |
204 | - kfree_skb(skb); | |
205 | - return 0; | |
206 | - } | |
203 | + if ((ax25_dev = ax25_dev_ax25dev(dev)) == NULL) | |
204 | + goto free; | |
207 | 205 | |
208 | 206 | /* |
209 | 207 | * Parse the address header. |
210 | 208 | */ |
211 | 209 | |
212 | - if (ax25_addr_parse(skb->data, skb->len, &src, &dest, &dp, &type, &dama) == NULL) { | |
213 | - kfree_skb(skb); | |
214 | - return 0; | |
215 | - } | |
210 | + if (ax25_addr_parse(skb->data, skb->len, &src, &dest, &dp, &type, &dama) == NULL) | |
211 | + goto free; | |
216 | 212 | |
217 | 213 | /* |
218 | 214 | * Ours perhaps ? |
... | ... | @@ -239,10 +235,8 @@ |
239 | 235 | |
240 | 236 | ax25_send_to_raw(&dest, skb, skb->data[1]); |
241 | 237 | |
242 | - if (!mine && ax25cmp(&dest, (ax25_address *)dev->broadcast) != 0) { | |
243 | - kfree_skb(skb); | |
244 | - return 0; | |
245 | - } | |
238 | + if (!mine && ax25cmp(&dest, (ax25_address *)dev->broadcast) != 0) | |
239 | + goto free; | |
246 | 240 | |
247 | 241 | /* Now we are pointing at the pid byte */ |
248 | 242 | switch (skb->data[1]) { |
... | ... | @@ -301,10 +295,8 @@ |
301 | 295 | * If not, should we DM the incoming frame (except DMs) or |
302 | 296 | * silently ignore them. For now we stay quiet. |
303 | 297 | */ |
304 | - if (ax25_dev->values[AX25_VALUES_CONMODE] == 0) { | |
305 | - kfree_skb(skb); | |
306 | - return 0; | |
307 | - } | |
298 | + if (ax25_dev->values[AX25_VALUES_CONMODE] == 0) | |
299 | + goto free; | |
308 | 300 | |
309 | 301 | /* LAPB */ |
310 | 302 | |
... | ... | @@ -339,8 +331,7 @@ |
339 | 331 | if ((*skb->data & ~AX25_PF) != AX25_DM && mine) |
340 | 332 | ax25_return_dm(dev, &src, &dest, &dp); |
341 | 333 | |
342 | - kfree_skb(skb); | |
343 | - return 0; | |
334 | + goto free; | |
344 | 335 | } |
345 | 336 | |
346 | 337 | /* b) received SABM(E) */ |
347 | 338 | |
... | ... | @@ -372,15 +363,12 @@ |
372 | 363 | sk->sk_ack_backlog++; |
373 | 364 | bh_unlock_sock(sk); |
374 | 365 | } else { |
375 | - if (!mine) { | |
376 | - kfree_skb(skb); | |
377 | - return 0; | |
378 | - } | |
366 | + if (!mine) | |
367 | + goto free; | |
379 | 368 | |
380 | 369 | if ((ax25 = ax25_create_cb()) == NULL) { |
381 | 370 | ax25_return_dm(dev, &src, &dest, &dp); |
382 | - kfree_skb(skb); | |
383 | - return 0; | |
371 | + goto free; | |
384 | 372 | } |
385 | 373 | |
386 | 374 | ax25_fillin_cb(ax25, ax25_dev); |
387 | 375 | |
... | ... | @@ -436,9 +424,10 @@ |
436 | 424 | if (!sock_flag(sk, SOCK_DEAD)) |
437 | 425 | sk->sk_data_ready(sk, skb->len); |
438 | 426 | sock_put(sk); |
439 | - } else | |
427 | + } else { | |
428 | +free: | |
440 | 429 | kfree_skb(skb); |
441 | - | |
430 | + } | |
442 | 431 | return 0; |
443 | 432 | } |
444 | 433 |