[agraf-2.6:kexec-cma 1/2] kernel/kexec_core.c:801 kimage_load_normal_segment() error: uninitialized symbol 'result'.

Dan Carpenter <[email protected]> Tue, 13 May 2025 17:38:20 +0300
Newsgroups org.kernel.vger.kvm-ppc,dev.linux.lists.oe-kbuild,dev.linux.lists.oe-kbuild-all
Message-ID <[email protected]>
tree:   https://github.com/agraf/linux-2.6.git kexec-cma
head:   752619bbe38c535612b1a9e5b47ea7d962c63449
commit: 1e91ce490239e53ac0b4ad9aea3ebed48d1edf51 [1/2] kexec: Use CMA
config: x86_64-randconfig-161-20250510 (https://download.01.org/0day-ci/archive/20250511/[email protected]/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 <[email protected]>
| Reported-by: Dan Carpenter <[email protected]>
| Closes: https://lore.kernel.org/r/[email protected]/

smatch warnings:
kernel/kexec_core.c:801 kimage_load_normal_segment() error: uninitialized symbol 'result'.

vim +/result +801 kernel/kexec_core.c

2965faa5e03d1e Dave Young            2015-09-09  734  static int kimage_load_normal_segment(struct kimage *image,
2965faa5e03d1e Dave Young            2015-09-09  735  					 struct kexec_segment *segment)
2965faa5e03d1e Dave Young            2015-09-09  736  {
2965faa5e03d1e Dave Young            2015-09-09  737  	unsigned long maddr;
2965faa5e03d1e Dave Young            2015-09-09  738  	size_t ubytes, mbytes;
2965faa5e03d1e Dave Young            2015-09-09  739  	int result;
2965faa5e03d1e Dave Young            2015-09-09  740  	unsigned char __user *buf = NULL;
2965faa5e03d1e Dave Young            2015-09-09  741  	unsigned char *kbuf = NULL;
1e91ce490239e5 Alexander Graf        2025-05-09  742  	bool dest_intact = false;
2965faa5e03d1e Dave Young            2015-09-09  743  
2965faa5e03d1e Dave Young            2015-09-09  744  	if (image->file_mode)
2965faa5e03d1e Dave Young            2015-09-09  745  		kbuf = segment->kbuf;
2965faa5e03d1e Dave Young            2015-09-09  746  	else
2965faa5e03d1e Dave Young            2015-09-09  747  		buf = segment->buf;
2965faa5e03d1e Dave Young            2015-09-09  748  	ubytes = segment->bufsz;
2965faa5e03d1e Dave Young            2015-09-09  749  	mbytes = segment->memsz;
2965faa5e03d1e Dave Young            2015-09-09  750  	maddr = segment->mem;
2965faa5e03d1e Dave Young            2015-09-09  751  
2965faa5e03d1e Dave Young            2015-09-09  752  	while (mbytes) {
2965faa5e03d1e Dave Young            2015-09-09  753  		struct page *page;
2965faa5e03d1e Dave Young            2015-09-09  754  		char *ptr;
2965faa5e03d1e Dave Young            2015-09-09  755  		size_t uchunk, mchunk;
2965faa5e03d1e Dave Young            2015-09-09  756  
2965faa5e03d1e Dave Young            2015-09-09  757  		page = kimage_alloc_page(image, GFP_HIGHUSER, maddr);
2965faa5e03d1e Dave Young            2015-09-09  758  		if (!page) {
2965faa5e03d1e Dave Young            2015-09-09  759  			result  = -ENOMEM;
2965faa5e03d1e Dave Young            2015-09-09  760  			goto out;
2965faa5e03d1e Dave Young            2015-09-09  761  		}
1e91ce490239e5 Alexander Graf        2025-05-09  762  
1e91ce490239e5 Alexander Graf        2025-05-09  763  		/* Add page to copy list if it's not already in place */
1e91ce490239e5 Alexander Graf        2025-05-09  764  		if (page_to_boot_pfn(page) << PAGE_SHIFT != maddr) {
1e91ce490239e5 Alexander Graf        2025-05-09  765  			if (!dest_intact) {
1e91ce490239e5 Alexander Graf        2025-05-09  766  				result = kimage_set_destination(image, maddr);
1e91ce490239e5 Alexander Graf        2025-05-09  767  				if (result < 0)
1e91ce490239e5 Alexander Graf        2025-05-09  768  					goto out;
1e91ce490239e5 Alexander Graf        2025-05-09  769  				dest_intact = true;
1e91ce490239e5 Alexander Graf        2025-05-09  770  			}
1e91ce490239e5 Alexander Graf        2025-05-09  771  
43546d8669d62d Russell King          2016-08-02  772  			result = kimage_add_page(image, page_to_boot_pfn(page)
2965faa5e03d1e Dave Young            2015-09-09  773  									<< PAGE_SHIFT);
2965faa5e03d1e Dave Young            2015-09-09  774  			if (result < 0)
2965faa5e03d1e Dave Young            2015-09-09  775  				goto out;
1e91ce490239e5 Alexander Graf        2025-05-09  776  		} else {
1e91ce490239e5 Alexander Graf        2025-05-09  777  			dest_intact = false;

result not set on this path.

1e91ce490239e5 Alexander Graf        2025-05-09  778  		}
2965faa5e03d1e Dave Young            2015-09-09  779  
948084f0f6959f Fabio M. De Francesco 2022-08-21  780  		ptr = kmap_local_page(page);
2965faa5e03d1e Dave Young            2015-09-09  781  		/* Start with a clear page */
2965faa5e03d1e Dave Young            2015-09-09  782  		clear_page(ptr);
2965faa5e03d1e Dave Young            2015-09-09  783  		ptr += maddr & ~PAGE_MASK;
2965faa5e03d1e Dave Young            2015-09-09  784  		mchunk = min_t(size_t, mbytes,
2965faa5e03d1e Dave Young            2015-09-09  785  				PAGE_SIZE - (maddr & ~PAGE_MASK));
2965faa5e03d1e Dave Young            2015-09-09  786  		uchunk = min(ubytes, mchunk);
2965faa5e03d1e Dave Young            2015-09-09  787  
4bb7be96fc8871 yang.zhang            2024-02-22  788  		if (uchunk) {
2965faa5e03d1e Dave Young            2015-09-09  789  			/* For file based kexec, source pages are in kernel memory */
2965faa5e03d1e Dave Young            2015-09-09  790  			if (image->file_mode)
2965faa5e03d1e Dave Young            2015-09-09  791  				memcpy(ptr, kbuf, uchunk);
2965faa5e03d1e Dave Young            2015-09-09  792  			else
2965faa5e03d1e Dave Young            2015-09-09  793  				result = copy_from_user(ptr, buf, uchunk);
4bb7be96fc8871 yang.zhang            2024-02-22  794  			ubytes -= uchunk;
4bb7be96fc8871 yang.zhang            2024-02-22  795  			if (image->file_mode)
4bb7be96fc8871 yang.zhang            2024-02-22  796  				kbuf += uchunk;
4bb7be96fc8871 yang.zhang            2024-02-22  797  			else
4bb7be96fc8871 yang.zhang            2024-02-22  798  				buf += uchunk;
4bb7be96fc8871 yang.zhang            2024-02-22  799  		}
948084f0f6959f Fabio M. De Francesco 2022-08-21  800  		kunmap_local(ptr);
2965faa5e03d1e Dave Young            2015-09-09 @801  		if (result) {
2965faa5e03d1e Dave Young            2015-09-09  802  			result = -EFAULT;
2965faa5e03d1e Dave Young            2015-09-09  803  			goto out;
2965faa5e03d1e Dave Young            2015-09-09  804  		}
2965faa5e03d1e Dave Young            2015-09-09  805  		maddr  += mchunk;
2965faa5e03d1e Dave Young            2015-09-09  806  		mbytes -= mchunk;
a8311f647e4196 Jarrett Farnitano     2018-06-14  807  
a8311f647e4196 Jarrett Farnitano     2018-06-14  808  		cond_resched();
2965faa5e03d1e Dave Young            2015-09-09  809  	}
2965faa5e03d1e Dave Young            2015-09-09  810  out:
2965faa5e03d1e Dave Young            2015-09-09  811  	return result;
2965faa5e03d1e Dave Young            2015-09-09  812  }

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki