• Arnd Bergmann's avatar
    net: ezchip: fix address space confusion in nps_enet.c · b0a8d1a0
    Arnd Bergmann authored
    The nps_enet driver happily mixes virtual, physical and __iomem
    addresses, which are all different depending on the architecture
    and configuration.  That causes a warning when building the code
    on ARM with LPAE mode enabled:
    
    drivers/net/ethernet/ezchip/nps_enet.c: In function 'nps_enet_send_frame':
    drivers/net/ethernet/ezchip/nps_enet.c:370:13: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
    
    but will also fail to work for other reasons.
    
    In this patch, I'm trying to change the code to use only normal
    kernel pointers, which I assume is what the author actually meant:
    
    * For reading or writing a 32-bit word that may be unaligned when
      an SKB contains unaligned data, I'm using get_unaligned/put_unaligned()
      rather than memcpy_fromio/toio.
    
    * For converting a u8 pointer to a u32 pointer, I use a cast rather
      than the incorrect virt_to_phys.
    
    * For copying a couple of bytes from one place to another while respecting
      alignment, I use memcpy instead of memcpy_toio.
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b0a8d1a0
nps_enet.c 17 KB