xsk: fix an integer overflow in xp_create_and_assign_umem()
commit559847f567
upstream. Since the i and pool->chunk_size variables are of type 'u32', their product can wrap around and then be cast to 'u64'. This can lead to two different XDP buffers pointing to the same memory area. Found by InfoTeCS on behalf of Linux Verification Center (linuxtesting.org) with SVACE. Fixes:94033cd8e7
("xsk: Optimize for aligned case") Cc: stable@vger.kernel.org Signed-off-by: Ilia Gavrilov <Ilia.Gavrilov@infotecs.ru> Link: https://patch.msgid.link/20250313085007.3116044-1-Ilia.Gavrilov@infotecs.ru Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> (cherry picked from commit b7b4be1fa43294b50b22e812715198629806678a)
This commit is contained in:
parent
7508023926
commit
34fa18dac4
|
@ -104,7 +104,7 @@ struct xsk_buff_pool *xp_create_and_assign_umem(struct xdp_sock *xs,
|
|||
if (pool->unaligned)
|
||||
pool->free_heads[i] = xskb;
|
||||
else
|
||||
xp_init_xskb_addr(xskb, pool, i * pool->chunk_size);
|
||||
xp_init_xskb_addr(xskb, pool, (u64)i * pool->chunk_size);
|
||||
}
|
||||
|
||||
return pool;
|
||||
|
|
Loading…
Reference in New Issue