aboutsummaryrefslogtreecommitdiffstats
path: root/patches
diff options
context:
space:
mode:
authorsmh22@tempest.cl.cam.ac.uk <smh22@tempest.cl.cam.ac.uk>2005-05-30 23:43:01 +0000
committersmh22@tempest.cl.cam.ac.uk <smh22@tempest.cl.cam.ac.uk>2005-05-30 23:43:01 +0000
commit3d55c2a228c7af79d21507d48cd8cab6397a45a2 (patch)
tree368f485695a6b15414f195ab04ff52f83f8450a8 /patches
parent10b7bf98cbcfe75cc7e0c5c22be3ddc41c73e291 (diff)
parent4c67d3b106e7ac16c002e2875a58994337b19489 (diff)
downloadxen-3d55c2a228c7af79d21507d48cd8cab6397a45a2.tar.gz
xen-3d55c2a228c7af79d21507d48cd8cab6397a45a2.tar.bz2
xen-3d55c2a228c7af79d21507d48cd8cab6397a45a2.zip
bitkeeper revision 1.1600 (429ba505NfUdL-sQ8-FAIhULwXSaHQ)
Merge tempest.cl.cam.ac.uk:/auto/groups/xeno-xenod/BK/xen-2.0-testing.bk into tempest.cl.cam.ac.uk:/auto/groups/xeno-xenod/BK/xen-unstable.bk
Diffstat (limited to 'patches')
-rw-r--r--patches/linux-2.6.11/udp-frag.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/patches/linux-2.6.11/udp-frag.patch b/patches/linux-2.6.11/udp-frag.patch
new file mode 100644
index 0000000000..9e8a26eb20
--- /dev/null
+++ b/patches/linux-2.6.11/udp-frag.patch
@@ -0,0 +1,55 @@
+diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
+--- a/net/ipv4/udp.c
++++ b/net/ipv4/udp.c
+@@ -738,7 +738,7 @@ int udp_ioctl(struct sock *sk, int cmd,
+ unsigned long amount;
+
+ amount = 0;
+- spin_lock_irq(&sk->sk_receive_queue.lock);
++ spin_lock_bh(&sk->sk_receive_queue.lock);
+ skb = skb_peek(&sk->sk_receive_queue);
+ if (skb != NULL) {
+ /*
+@@ -748,7 +748,7 @@ int udp_ioctl(struct sock *sk, int cmd,
+ */
+ amount = skb->len - sizeof(struct udphdr);
+ }
+- spin_unlock_irq(&sk->sk_receive_queue.lock);
++ spin_unlock_bh(&sk->sk_receive_queue.lock);
+ return put_user(amount, (int __user *)arg);
+ }
+
+@@ -848,12 +848,12 @@ csum_copy_err:
+ /* Clear queue. */
+ if (flags&MSG_PEEK) {
+ int clear = 0;
+- spin_lock_irq(&sk->sk_receive_queue.lock);
++ spin_lock_bh(&sk->sk_receive_queue.lock);
+ if (skb == skb_peek(&sk->sk_receive_queue)) {
+ __skb_unlink(skb, &sk->sk_receive_queue);
+ clear = 1;
+ }
+- spin_unlock_irq(&sk->sk_receive_queue.lock);
++ spin_unlock_bh(&sk->sk_receive_queue.lock);
+ if (clear)
+ kfree_skb(skb);
+ }
+@@ -1334,7 +1334,7 @@ unsigned int udp_poll(struct file *file,
+ struct sk_buff_head *rcvq = &sk->sk_receive_queue;
+ struct sk_buff *skb;
+
+- spin_lock_irq(&rcvq->lock);
++ spin_lock_bh(&rcvq->lock);
+ while ((skb = skb_peek(rcvq)) != NULL) {
+ if (udp_checksum_complete(skb)) {
+ UDP_INC_STATS_BH(UDP_MIB_INERRORS);
+@@ -1345,7 +1345,7 @@ unsigned int udp_poll(struct file *file,
+ break;
+ }
+ }
+- spin_unlock_irq(&rcvq->lock);
++ spin_unlock_bh(&rcvq->lock);
+
+ /* nothing to see, move along */
+ if (skb == NULL)
+