• Will Deacon's avatar
    virtio: force vring descriptors to be allocated from lowmem · b92b1b89
    Will Deacon authored
    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.
    
    Cc: stable@kernel.org
    Cc: Sasha Levin <levinsasha928@gmail.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
    b92b1b89
virtio_ring.c 19.5 KB