Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 293378 | Differences between
and this patch

Collapse All | Expand All

(-)alinux-2.6.31-gentoo-r6/net/core/datagram.c (-1 / +9 lines)
Lines 223-228 Link Here
223
	consume_skb(skb);
223
	consume_skb(skb);
224
	sk_mem_reclaim_partial(sk);
224
	sk_mem_reclaim_partial(sk);
225
}
225
}
226
EXPORT_SYMBOL(skb_free_datagram);
227
228
void skb_free_datagram_locked(struct sock *sk, struct sk_buff *skb)
229
{
230
	lock_sock(sk);
231
	skb_free_datagram(sk, skb);
232
	release_sock(sk);
233
}
234
EXPORT_SYMBOL(skb_free_datagram_locked);
226
235
227
/**
236
/**
228
 *	skb_kill_datagram - Free a datagram skbuff forcibly
237
 *	skb_kill_datagram - Free a datagram skbuff forcibly
Lines 749-753 Link Here
749
EXPORT_SYMBOL(datagram_poll);
758
EXPORT_SYMBOL(datagram_poll);
750
EXPORT_SYMBOL(skb_copy_and_csum_datagram_iovec);
759
EXPORT_SYMBOL(skb_copy_and_csum_datagram_iovec);
751
EXPORT_SYMBOL(skb_copy_datagram_iovec);
760
EXPORT_SYMBOL(skb_copy_datagram_iovec);
752
EXPORT_SYMBOL(skb_free_datagram);
753
EXPORT_SYMBOL(skb_recv_datagram);
761
EXPORT_SYMBOL(skb_recv_datagram);
(-)alinux-2.6.31-gentoo-r6/net/ipv4/udp.c (-3 / +1 lines)
Lines 956-964 Link Here
956
		err = ulen;
956
		err = ulen;
957
957
958
out_free:
958
out_free:
959
	lock_sock(sk);
959
	skb_free_datagram_locked(sk, skb);
960
	skb_free_datagram(sk, skb);
961
	release_sock(sk);
962
out:
960
out:
963
	return err;
961
	return err;
964
962
(-)alinux-2.6.31-gentoo-r6/net/ipv6/udp.c (-3 / +1 lines)
Lines 288-296 Link Here
288
		err = ulen;
288
		err = ulen;
289
289
290
out_free:
290
out_free:
291
	lock_sock(sk);
291
	skb_free_datagram_locked(sk, skb);
292
	skb_free_datagram(sk, skb);
293
	release_sock(sk);
294
out:
292
out:
295
	return err;
293
	return err;
296
294
(-)alinux-2.6.31-gentoo-r6/net/sunrpc/svcsock.c (-5 / +5 lines)
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;

Return to bug 293378