Lines 110-116
Link Here
|
110 |
rqstp->rq_xprt_ctxt = NULL; |
110 |
rqstp->rq_xprt_ctxt = NULL; |
111 |
|
111 |
|
112 |
dprintk("svc: service %p, releasing skb %p\n", rqstp, skb); |
112 |
dprintk("svc: service %p, releasing skb %p\n", rqstp, skb); |
113 |
skb_free_datagram(svsk->sk_sk, skb); |
113 |
skb_free_datagram_locked(svsk->sk_sk, skb); |
114 |
} |
114 |
} |
115 |
} |
115 |
} |
116 |
|
116 |
|
Lines 537-543
Link Here
|
537 |
printk("rpcsvc: received unknown control message:" |
537 |
printk("rpcsvc: received unknown control message:" |
538 |
"%d/%d\n", |
538 |
"%d/%d\n", |
539 |
cmh->cmsg_level, cmh->cmsg_type); |
539 |
cmh->cmsg_level, cmh->cmsg_type); |
540 |
skb_free_datagram(svsk->sk_sk, skb); |
540 |
skb_free_datagram_locked(svsk->sk_sk, skb); |
541 |
return 0; |
541 |
return 0; |
542 |
} |
542 |
} |
543 |
svc_udp_get_dest_address(rqstp, cmh); |
543 |
svc_udp_get_dest_address(rqstp, cmh); |
Lines 548-565
Link Here
|
548 |
if (csum_partial_copy_to_xdr(&rqstp->rq_arg, skb)) { |
548 |
if (csum_partial_copy_to_xdr(&rqstp->rq_arg, skb)) { |
549 |
local_bh_enable(); |
549 |
local_bh_enable(); |
550 |
/* checksum error */ |
550 |
/* checksum error */ |
551 |
skb_free_datagram(svsk->sk_sk, skb); |
551 |
skb_free_datagram_locked(svsk->sk_sk, skb); |
552 |
return 0; |
552 |
return 0; |
553 |
} |
553 |
} |
554 |
local_bh_enable(); |
554 |
local_bh_enable(); |
555 |
skb_free_datagram(svsk->sk_sk, skb); |
555 |
skb_free_datagram_locked(svsk->sk_sk, skb); |
556 |
} else { |
556 |
} else { |
557 |
/* we can use it in-place */ |
557 |
/* we can use it in-place */ |
558 |
rqstp->rq_arg.head[0].iov_base = skb->data + |
558 |
rqstp->rq_arg.head[0].iov_base = skb->data + |
559 |
sizeof(struct udphdr); |
559 |
sizeof(struct udphdr); |
560 |
rqstp->rq_arg.head[0].iov_len = len; |
560 |
rqstp->rq_arg.head[0].iov_len = len; |
561 |
if (skb_checksum_complete(skb)) { |
561 |
if (skb_checksum_complete(skb)) { |
562 |
skb_free_datagram(svsk->sk_sk, skb); |
562 |
skb_free_datagram_locked(svsk->sk_sk, skb); |
563 |
return 0; |
563 |
return 0; |
564 |
} |
564 |
} |
565 |
rqstp->rq_xprt_ctxt = skb; |
565 |
rqstp->rq_xprt_ctxt = skb; |