From fdc4ab1f902c54f15ea7922afe2bc2be902e761b Mon Sep 17 00:00:00 2001 From: "randomizedcoder dave.seddon.ca@gmail.com" Date: Fri, 18 Sep 2026 10:24:38 -0700 Subject: [PATCH] fix(tx_pool): avoid pointer arithmetic on a void * in homa_copy_iter_to_frags homa_copy_iter_to_frags() maps a page into `void *vaddr` and then does `vaddr + p_off` when calling copy_from_iter(). Arithmetic on a void pointer is a GNU extension and undefined in standard C (cppcheck: arithOperationsOnVoidPointer). Its sibling homa_copy_to_frags() already uses `u8 *vaddr`; match it. Verified: `cppcheck --enable=all homa_tx_pool.c` reports the finding at homa_tx_pool.c:534 before the change and nothing after; the existing homa_copy_iter_to_frags and homa_copy_to_frags unit tests stay green. Co-Authored-By: Claude Opus 4.8 --- homa_tx_pool.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homa_tx_pool.c b/homa_tx_pool.c index 740ecb73..081dc54d 100644 --- a/homa_tx_pool.c +++ b/homa_tx_pool.c @@ -529,7 +529,7 @@ int homa_copy_iter_to_frags(struct homa_frag_filler *filler, filler->offset, bytes_this_frag, p, p_off, p_len, copied) { int result; - void *vaddr = kmap_local_page(p); + u8 *vaddr = kmap_local_page(p); result = copy_from_iter(vaddr + p_off, p_len, iter); kunmap_local(vaddr);