--- /dev/null
+From chrisw@hera.kernel.org Fri Apr 24 15:37:55 2009
+Date: Fri, 24 Apr 2009 22:35:03 GMT
+Message-Id: <200904242235.n3OMZ3Uq008747@hera.kernel.org>
+From: Christian Borntraeger <borntraeger@de.ibm.com>
+To: jejb@kernel.org, stable@kernel.org
+Subject: virtio-rng: Remove false BUG for spurious callbacks
+
+upstream commit: e5b89542ea18020961882228c26db3ba87f6e608
+
+The virtio-rng drivers checks for spurious callbacks. Since
+callbacks can be implemented via shared interrupts (e.g. PCI) this
+could lead to guest kernel oopses with lots of virtio devices.
+
+Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
+Cc: Rusty Russell <rusty@rustcorp.com.au>
+Cc: stable@kernel.org
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ drivers/char/hw_random/virtio-rng.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/char/hw_random/virtio-rng.c
++++ b/drivers/char/hw_random/virtio-rng.c
+@@ -37,9 +37,9 @@ static void random_recv_done(struct virt
+ {
+ int len;
+
+- /* We never get spurious callbacks. */
++ /* We can get spurious callbacks, e.g. shared IRQs + virtio_pci. */
+ if (!vq->vq_ops->get_buf(vq, &len))
+- BUG();
++ return;
+
+ data_left = len / sizeof(random_data[0]);
+ complete(&have_data);