xsk: discard zero length descriptors in Tx path
authorTirthendu Sarkar <tirthendu.sarkar@intel.com>
Wed, 19 Jul 2023 13:24:06 +0000 (15:24 +0200)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 19 Jul 2023 16:56:49 +0000 (09:56 -0700)
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>
net/xdp/xsk_queue.h

index 5752c9f..bac3202 100644 (file)
@@ -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;