forked from rpms/kernel
		
	
		
			
				
	
	
		
			27 lines
		
	
	
		
			923 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			923 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/kernel/module-verify.c	
 | 
						|
+++ a/kernel/module-verify.c	
 | 
						|
@@ -391,16 +391,19 @@ static int extract_elf_rel(struct module_verify_data *mvdata,
 | 
						|
 #endif
 | 
						|
 	} __packed relocation;
 | 
						|
 
 | 
						|
+	const Elf_Shdr *relsec, *symsec, *strsec;
 | 
						|
 	const Elf_Rel *reloc;
 | 
						|
 	const Elf_Sym *symbols, *symbol;
 | 
						|
 	const char *strings;
 | 
						|
 	unsigned long r_sym;
 | 
						|
 	size_t nsyms, loop;
 | 
						|
 
 | 
						|
-	nsyms = mvdata->sections[secix].sh_size / sizeof(Elf_Sym);
 | 
						|
-	symbols = mvdata->buffer + mvdata->sections[secix].sh_offset;
 | 
						|
-	strings = mvdata->buffer +
 | 
						|
-		mvdata->sections[mvdata->sections[secix].sh_link].sh_offset;
 | 
						|
+	relsec = &mvdata->sections[secix];
 | 
						|
+	symsec = &mvdata->sections[relsec->sh_link];
 | 
						|
+	strsec = &mvdata->sections[symsec->sh_link];
 | 
						|
+	nsyms = symsec->sh_size / sizeof(Elf_Sym);
 | 
						|
+	symbols = mvdata->buffer + symsec->sh_offset;
 | 
						|
+	strings = mvdata->buffer + strsec->sh_offset;
 | 
						|
 
 | 
						|
 	/* Contribute the relevant bits from a join of
 | 
						|
 	 * { REL, SYMBOL, SECTION }
 |