ibmveth: Fix alignment of rx queue bug
authorSantiago Leon <santil@linux.vnet.ibm.com>
Tue, 4 Sep 2012 14:41:37 +0000 (14:41 +0000)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 19 Sep 2012 14:05:15 +0000 (15:05 +0100)
commit1170e5b66595a73f7e8bb0b62e433669939c0eea
tree89ce8ebc7b91a31a659497b55dd70375c39a336e
parentda75c41ed3cf1fc577b24dc87559bd32e27ebc8b
ibmveth: Fix alignment of rx queue bug

commit d90c92fee89ccd75ef2646f3bde0b4c0450666c3 upstream.

This patch fixes a bug found by Nish Aravamudan
(https://lkml.org/lkml/2012/5/15/220) where the driver is not following
the spec (it is not aligning the rx buffer on a 16-byte boundary) and the
hypervisor aborts the registration, making the device unusable.

The fix follows BenH's recommendation (https://lkml.org/lkml/2012/7/20/461)
to replace the kmalloc+map for a single call to dma_alloc_coherent()
because that function always aligns to a 16-byte boundary.

The stable trees will run into this bug whenever the rx buffer kmalloc call
returns something not aligned on a 16-byte boundary.

Signed-off-by: Santiago Leon <santil@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/net/ethernet/ibm/ibmveth.c