mirror of https://gitee.com/openkylin/linux.git
modpost: fix inverted logic in is_extable_fault_address().
As Guenter pointed out, we want to assert that extable_entry_size has been discovered and not the other way around. Moreover, this sanity check is only valid when we're not dealing with the first relocation in __ex_table, since we have not discovered the extable entry size at that point. This was leading to a divide-by-zero on some architectures and make the build fail. Signed-off-by: Quentin Casasnovas <quentin.casasnovas@oracle.com> Reported-by: Guenter Roeck <linux@roeck-us.net> CC: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
6c730bfc89
commit
d3df4de7eb
|
@ -1529,7 +1529,12 @@ static void find_extable_entry_size(const char* const sec, const Elf_Rela* r,
|
|||
}
|
||||
static inline bool is_extable_fault_address(Elf_Rela *r)
|
||||
{
|
||||
if (!extable_entry_size == 0)
|
||||
/*
|
||||
* extable_entry_size is only discovered after we've handled the
|
||||
* _second_ relocation in __ex_table, so only abort when we're not
|
||||
* handling the first reloc and extable_entry_size is zero.
|
||||
*/
|
||||
if (r->r_offset && extable_entry_size == 0)
|
||||
fatal("extable_entry size hasn't been discovered!\n");
|
||||
|
||||
return ((r->r_offset == 0) ||
|
||||
|
|
Loading…
Reference in New Issue