All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Julia Lawall <julia.lawall@inria.fr>
Subject: arch/riscv/kernel/module.c:727:10-18: ERROR: reference preceded by free on line 726
Date: Tue, 12 Dec 2023 00:35:05 +0800	[thread overview]
Message-ID: <202312120044.wTI1Uyaa-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Charlie Jenkins <charlie@rivosinc.com>
CC: Palmer Dabbelt <palmer@rivosinc.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   a39b6ac3781d46ba18193c9dbb2110f31e9bffe9
commit: d8792a5734b0f3e58b898c2e2f910bfac48e9ee3 riscv: Safely remove entries from relocation list
date:   7 days ago
:::::: branch date: 18 hours ago
:::::: commit date: 7 days ago
config: riscv-randconfig-r053-20231211 (https://download.01.org/0day-ci/archive/20231212/202312120044.wTI1Uyaa-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce: (https://download.01.org/0day-ci/archive/20231212/202312120044.wTI1Uyaa-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>
| Reported-by: Julia Lawall <julia.lawall@inria.fr>
| Closes: https://lore.kernel.org/r/202312120044.wTI1Uyaa-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> arch/riscv/kernel/module.c:727:10-18: ERROR: reference preceded by free on line 726
--
>> arch/riscv/kernel/module.c:763:11-17: ERROR: application of sizeof to pointer
--
>> arch/riscv/kernel/module.c:792:5-19: WARNING: Unsigned expression compared with zero: hashtable_bits     <     0

vim +727 arch/riscv/kernel/module.c

8fd6c5142395a1 Charlie Jenkins      2023-11-01  654  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  655  static int add_relocation_to_accumulate(struct module *me, int type,
d8792a5734b0f3 Charlie Jenkins      2023-11-27  656  					void *location,
d8792a5734b0f3 Charlie Jenkins      2023-11-27  657  					unsigned int hashtable_bits, Elf_Addr v,
d8792a5734b0f3 Charlie Jenkins      2023-11-27  658  					struct hlist_head *relocation_hashtable,
d8792a5734b0f3 Charlie Jenkins      2023-11-27  659  					struct list_head *used_buckets_list)
8fd6c5142395a1 Charlie Jenkins      2023-11-01  660  {
8fd6c5142395a1 Charlie Jenkins      2023-11-01  661  	struct relocation_entry *entry;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  662  	struct relocation_head *rel_head;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  663  	struct hlist_head *current_head;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  664  	struct used_bucket *bucket;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  665  	unsigned long hash;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  666  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  667  	entry = kmalloc(sizeof(*entry), GFP_KERNEL);
d8792a5734b0f3 Charlie Jenkins      2023-11-27  668  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  669  	if (!entry)
d8792a5734b0f3 Charlie Jenkins      2023-11-27  670  		return -ENOMEM;
d8792a5734b0f3 Charlie Jenkins      2023-11-27  671  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  672  	INIT_LIST_HEAD(&entry->head);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  673  	entry->type = type;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  674  	entry->value = v;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  675  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  676  	hash = hash_min((uintptr_t)location, hashtable_bits);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  677  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  678  	current_head = &relocation_hashtable[hash];
8fd6c5142395a1 Charlie Jenkins      2023-11-01  679  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  680  	/*
d8792a5734b0f3 Charlie Jenkins      2023-11-27  681  	 * Search for the relocation_head for the relocations that happen at the
d8792a5734b0f3 Charlie Jenkins      2023-11-27  682  	 * provided location
d8792a5734b0f3 Charlie Jenkins      2023-11-27  683  	 */
8fd6c5142395a1 Charlie Jenkins      2023-11-01  684  	bool found = false;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  685  	struct relocation_head *rel_head_iter;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  686  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  687  	hlist_for_each_entry(rel_head_iter, current_head, node) {
8fd6c5142395a1 Charlie Jenkins      2023-11-01  688  		if (rel_head_iter->location == location) {
8fd6c5142395a1 Charlie Jenkins      2023-11-01  689  			found = true;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  690  			rel_head = rel_head_iter;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  691  			break;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  692  		}
8fd6c5142395a1 Charlie Jenkins      2023-11-01  693  	}
8fd6c5142395a1 Charlie Jenkins      2023-11-01  694  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  695  	/*
d8792a5734b0f3 Charlie Jenkins      2023-11-27  696  	 * If there has not yet been any relocations at the provided location,
d8792a5734b0f3 Charlie Jenkins      2023-11-27  697  	 * create a relocation_head for that location and populate it with this
d8792a5734b0f3 Charlie Jenkins      2023-11-27  698  	 * relocation_entry.
d8792a5734b0f3 Charlie Jenkins      2023-11-27  699  	 */
8fd6c5142395a1 Charlie Jenkins      2023-11-01  700  	if (!found) {
8fd6c5142395a1 Charlie Jenkins      2023-11-01  701  		rel_head = kmalloc(sizeof(*rel_head), GFP_KERNEL);
d8792a5734b0f3 Charlie Jenkins      2023-11-27  702  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  703  		if (!rel_head) {
d8792a5734b0f3 Charlie Jenkins      2023-11-27  704  			kfree(entry);
d8792a5734b0f3 Charlie Jenkins      2023-11-27  705  			return -ENOMEM;
d8792a5734b0f3 Charlie Jenkins      2023-11-27  706  		}
d8792a5734b0f3 Charlie Jenkins      2023-11-27  707  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  708  		rel_head->rel_entry =
8fd6c5142395a1 Charlie Jenkins      2023-11-01  709  			kmalloc(sizeof(struct list_head), GFP_KERNEL);
d8792a5734b0f3 Charlie Jenkins      2023-11-27  710  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  711  		if (!rel_head->rel_entry) {
d8792a5734b0f3 Charlie Jenkins      2023-11-27  712  			kfree(entry);
d8792a5734b0f3 Charlie Jenkins      2023-11-27  713  			kfree(rel_head);
d8792a5734b0f3 Charlie Jenkins      2023-11-27  714  			return -ENOMEM;
d8792a5734b0f3 Charlie Jenkins      2023-11-27  715  		}
d8792a5734b0f3 Charlie Jenkins      2023-11-27  716  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  717  		INIT_LIST_HEAD(rel_head->rel_entry);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  718  		rel_head->location = location;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  719  		INIT_HLIST_NODE(&rel_head->node);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  720  		if (!current_head->first) {
8fd6c5142395a1 Charlie Jenkins      2023-11-01  721  			bucket =
8fd6c5142395a1 Charlie Jenkins      2023-11-01  722  				kmalloc(sizeof(struct used_bucket), GFP_KERNEL);
d8792a5734b0f3 Charlie Jenkins      2023-11-27  723  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  724  			if (!bucket) {
d8792a5734b0f3 Charlie Jenkins      2023-11-27  725  				kfree(entry);
d8792a5734b0f3 Charlie Jenkins      2023-11-27 @726  				kfree(rel_head);
d8792a5734b0f3 Charlie Jenkins      2023-11-27 @727  				kfree(rel_head->rel_entry);
d8792a5734b0f3 Charlie Jenkins      2023-11-27  728  				return -ENOMEM;
d8792a5734b0f3 Charlie Jenkins      2023-11-27  729  			}
d8792a5734b0f3 Charlie Jenkins      2023-11-27  730  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  731  			INIT_LIST_HEAD(&bucket->head);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  732  			bucket->bucket = current_head;
d8792a5734b0f3 Charlie Jenkins      2023-11-27  733  			list_add(&bucket->head, used_buckets_list);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  734  		}
8fd6c5142395a1 Charlie Jenkins      2023-11-01  735  		hlist_add_head(&rel_head->node, current_head);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  736  	}
8fd6c5142395a1 Charlie Jenkins      2023-11-01  737  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  738  	/* Add relocation to head of discovered rel_head */
8fd6c5142395a1 Charlie Jenkins      2023-11-01  739  	list_add_tail(&entry->head, rel_head->rel_entry);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  740  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  741  	return 0;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  742  }
8fd6c5142395a1 Charlie Jenkins      2023-11-01  743  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  744  static unsigned int
d8792a5734b0f3 Charlie Jenkins      2023-11-27  745  initialize_relocation_hashtable(unsigned int num_relocations,
d8792a5734b0f3 Charlie Jenkins      2023-11-27  746  				struct hlist_head **relocation_hashtable)
8fd6c5142395a1 Charlie Jenkins      2023-11-01  747  {
8fd6c5142395a1 Charlie Jenkins      2023-11-01  748  	/* Can safely assume that bits is not greater than sizeof(long) */
8fd6c5142395a1 Charlie Jenkins      2023-11-01  749  	unsigned long hashtable_size = roundup_pow_of_two(num_relocations);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  750  	unsigned int hashtable_bits = ilog2(hashtable_size);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  751  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  752  	/*
8fd6c5142395a1 Charlie Jenkins      2023-11-01  753  	 * Double size of hashtable if num_relocations * 1.25 is greater than
8fd6c5142395a1 Charlie Jenkins      2023-11-01  754  	 * hashtable_size.
8fd6c5142395a1 Charlie Jenkins      2023-11-01  755  	 */
8fd6c5142395a1 Charlie Jenkins      2023-11-01  756  	int should_double_size = ((num_relocations + (num_relocations >> 2)) > (hashtable_size));
8fd6c5142395a1 Charlie Jenkins      2023-11-01  757  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  758  	hashtable_bits += should_double_size;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  759  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  760  	hashtable_size <<= should_double_size;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  761  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  762  	*relocation_hashtable = kmalloc_array(hashtable_size,
8fd6c5142395a1 Charlie Jenkins      2023-11-01 @763  					      sizeof(*relocation_hashtable),
8fd6c5142395a1 Charlie Jenkins      2023-11-01  764  					      GFP_KERNEL);
d8792a5734b0f3 Charlie Jenkins      2023-11-27  765  	if (!*relocation_hashtable)
d8792a5734b0f3 Charlie Jenkins      2023-11-27  766  		return -ENOMEM;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  767  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  768  	__hash_init(*relocation_hashtable, hashtable_size);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  769  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  770  	return hashtable_bits;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  771  }
8fd6c5142395a1 Charlie Jenkins      2023-11-01  772  
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  773  int apply_relocate_add(Elf_Shdr *sechdrs, const char *strtab,
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  774  		       unsigned int symindex, unsigned int relsec,
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  775  		       struct module *me)
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  776  {
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  777  	Elf_Rela *rel = (void *) sechdrs[relsec].sh_addr;
8cbe0accc4a6ba Emil Renner Berthing 2023-11-01  778  	int (*handler)(struct module *me, void *location, Elf_Addr v);
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  779  	Elf_Sym *sym;
8cbe0accc4a6ba Emil Renner Berthing 2023-11-01  780  	void *location;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  781  	unsigned int i, type;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  782  	Elf_Addr v;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  783  	int res;
8fd6c5142395a1 Charlie Jenkins      2023-11-01  784  	unsigned int num_relocations = sechdrs[relsec].sh_size / sizeof(*rel);
d8792a5734b0f3 Charlie Jenkins      2023-11-27  785  	struct hlist_head *relocation_hashtable;
d8792a5734b0f3 Charlie Jenkins      2023-11-27  786  	struct list_head used_buckets_list;
d8792a5734b0f3 Charlie Jenkins      2023-11-27  787  	unsigned int hashtable_bits;
d8792a5734b0f3 Charlie Jenkins      2023-11-27  788  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  789  	hashtable_bits = initialize_relocation_hashtable(num_relocations,
d8792a5734b0f3 Charlie Jenkins      2023-11-27  790  							 &relocation_hashtable);
d8792a5734b0f3 Charlie Jenkins      2023-11-27  791  
d8792a5734b0f3 Charlie Jenkins      2023-11-27 @792  	if (hashtable_bits < 0)
d8792a5734b0f3 Charlie Jenkins      2023-11-27  793  		return hashtable_bits;
d8792a5734b0f3 Charlie Jenkins      2023-11-27  794  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  795  	INIT_LIST_HEAD(&used_buckets_list);
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  796  
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  797  	pr_debug("Applying relocate section %u to %u\n", relsec,
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  798  	       sechdrs[relsec].sh_info);
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  799  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  800  	for (i = 0; i < num_relocations; i++) {
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  801  		/* This is where to make the change */
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  802  		location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  803  			+ rel[i].r_offset;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  804  		/* This is the symbol it is referring to */
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  805  		sym = (Elf_Sym *)sechdrs[symindex].sh_addr
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  806  			+ ELF_RISCV_R_SYM(rel[i].r_info);
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  807  		if (IS_ERR_VALUE(sym->st_value)) {
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  808  			/* Ignore unresolved weak symbol */
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  809  			if (ELF_ST_BIND(sym->st_info) == STB_WEAK)
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  810  				continue;
04ce8d3f40cd2d Kefeng Wang          2019-10-18  811  			pr_warn("%s: Unknown symbol %s\n",
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  812  				me->name, strtab + sym->st_name);
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  813  			return -ENOENT;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  814  		}
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  815  
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  816  		type = ELF_RISCV_R_TYPE(rel[i].r_info);
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  817  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  818  		if (type < ARRAY_SIZE(reloc_handlers))
8fd6c5142395a1 Charlie Jenkins      2023-11-01  819  			handler = reloc_handlers[type].reloc_handler;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  820  		else
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  821  			handler = NULL;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  822  
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  823  		if (!handler) {
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  824  			pr_err("%s: Unknown relocation type %u\n",
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  825  			       me->name, type);
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  826  			return -EINVAL;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  827  		}
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  828  
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  829  		v = sym->st_value + rel[i].r_addend;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  830  
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  831  		if (type == R_RISCV_PCREL_LO12_I || type == R_RISCV_PCREL_LO12_S) {
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  832  			unsigned int j;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  833  
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  834  			for (j = 0; j < sechdrs[relsec].sh_size / sizeof(*rel); j++) {
7df85002178e70 Zong Li              2018-06-25  835  				unsigned long hi20_loc =
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  836  					sechdrs[sechdrs[relsec].sh_info].sh_addr
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  837  					+ rel[j].r_offset;
da975dd4818cf4 Zong Li              2018-03-15  838  				u32 hi20_type = ELF_RISCV_R_TYPE(rel[j].r_info);
da975dd4818cf4 Zong Li              2018-03-15  839  
da975dd4818cf4 Zong Li              2018-03-15  840  				/* Find the corresponding HI20 relocation entry */
da975dd4818cf4 Zong Li              2018-03-15  841  				if (hi20_loc == sym->st_value
da975dd4818cf4 Zong Li              2018-03-15  842  				    && (hi20_type == R_RISCV_PCREL_HI20
da975dd4818cf4 Zong Li              2018-03-15  843  					|| hi20_type == R_RISCV_GOT_HI20)) {
da975dd4818cf4 Zong Li              2018-03-15  844  					s32 hi20, lo12;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  845  					Elf_Sym *hi20_sym =
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  846  						(Elf_Sym *)sechdrs[symindex].sh_addr
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  847  						+ ELF_RISCV_R_SYM(rel[j].r_info);
7df85002178e70 Zong Li              2018-06-25  848  					unsigned long hi20_sym_val =
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  849  						hi20_sym->st_value
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  850  						+ rel[j].r_addend;
da975dd4818cf4 Zong Li              2018-03-15  851  
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  852  					/* Calculate lo12 */
7df85002178e70 Zong Li              2018-06-25  853  					size_t offset = hi20_sym_val - hi20_loc;
da975dd4818cf4 Zong Li              2018-03-15  854  					if (IS_ENABLED(CONFIG_MODULE_SECTIONS)
da975dd4818cf4 Zong Li              2018-03-15  855  					    && hi20_type == R_RISCV_GOT_HI20) {
da975dd4818cf4 Zong Li              2018-03-15  856  						offset = module_emit_got_entry(
da975dd4818cf4 Zong Li              2018-03-15  857  							 me, hi20_sym_val);
da975dd4818cf4 Zong Li              2018-03-15  858  						offset = offset - hi20_loc;
da975dd4818cf4 Zong Li              2018-03-15  859  					}
da975dd4818cf4 Zong Li              2018-03-15  860  					hi20 = (offset + 0x800) & 0xfffff000;
da975dd4818cf4 Zong Li              2018-03-15  861  					lo12 = offset - hi20;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  862  					v = lo12;
da975dd4818cf4 Zong Li              2018-03-15  863  
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  864  					break;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  865  				}
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  866  			}
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  867  			if (j == sechdrs[relsec].sh_size / sizeof(*rel)) {
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  868  				pr_err(
da975dd4818cf4 Zong Li              2018-03-15  869  				  "%s: Can not find HI20 relocation information\n",
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  870  				  me->name);
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  871  				return -EINVAL;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  872  			}
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  873  		}
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  874  
8fd6c5142395a1 Charlie Jenkins      2023-11-01  875  		if (reloc_handlers[type].accumulate_handler)
d8792a5734b0f3 Charlie Jenkins      2023-11-27  876  			res = add_relocation_to_accumulate(me, type, location,
d8792a5734b0f3 Charlie Jenkins      2023-11-27  877  							   hashtable_bits, v,
d8792a5734b0f3 Charlie Jenkins      2023-11-27  878  							   relocation_hashtable,
d8792a5734b0f3 Charlie Jenkins      2023-11-27  879  							   &used_buckets_list);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  880  		else
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  881  			res = handler(me, location, v);
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  882  		if (res)
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  883  			return res;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  884  	}
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  885  
d8792a5734b0f3 Charlie Jenkins      2023-11-27  886  	process_accumulated_relocations(me, &relocation_hashtable,
d8792a5734b0f3 Charlie Jenkins      2023-11-27  887  					&used_buckets_list);
8fd6c5142395a1 Charlie Jenkins      2023-11-01  888  
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  889  	return 0;
e2c0cdfba7f699 Palmer Dabbelt       2017-07-10  890  }
0cff8bff7af886 Vincent Chen         2020-02-21  891  

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

                 reply	other threads:[~2023-12-11 16:35 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202312120044.wTI1Uyaa-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=julia.lawall@inria.fr \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.