mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 04:06:22 +00:00
irda: merge exit paths
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
037322abe6
commit
e780f1c33d
1 changed files with 8 additions and 9 deletions
|
@ -1325,6 +1325,7 @@ int irlap_driver_rcv(struct sk_buff *skb, struct net_device *dev,
|
||||||
struct irlap_cb *self;
|
struct irlap_cb *self;
|
||||||
int command;
|
int command;
|
||||||
__u8 control;
|
__u8 control;
|
||||||
|
int ret = -1;
|
||||||
|
|
||||||
if (!net_eq(dev_net(dev), &init_net))
|
if (!net_eq(dev_net(dev), &init_net))
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -1333,25 +1334,21 @@ int irlap_driver_rcv(struct sk_buff *skb, struct net_device *dev,
|
||||||
self = (struct irlap_cb *) dev->atalk_ptr;
|
self = (struct irlap_cb *) dev->atalk_ptr;
|
||||||
|
|
||||||
/* If the net device is down, then IrLAP is gone! */
|
/* If the net device is down, then IrLAP is gone! */
|
||||||
if (!self || self->magic != LAP_MAGIC) {
|
if (!self || self->magic != LAP_MAGIC)
|
||||||
dev_kfree_skb(skb);
|
goto err;
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We are no longer an "old" protocol, so we need to handle
|
/* We are no longer an "old" protocol, so we need to handle
|
||||||
* share and non linear skbs. This should never happen, so
|
* share and non linear skbs. This should never happen, so
|
||||||
* we don't need to be clever about it. Jean II */
|
* we don't need to be clever about it. Jean II */
|
||||||
if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) {
|
if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) {
|
||||||
IRDA_ERROR("%s: can't clone shared skb!\n", __func__);
|
IRDA_ERROR("%s: can't clone shared skb!\n", __func__);
|
||||||
dev_kfree_skb(skb);
|
goto err;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if frame is large enough for parsing */
|
/* Check if frame is large enough for parsing */
|
||||||
if (!pskb_may_pull(skb, 2)) {
|
if (!pskb_may_pull(skb, 2)) {
|
||||||
IRDA_ERROR("%s: frame too short!\n", __func__);
|
IRDA_ERROR("%s: frame too short!\n", __func__);
|
||||||
dev_kfree_skb(skb);
|
goto err;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
command = skb->data[0] & CMD_FRAME;
|
command = skb->data[0] & CMD_FRAME;
|
||||||
|
@ -1442,7 +1439,9 @@ int irlap_driver_rcv(struct sk_buff *skb, struct net_device *dev,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
|
ret = 0;
|
||||||
|
err:
|
||||||
/* Always drop our reference on the skb */
|
/* Always drop our reference on the skb */
|
||||||
dev_kfree_skb(skb);
|
dev_kfree_skb(skb);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue