Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

lib min_heap: use size_t for array size and index variables

Replace the int type with size_t for variables representing array sizes
and indices in the min-heap implementation. Using size_t aligns with
standard practices for size-related variables and avoids potential issues
on platforms where int may be insufficient to represent all valid sizes or
indices.

Link: https://lkml.kernel.org/r/20250215165618.1757219-1-visitorckw@gmail.com
Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
Cc: Ching-Chun (Jim) Huang <jserv@ccns.ncku.edu.tw>
Cc: Yu-Chun Lin <eleanor15x@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Kuan-Wei Chiu and committed by
Andrew Morton
0ac451ec 5e40d0d1

+8 -8
+6 -6
include/linux/min_heap.h
··· 218 218 219 219 /* Initialize a min-heap. */ 220 220 static __always_inline 221 - void __min_heap_init_inline(min_heap_char *heap, void *data, int size) 221 + void __min_heap_init_inline(min_heap_char *heap, void *data, size_t size) 222 222 { 223 223 heap->nr = 0; 224 224 heap->size = size; ··· 254 254 255 255 /* Sift the element at pos down the heap. */ 256 256 static __always_inline 257 - void __min_heap_sift_down_inline(min_heap_char *heap, int pos, size_t elem_size, 257 + void __min_heap_sift_down_inline(min_heap_char *heap, size_t pos, size_t elem_size, 258 258 const struct min_heap_callbacks *func, void *args) 259 259 { 260 260 const unsigned long lsbit = elem_size & -elem_size; ··· 324 324 void __min_heapify_all_inline(min_heap_char *heap, size_t elem_size, 325 325 const struct min_heap_callbacks *func, void *args) 326 326 { 327 - int i; 327 + ssize_t i; 328 328 329 329 for (i = heap->nr / 2 - 1; i >= 0; i--) 330 330 __min_heap_sift_down_inline(heap, i, elem_size, func, args); ··· 379 379 const struct min_heap_callbacks *func, void *args) 380 380 { 381 381 void *data = heap->data; 382 - int pos; 382 + size_t pos; 383 383 384 384 if (WARN_ONCE(heap->nr >= heap->size, "Pushing on a full heap")) 385 385 return false; ··· 428 428 __min_heap_del_inline(container_of(&(_heap)->nr, min_heap_char, nr), \ 429 429 __minheap_obj_size(_heap), _idx, _func, _args) 430 430 431 - void __min_heap_init(min_heap_char *heap, void *data, int size); 431 + void __min_heap_init(min_heap_char *heap, void *data, size_t size); 432 432 void *__min_heap_peek(struct min_heap_char *heap); 433 433 bool __min_heap_full(min_heap_char *heap); 434 - void __min_heap_sift_down(min_heap_char *heap, int pos, size_t elem_size, 434 + void __min_heap_sift_down(min_heap_char *heap, size_t pos, size_t elem_size, 435 435 const struct min_heap_callbacks *func, void *args); 436 436 void __min_heap_sift_up(min_heap_char *heap, size_t elem_size, size_t idx, 437 437 const struct min_heap_callbacks *func, void *args);
+2 -2
lib/min_heap.c
··· 2 2 #include <linux/export.h> 3 3 #include <linux/min_heap.h> 4 4 5 - void __min_heap_init(min_heap_char *heap, void *data, int size) 5 + void __min_heap_init(min_heap_char *heap, void *data, size_t size) 6 6 { 7 7 __min_heap_init_inline(heap, data, size); 8 8 } ··· 20 20 } 21 21 EXPORT_SYMBOL(__min_heap_full); 22 22 23 - void __min_heap_sift_down(min_heap_char *heap, int pos, size_t elem_size, 23 + void __min_heap_sift_down(min_heap_char *heap, size_t pos, size_t elem_size, 24 24 const struct min_heap_callbacks *func, void *args) 25 25 { 26 26 __min_heap_sift_down_inline(heap, pos, elem_size, func, args);