[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <7bde870f-07eb-48a6-8b8d-edac57640775@stanley.mountain>
Date: Thu, 6 Mar 2025 09:35:26 +0300
From: Dan Carpenter <dan.carpenter@...aro.org>
To: oe-kbuild@...ts.linux.dev, steven chen <chenste@...ux.microsoft.com>,
zohar@...ux.ibm.com, stefanb@...ux.ibm.com,
roberto.sassu@...weicloud.com, roberto.sassu@...wei.com,
eric.snowberg@...cle.com, ebiederm@...ssion.com,
paul@...l-moore.com, code@...icks.com, bauermann@...abnow.com,
linux-integrity@...r.kernel.org, kexec@...ts.infradead.org,
linux-security-module@...r.kernel.org, linux-kernel@...r.kernel.org
Cc: lkp@...el.com, oe-kbuild-all@...ts.linux.dev,
madvenka@...ux.microsoft.com, nramas@...ux.microsoft.com,
James.Bottomley@...senpartnership.com, bhe@...hat.com,
vgoyal@...hat.com, dyoung@...hat.com
Subject: Re: [PATCH v9 2/7] kexec: define functions to map and unmap segments
Hi steven,
kernel test robot noticed the following build warnings:
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/steven-chen/ima-copy-only-complete-measurement-records-across-kexec/20250305-031719
base: https://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux-integrity.git next-integrity
patch link: https://lore.kernel.org/r/20250304190351.96975-3-chenste%40linux.microsoft.com
patch subject: [PATCH v9 2/7] kexec: define functions to map and unmap segments
config: x86_64-randconfig-161-20250306 (https://download.01.org/0day-ci/archive/20250306/202503061449.gbVGafZc-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
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 <lkp@...el.com>
| Reported-by: Dan Carpenter <dan.carpenter@...aro.org>
| Closes: https://lore.kernel.org/r/202503061449.gbVGafZc-lkp@intel.com/
smatch warnings:
kernel/kexec_core.c:896 kimage_map_segment() error: uninitialized symbol 'dest_page_addr'.
vim +/dest_page_addr +896 kernel/kexec_core.c
bf06eab7ae0f04 steven chen 2025-03-04 870 void *kimage_map_segment(struct kimage *image,
bf06eab7ae0f04 steven chen 2025-03-04 871 unsigned long addr, unsigned long size)
bf06eab7ae0f04 steven chen 2025-03-04 872 {
bf06eab7ae0f04 steven chen 2025-03-04 873 unsigned long eaddr = addr + size;
bf06eab7ae0f04 steven chen 2025-03-04 874 unsigned long src_page_addr, dest_page_addr;
bf06eab7ae0f04 steven chen 2025-03-04 875 unsigned int npages;
bf06eab7ae0f04 steven chen 2025-03-04 876 struct page **src_pages;
bf06eab7ae0f04 steven chen 2025-03-04 877 int i;
bf06eab7ae0f04 steven chen 2025-03-04 878 kimage_entry_t *ptr, entry;
bf06eab7ae0f04 steven chen 2025-03-04 879 void *vaddr = NULL;
bf06eab7ae0f04 steven chen 2025-03-04 880
bf06eab7ae0f04 steven chen 2025-03-04 881 /*
bf06eab7ae0f04 steven chen 2025-03-04 882 * Collect the source pages and map them in a contiguous VA range.
bf06eab7ae0f04 steven chen 2025-03-04 883 */
bf06eab7ae0f04 steven chen 2025-03-04 884 npages = PFN_UP(eaddr) - PFN_DOWN(addr);
bf06eab7ae0f04 steven chen 2025-03-04 885 src_pages = kmalloc_array(npages, sizeof(*src_pages), GFP_KERNEL);
bf06eab7ae0f04 steven chen 2025-03-04 886 if (!src_pages) {
bf06eab7ae0f04 steven chen 2025-03-04 887 pr_err("Could not allocate ima pages array.\n");
bf06eab7ae0f04 steven chen 2025-03-04 888 return NULL;
bf06eab7ae0f04 steven chen 2025-03-04 889 }
bf06eab7ae0f04 steven chen 2025-03-04 890
bf06eab7ae0f04 steven chen 2025-03-04 891 i = 0;
bf06eab7ae0f04 steven chen 2025-03-04 892 for_each_kimage_entry(image, ptr, entry) {
bf06eab7ae0f04 steven chen 2025-03-04 893 if (entry & IND_DESTINATION) {
bf06eab7ae0f04 steven chen 2025-03-04 894 dest_page_addr = entry & PAGE_MASK;
Is the first entry always IND_DESTINATION?
bf06eab7ae0f04 steven chen 2025-03-04 895 } else if (entry & IND_SOURCE) {
bf06eab7ae0f04 steven chen 2025-03-04 @896 if (dest_page_addr >= addr && dest_page_addr < eaddr) {
^^^^^^^^^^^^^^
otherwise this is uninitialized
bf06eab7ae0f04 steven chen 2025-03-04 897 src_page_addr = entry & PAGE_MASK;
bf06eab7ae0f04 steven chen 2025-03-04 898 src_pages[i++] =
bf06eab7ae0f04 steven chen 2025-03-04 899 virt_to_page(__va(src_page_addr));
bf06eab7ae0f04 steven chen 2025-03-04 900 if (i == npages)
bf06eab7ae0f04 steven chen 2025-03-04 901 break;
bf06eab7ae0f04 steven chen 2025-03-04 902 dest_page_addr += PAGE_SIZE;
bf06eab7ae0f04 steven chen 2025-03-04 903 }
bf06eab7ae0f04 steven chen 2025-03-04 904 }
bf06eab7ae0f04 steven chen 2025-03-04 905 }
bf06eab7ae0f04 steven chen 2025-03-04 906
bf06eab7ae0f04 steven chen 2025-03-04 907 /* Sanity check. */
bf06eab7ae0f04 steven chen 2025-03-04 908 WARN_ON(i < npages);
bf06eab7ae0f04 steven chen 2025-03-04 909
bf06eab7ae0f04 steven chen 2025-03-04 910 vaddr = vmap(src_pages, npages, VM_MAP, PAGE_KERNEL);
bf06eab7ae0f04 steven chen 2025-03-04 911 kfree(src_pages);
bf06eab7ae0f04 steven chen 2025-03-04 912
bf06eab7ae0f04 steven chen 2025-03-04 913 if (!vaddr)
bf06eab7ae0f04 steven chen 2025-03-04 914 pr_err("Could not map ima buffer.\n");
bf06eab7ae0f04 steven chen 2025-03-04 915
bf06eab7ae0f04 steven chen 2025-03-04 916 return vaddr;
bf06eab7ae0f04 steven chen 2025-03-04 917 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists