sfc: allocate a big enough SKB for loopback selftest packet
authorEdward Cree <ecree.xilinx@gmail.com>
Mon, 21 Aug 2023 18:01:53 +0000 (19:01 +0100)
committerJakub Kicinski <kuba@kernel.org>
Tue, 22 Aug 2023 18:09:53 +0000 (11:09 -0700)
commit6dc5774deefe38d9ab385a5dafbe6614ae63d166
treed9615f7aef6ad6816c9cd6d6cf346e2ea8646f3c
parent1a8660546b31b6696e6634f529efe021c8360141
sfc: allocate a big enough SKB for loopback selftest packet

Cited commits passed a size to alloc_skb that was only big enough for
 the actual packet contents, but the following skb_put + memcpy writes
 the whole struct efx_loopback_payload including leading and trailing
 padding bytes (which are then stripped off with skb_pull/skb_trim).
This could cause an skb_over_panic, although in practice we get saved
 by kmalloc_size_roundup.
Pass the entire size we use, instead of the size of the final packet.

Reported-by: Andy Moreton <andy.moreton@amd.com>
Fixes: cf60ed469629 ("sfc: use padding to fix alignment in loopback test")
Fixes: 30c24dd87f3f ("sfc: siena: use padding to fix alignment in loopback test")
Fixes: 1186c6b31ee1 ("sfc: falcon: use padding to fix alignment in loopback test")
Signed-off-by: Edward Cree <ecree.xilinx@gmail.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20230821180153.18652-1-edward.cree@amd.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/sfc/falcon/selftest.c
drivers/net/ethernet/sfc/selftest.c
drivers/net/ethernet/sfc/siena/selftest.c