mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-06 22:42:10 +00:00
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
1 changed files with 6 additions and 1 deletions
|
@ -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)
|
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");
|
fatal("extable_entry size hasn't been discovered!\n");
|
||||||
|
|
||||||
return ((r->r_offset == 0) ||
|
return ((r->r_offset == 0) ||
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue