aboutsummaryrefslogtreecommitdiffstats
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
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
-rw-r--r--.rootkeys1
-rw-r--r--patches/linux-2.6.11/udp-frag.patch55
2 files changed, 56 insertions, 0 deletions
diff --git a/.rootkeys b/.rootkeys
index 9ef9688feb..81d4402321 100644
--- a/.rootkeys
+++ b/.rootkeys
@@ -472,6 +472,7 @@
428359d4b3fDYtazwXi4UUmSWaOUew patches/linux-2.6.11/linux-2.6.11.11.patch
4296fb998LGSWCcljGKbOCUv3h9uRQ patches/linux-2.6.11/net-csum.patch
429ae875I9ZrqrRDjGD34IC2kzDREw patches/linux-2.6.11/rcu-nohz.patch
+429ba3007184K-y6WHQ6KgY65-lEIQ patches/linux-2.6.11/udp-frag.patch
424f001e_M1Tnxc52rDrmCLelnDWMQ patches/linux-2.6.11/x86_64-linux.patch
3f776bd1Hy9rn69ntXBhPReUFw9IEA tools/Makefile
40e1b09db5mN69Ijj0X_Eol-S7dXiw tools/Rules.mk
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)
+