[android-common:android16-6.12 0/1] mm/slub.c:775:31: sparse: sparse: unsigned value that used to be signed checked against zero?
kernel test robot <[email protected]>
| Newsgroups | dev.linux.lists.oe-kbuild |
|---|---|
| Message-ID | <[email protected]> |
:::::: :::::: Manual check reason: "low confidence static check warning: mm/slub.c:775:31: sparse: sparse: unsigned value that used to be signed checked against zero?" :::::: BCC: [email protected] CC: [email protected] TO: [email protected] Hi Harry, FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant. tree: https://android.googlesource.com/kernel/common android16-6.12 head: 749a6f9d41aa0bad1b1893ebae8598ca7875d09e commit: b6e5cef4d6df31f7e61f2e2713b3358a0b48f7e7 [0/1] mm/slab: use unsigned long for orig_size to ensure proper metadata align :::::: branch date: 2 days ago :::::: commit date: 5 months ago config: x86_64-randconfig-122-20260808 (https://download.01.org/0day-ci/archive/20260808/[email protected]/config) compiler: gcc-14 (Debian 14.2.0-19) 14.2.0 sparse: v0.6.5-rc1 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260808/[email protected]/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <[email protected]> | Closes: https://lore.kernel.org/r/[email protected]/ sparse warnings: (new ones prefixed by >>) >> mm/slub.c:775:31: sparse: sparse: unsigned value that used to be signed checked against zero? mm/slub.c:1616:34: sparse: signed value source mm/slub.c:3179:55: sparse: sparse: context imbalance in '__put_partials' - unexpected unlock mm/slub.c:4475:47: sparse: sparse: context imbalance in '__slab_free' - unexpected unlock vim +775 mm/slub.c b789ef518b2a72 Christoph Lameter 2011-06-01 752 59090e479ac78a Peng Fan 2024-08-29 753 /* 59090e479ac78a Peng Fan 2024-08-29 754 * kmalloc caches has fixed sizes (mostly power of 2), and kmalloc() API 59090e479ac78a Peng Fan 2024-08-29 755 * family will round up the real request size to these fixed ones, so 59090e479ac78a Peng Fan 2024-08-29 756 * there could be an extra area than what is requested. Save the original 59090e479ac78a Peng Fan 2024-08-29 757 * request size in the meta data area, for better debug and sanity check. 59090e479ac78a Peng Fan 2024-08-29 758 */ 59090e479ac78a Peng Fan 2024-08-29 759 static inline void set_orig_size(struct kmem_cache *s, b6e5cef4d6df31 Harry Yoo 2026-01-13 760 void *object, unsigned long orig_size) 59090e479ac78a Peng Fan 2024-08-29 761 { 59090e479ac78a Peng Fan 2024-08-29 762 void *p = kasan_reset_tag(object); 59090e479ac78a Peng Fan 2024-08-29 763 unsigned int kasan_meta_size; 59090e479ac78a Peng Fan 2024-08-29 764 59090e479ac78a Peng Fan 2024-08-29 765 if (!slub_debug_orig_size(s)) 59090e479ac78a Peng Fan 2024-08-29 766 return; 59090e479ac78a Peng Fan 2024-08-29 767 59090e479ac78a Peng Fan 2024-08-29 768 /* 59090e479ac78a Peng Fan 2024-08-29 769 * KASAN can save its free meta data inside of the object at offset 0. 59090e479ac78a Peng Fan 2024-08-29 770 * If this meta data size is larger than 'orig_size', it will overlap 59090e479ac78a Peng Fan 2024-08-29 771 * the data redzone in [orig_size+1, object_size]. Thus, we adjust 59090e479ac78a Peng Fan 2024-08-29 772 * 'orig_size' to be as at least as big as KASAN's meta data. 59090e479ac78a Peng Fan 2024-08-29 773 */ 59090e479ac78a Peng Fan 2024-08-29 774 kasan_meta_size = kasan_metadata_size(s, true); 59090e479ac78a Peng Fan 2024-08-29 @775 if (kasan_meta_size > orig_size) 59090e479ac78a Peng Fan 2024-08-29 776 orig_size = kasan_meta_size; 59090e479ac78a Peng Fan 2024-08-29 777 59090e479ac78a Peng Fan 2024-08-29 778 p += get_info_end(s); 59090e479ac78a Peng Fan 2024-08-29 779 p += sizeof(struct track) * 2; 59090e479ac78a Peng Fan 2024-08-29 780 b6e5cef4d6df31 Harry Yoo 2026-01-13 781 *(unsigned long *)p = orig_size; 59090e479ac78a Peng Fan 2024-08-29 782 } 59090e479ac78a Peng Fan 2024-08-29 783 :::::: The code at line 775 was first introduced by commit :::::: 59090e479ac78ae18facd4c58eb332562a23020e mm, slub: avoid zeroing kmalloc redzone :::::: TO: Peng Fan <[email protected]> :::::: CC: Vlastimil Babka <[email protected]> -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki