• Michael S. Tsirkin's avatar
    virtio: force spec specified alignment on types · a865e420
    Michael S. Tsirkin authored
    The ring element addresses are passed between components with different
    alignments assumptions. Thus, if guest/userspace selects a pointer and
    host then gets and dereferences it, we might need to decrease the
    compiler-selected alignment to prevent compiler on the host from
    assuming pointer is aligned.
    
    This actually triggers on ARM with -mabi=apcs-gnu - which is a
    deprecated configuration, but it seems safer to handle this
    generally.
    
    Note that userspace that allocates the memory is actually OK and does
    not need to be fixed, but userspace that gets it from guest or another
    process does need to be fixed. The later doesn't generally talk to the
    kernel so while it might be buggy it's not talking to the kernel in the
    buggy way - it's just using the header in the buggy way - so fixing
    header and asking userspace to recompile is the best we can do.
    
    I verified that the produced kernel binary on x86 is exactly identical
    before and after the change.
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Acked-by: default avatarJason Wang <jasowang@redhat.com>
    a865e420
vringh.c 37.2 KB