Skip to content

Commit 3bed3cc

Browse files
Alexander Duyckdavem330
authored andcommitted
net: Do not allocate page fragments that are not skb aligned
This patch addresses the fact that there are drivers, specifically tun, that will call into the network page fragment allocators with buffer sizes that are not cache aligned. Doing this could result in data alignment and DMA performance issues as these fragment pools are also shared with the skb allocator and any other devices that will use napi_alloc_frags or netdev_alloc_frags. Fixes: ffde732 ("net: Split netdev_alloc_frag into __alloc_page_frag and add __napi_alloc_frag") Reported-by: Jann Horn <jannh@google.com> Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 8644772 commit 3bed3cc

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

net/core/skbuff.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,8 @@ static void *__netdev_alloc_frag(unsigned int fragsz, gfp_t gfp_mask)
356356
*/
357357
void *netdev_alloc_frag(unsigned int fragsz)
358358
{
359+
fragsz = SKB_DATA_ALIGN(fragsz);
360+
359361
return __netdev_alloc_frag(fragsz, GFP_ATOMIC);
360362
}
361363
EXPORT_SYMBOL(netdev_alloc_frag);
@@ -369,6 +371,8 @@ static void *__napi_alloc_frag(unsigned int fragsz, gfp_t gfp_mask)
369371

370372
void *napi_alloc_frag(unsigned int fragsz)
371373
{
374+
fragsz = SKB_DATA_ALIGN(fragsz);
375+
372376
return __napi_alloc_frag(fragsz, GFP_ATOMIC);
373377
}
374378
EXPORT_SYMBOL(napi_alloc_frag);

0 commit comments

Comments
 (0)