• Arnd Bergmann's avatar
    uio-hv-generic: store physical addresses instead of virtual · 190cc65e
    Arnd Bergmann authored
    gcc warns about the newly added driver when phys_addr_t is wider than
    a pointer:
    
    drivers/uio/uio_hv_generic.c: In function 'hv_uio_mmap':
    drivers/uio/uio_hv_generic.c:71:17: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
        virt_to_phys((void *)info->mem[mi].addr) >> PAGE_SHIFT,
    drivers/uio/uio_hv_generic.c: In function 'hv_uio_probe':
    drivers/uio/uio_hv_generic.c:140:5: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
       = (phys_addr_t)dev->channel->ringbuffer_pages;
    drivers/uio/uio_hv_generic.c:147:3: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
       (phys_addr_t)vmbus_connection.int_page;
    drivers/uio/uio_hv_generic.c:153:3: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
       (phys_addr_t)vmbus_connection.monitor_pages[1];
    
    I can't see why we store a virtual address in a phys_addr_t here,
    as the only user of that variable converts it into a physical
    address anyway, so this moves the conversion to where it logically
    fits according to the types.
    
    Fixes: 95096f2f ("uio-hv-generic: new userspace i/o driver for VMBus")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Acked-by: default avatarStephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    190cc65e
uio_hv_generic.c 5.16 KB