Patch "virtio: force vring descriptors to be allocated from lowmem" has been added to the 3.0-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
virtio: force vring descriptors to be allocated from lowmem
to the 3.0-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
virtio-force-vring-descriptors-to-be-allocated-from-lowmem.patch
and it can be found in the queue-3.0 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
b92b1b89a33c172c075edccf6afb0edc41d851fdMon Sep 17 00:00:00 2001
From: Will Deacon <[email protected]>
Date: Fri, 19 Oct 2012 14:03:33 +0100
Subject: virtio: force vring descriptors to be allocated from lowmem
From: Will Deacon <[email protected]>
commit b92b1b89a33c172c075edccf6afb0edc41d851fd upstream.
Virtio devices may attempt to add descriptors to a virtqueue from atomic context using GFP_ATOMIC allocation. This is problematic because such allocations can fall outside of the lowmem mapping, causing virt_to_phys to report bogus physical addresses which are subsequently passed to userspace via the buffers for the virtual device.
This patch masks out __GFP_HIGH and __GFP_HIGHMEM from the requested flags when allocating descriptors for a virtqueue. If an atomic allocation is requested and later fails, we will return -ENOSPC which will be handled by the driver.
--- drivers/virtio/virtio_ring.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/virtio/virtio_ring.c +7 -0
@@ -120,6 +120,13 @@ static int vring_add_indirect(struct vriunsigned head;int i; +/* +* We require lowmem mappings for the descriptors because +* otherwise virt_to_phys will give us bogus addresses in the +* virtqueue. +*/ + gfp &= ~(__GFP_HIGHMEM | __GFP_HIGH); + desc =kmalloc ((out + in) *sizeof (struct vring_desc ), gfp);if (!desc)return -ENOMEM ;
Patches currently in stable-queue which might be from [email protected] are
queue-3.0/virtio-force-vring-descriptors-to-be-allocated-from-lowmem.patch