]> git.baikalelectronics.ru Git - kernel.git/commit
net: ezchip: fix address space confusion in nps_enet.c
authorArnd Bergmann <arnd@arndb.de>
Tue, 8 Dec 2015 15:28:59 +0000 (16:28 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 9 Dec 2015 03:58:01 +0000 (22:58 -0500)
commit5591e902c6e1497840f3cb12104f568bbb13d1a0
tree8a0e9840b1e7436db34fb5726d8351d66dbe0a9c
parentf34f29a57edf6f622f0a62e5ee9e348863d5cc62
net: ezchip: fix address space confusion in nps_enet.c

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: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ezchip/nps_enet.c