diff options
author | Tirthendu Sarkar <tirthendu.sarkar@intel.com> | 2023-07-19 15:24:06 +0200 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2023-07-19 18:56:49 +0200 |
commit | 07428da9e25a5dfae7252cd554c90557f9086a73 (patch) | |
tree | b7e1c5a5a79fc5ef1fb7d386f8be92a15b6c3701 /net/xdp | |
parent | xsk: add support for AF_XDP multi-buffer on Tx path (diff) | |
download | linux-07428da9e25a5dfae7252cd554c90557f9086a73.tar.xz linux-07428da9e25a5dfae7252cd554c90557f9086a73.zip |
xsk: discard zero length descriptors in Tx path
Descriptors with zero length are not supported by many NICs. To preserve
uniform behavior discard any zero length desc as invvalid desc.
Signed-off-by: Tirthendu Sarkar <tirthendu.sarkar@intel.com>
Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Link: https://lore.kernel.org/r/20230719132421.584801-10-maciej.fijalkowski@intel.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'net/xdp')
-rw-r--r-- | net/xdp/xsk_queue.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/xdp/xsk_queue.h b/net/xdp/xsk_queue.h index 5752c9fd8ce7..bac32027f865 100644 --- a/net/xdp/xsk_queue.h +++ b/net/xdp/xsk_queue.h @@ -140,6 +140,9 @@ static inline bool xp_aligned_validate_desc(struct xsk_buff_pool *pool, { u64 offset = desc->addr & (pool->chunk_size - 1); + if (!desc->len) + return false; + if (offset + desc->len > pool->chunk_size) return false; @@ -156,6 +159,9 @@ static inline bool xp_unaligned_validate_desc(struct xsk_buff_pool *pool, { u64 addr = xp_unaligned_add_offset_to_addr(desc->addr); + if (!desc->len) + return false; + if (desc->len > pool->chunk_size) return false; |