* fs/binfmt_elf_fdpic.c:1027:52: warning: variable 'excess1' set but not used
@ 2025-01-06 12:25 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-01-06 12:25 UTC (permalink / raw)
To: Greg Ungerer; +Cc: oe-kbuild-all, linux-kernel
Hi Greg,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 9d89551994a430b50c4fffcb1e617a057fa76e20
commit: 782f4c5c44e7d99d89740e272dc5ff84052c036a m68knommu: allow elf_fdpic loader to be selected
date: 2 years, 8 months ago
config: m68k-randconfig-m031-20230726 (https://download.01.org/0day-ci/archive/20250106/202501062041.MriUcpLC-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 12.4.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250106/202501062041.MriUcpLC-lkp@intel.com/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 <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202501062041.MriUcpLC-lkp@intel.com/
All warnings (new ones prefixed by >>):
fs/binfmt_elf_fdpic.c: In function 'elf_fdpic_map_file':
fs/binfmt_elf_fdpic.c:748:23: warning: variable 'load_addr' set but not used [-Wunused-but-set-variable]
748 | unsigned long load_addr, stop;
| ^~~~~~~~~
fs/binfmt_elf_fdpic.c: In function 'elf_fdpic_map_file_by_direct_mmap':
>> fs/binfmt_elf_fdpic.c:1027:52: warning: variable 'excess1' set but not used [-Wunused-but-set-variable]
1027 | unsigned long maddr, disp, excess, excess1;
| ^~~~~~~
vim +/excess1 +1027 fs/binfmt_elf_fdpic.c
^1da177e4c3f41 Linus Torvalds 2005-04-16 1004
^1da177e4c3f41 Linus Torvalds 2005-04-16 1005 /*****************************************************************************/
^1da177e4c3f41 Linus Torvalds 2005-04-16 1006 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 1007 * map a binary by direct mmap() of the individual PT_LOAD segments
^1da177e4c3f41 Linus Torvalds 2005-04-16 1008 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1009 static int elf_fdpic_map_file_by_direct_mmap(struct elf_fdpic_params *params,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1010 struct file *file,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1011 struct mm_struct *mm)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1012 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1013 struct elf32_fdpic_loadseg *seg;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1014 struct elf32_phdr *phdr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1015 unsigned long load_addr, delta_vaddr;
e30c7c3b306312 Takuya Yoshikawa 2010-06-01 1016 int loop, dvset;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1017
^1da177e4c3f41 Linus Torvalds 2005-04-16 1018 load_addr = params->load_addr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1019 delta_vaddr = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1020 dvset = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1021
^1da177e4c3f41 Linus Torvalds 2005-04-16 1022 seg = params->loadmap->segs;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1023
^1da177e4c3f41 Linus Torvalds 2005-04-16 1024 /* deal with each load segment separately */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1025 phdr = params->phdrs;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1026 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 @1027 unsigned long maddr, disp, excess, excess1;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1028 int prot = 0, flags;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1029
^1da177e4c3f41 Linus Torvalds 2005-04-16 1030 if (phdr->p_type != PT_LOAD)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1031 continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1032
^1da177e4c3f41 Linus Torvalds 2005-04-16 1033 kdebug("[LOAD] va=%lx of=%lx fs=%lx ms=%lx",
^1da177e4c3f41 Linus Torvalds 2005-04-16 1034 (unsigned long) phdr->p_vaddr,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1035 (unsigned long) phdr->p_offset,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1036 (unsigned long) phdr->p_filesz,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1037 (unsigned long) phdr->p_memsz);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1038
^1da177e4c3f41 Linus Torvalds 2005-04-16 1039 /* determine the mapping parameters */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1040 if (phdr->p_flags & PF_R) prot |= PROT_READ;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1041 if (phdr->p_flags & PF_W) prot |= PROT_WRITE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1042 if (phdr->p_flags & PF_X) prot |= PROT_EXEC;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1043
4589ff7ca81516 David Hildenbrand 2021-04-23 1044 flags = MAP_PRIVATE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1045 maddr = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1046
^1da177e4c3f41 Linus Torvalds 2005-04-16 1047 switch (params->flags & ELF_FDPIC_FLAG_ARRANGEMENT) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1048 case ELF_FDPIC_FLAG_INDEPENDENT:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1049 /* PT_LOADs are independently locatable */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1050 break;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1051
^1da177e4c3f41 Linus Torvalds 2005-04-16 1052 case ELF_FDPIC_FLAG_HONOURVADDR:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1053 /* the specified virtual address must be honoured */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1054 maddr = phdr->p_vaddr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1055 flags |= MAP_FIXED;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1056 break;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1057
^1da177e4c3f41 Linus Torvalds 2005-04-16 1058 case ELF_FDPIC_FLAG_CONSTDISP:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1059 /* constant displacement
8a2ab7f5df76b9 David Howells 2006-07-10 1060 * - can be mapped anywhere, but must be mapped as a
8a2ab7f5df76b9 David Howells 2006-07-10 1061 * unit
^1da177e4c3f41 Linus Torvalds 2005-04-16 1062 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1063 if (!dvset) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1064 maddr = load_addr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1065 delta_vaddr = phdr->p_vaddr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1066 dvset = 1;
8a2ab7f5df76b9 David Howells 2006-07-10 1067 } else {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1068 maddr = load_addr + phdr->p_vaddr - delta_vaddr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1069 flags |= MAP_FIXED;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1070 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1071 break;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1072
^1da177e4c3f41 Linus Torvalds 2005-04-16 1073 case ELF_FDPIC_FLAG_CONTIGUOUS:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1074 /* contiguity handled later */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1075 break;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1076
^1da177e4c3f41 Linus Torvalds 2005-04-16 1077 default:
^1da177e4c3f41 Linus Torvalds 2005-04-16 1078 BUG();
^1da177e4c3f41 Linus Torvalds 2005-04-16 1079 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1080
^1da177e4c3f41 Linus Torvalds 2005-04-16 1081 maddr &= PAGE_MASK;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1082
^1da177e4c3f41 Linus Torvalds 2005-04-16 1083 /* create the mapping */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1084 disp = phdr->p_vaddr & ~PAGE_MASK;
6be5ceb02e98ea Linus Torvalds 2012-04-20 1085 maddr = vm_mmap(file, maddr, phdr->p_memsz + disp, prot, flags,
^1da177e4c3f41 Linus Torvalds 2005-04-16 1086 phdr->p_offset - disp);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1087
^1da177e4c3f41 Linus Torvalds 2005-04-16 1088 kdebug("mmap[%d] <file> sz=%lx pr=%x fl=%x of=%lx --> %08lx",
8a2ab7f5df76b9 David Howells 2006-07-10 1089 loop, phdr->p_memsz + disp, prot, flags,
8a2ab7f5df76b9 David Howells 2006-07-10 1090 phdr->p_offset - disp, maddr);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1091
8a2ab7f5df76b9 David Howells 2006-07-10 1092 if (IS_ERR_VALUE(maddr))
^1da177e4c3f41 Linus Torvalds 2005-04-16 1093 return (int) maddr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1094
8a2ab7f5df76b9 David Howells 2006-07-10 1095 if ((params->flags & ELF_FDPIC_FLAG_ARRANGEMENT) ==
8a2ab7f5df76b9 David Howells 2006-07-10 1096 ELF_FDPIC_FLAG_CONTIGUOUS)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1097 load_addr += PAGE_ALIGN(phdr->p_memsz + disp);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1098
^1da177e4c3f41 Linus Torvalds 2005-04-16 1099 seg->addr = maddr + disp;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1100 seg->p_vaddr = phdr->p_vaddr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1101 seg->p_memsz = phdr->p_memsz;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1102
^1da177e4c3f41 Linus Torvalds 2005-04-16 1103 /* map the ELF header address if in this segment */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1104 if (phdr->p_offset == 0)
^1da177e4c3f41 Linus Torvalds 2005-04-16 1105 params->elfhdr_addr = seg->addr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1106
8a2ab7f5df76b9 David Howells 2006-07-10 1107 /* clear the bit between beginning of mapping and beginning of
8a2ab7f5df76b9 David Howells 2006-07-10 1108 * PT_LOAD */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1109 if (prot & PROT_WRITE && disp > 0) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 1110 kdebug("clear[%d] ad=%lx sz=%lx", loop, maddr, disp);
e30c7c3b306312 Takuya Yoshikawa 2010-06-01 1111 if (clear_user((void __user *) maddr, disp))
e30c7c3b306312 Takuya Yoshikawa 2010-06-01 1112 return -EFAULT;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1113 maddr += disp;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1114 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 1115
^1da177e4c3f41 Linus Torvalds 2005-04-16 1116 /* clear any space allocated but not loaded
^1da177e4c3f41 Linus Torvalds 2005-04-16 1117 * - on uClinux we can just clear the lot
^1da177e4c3f41 Linus Torvalds 2005-04-16 1118 * - on MMU linux we'll get a SIGBUS beyond the last page
^1da177e4c3f41 Linus Torvalds 2005-04-16 1119 * extant in the file
^1da177e4c3f41 Linus Torvalds 2005-04-16 1120 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 1121 excess = phdr->p_memsz - phdr->p_filesz;
^1da177e4c3f41 Linus Torvalds 2005-04-16 1122 excess1 = PAGE_SIZE - ((maddr + phdr->p_filesz) & ~PAGE_MASK);
^1da177e4c3f41 Linus Torvalds 2005-04-16 1123
:::::: The code at line 1027 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-01-06 12:25 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-06 12:25 fs/binfmt_elf_fdpic.c:1027:52: warning: variable 'excess1' set but not used kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.