Commit 0eae1b98cf3022715b5a6ea5f1ac6b0bd7ac4edd

Authored by Ilpo Järvinen
Committed by David S. Miller
1 parent ebad5c0984

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

... ... @@ -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