|
@@ -951,10 +951,8 @@ int x25_rx_call_request(struct sk_buff *skb, struct x25_neigh *nb,
|
|
/*
|
|
/*
|
|
* Incoming Call User Data.
|
|
* Incoming Call User Data.
|
|
*/
|
|
*/
|
|
- if (skb->len >= 0) {
|
|
|
|
- skb_copy_from_linear_data(skb, makex25->calluserdata.cuddata, skb->len);
|
|
|
|
- makex25->calluserdata.cudlength = skb->len;
|
|
|
|
- }
|
|
|
|
|
|
+ skb_copy_from_linear_data(skb, makex25->calluserdata.cuddata, skb->len);
|
|
|
|
+ makex25->calluserdata.cudlength = skb->len;
|
|
|
|
|
|
sk->sk_ack_backlog++;
|
|
sk->sk_ack_backlog++;
|
|
|
|
|
|
@@ -1122,8 +1120,9 @@ static int x25_sendmsg(struct kiocb *iocb, struct socket *sock,
|
|
if (msg->msg_flags & MSG_OOB)
|
|
if (msg->msg_flags & MSG_OOB)
|
|
skb_queue_tail(&x25->interrupt_out_queue, skb);
|
|
skb_queue_tail(&x25->interrupt_out_queue, skb);
|
|
else {
|
|
else {
|
|
- len = x25_output(sk, skb);
|
|
|
|
- if (len < 0)
|
|
|
|
|
|
+ rc = x25_output(sk, skb);
|
|
|
|
+ len = rc;
|
|
|
|
+ if (rc < 0)
|
|
kfree_skb(skb);
|
|
kfree_skb(skb);
|
|
else if (x25->qbitincl)
|
|
else if (x25->qbitincl)
|
|
len++;
|
|
len++;
|