diff options
author | Sumanth Korikkar <sumanthk@linux.ibm.com> | 2023-06-05 10:55:27 +0300 |
---|---|---|
committer | Alexander Gordeev <agordeev@linux.ibm.com> | 2023-06-20 20:55:00 +0300 |
commit | 11458e2b3ffa0e3798f392695d7aec210ac14efd (patch) | |
tree | 983c41783fab7afd5c0e6c32ee8a7d45131dc265 /net/unix/af_unix.c | |
parent | 2e3d8d71e285fcf39eb30dbb17a58baa90649867 (diff) | |
download | linux-11458e2b3ffa0e3798f392695d7aec210ac14efd.tar.xz |
s390/module: fix rela calculation for R_390_GOTENT
During module load, module layout allocation occurs by initially
allowing the architecture to frob the sections. This is performed via
module_frob_arch_sections().
However, the size of each module memory types like text,data,rodata etc
are updated correctly only after layout_sections().
After calculation of required module memory sizes for each types,
move_module() is responsible for allocating the module memory for each
type from modules vaddr range.
Considering the sequence above, module_frob_arch_sections() updates the
module mod_arch_specific got_offset before module memory text type size
is fully updated in layout_sections(). Hence mod_arch_specific
got_offset points to currently zero.
As per s390 ABI,
R_390_GOTENT : (G + O + A - P) >> 1
where
G=me->mem[MOD_TEXT].base+me->arch.got_offset
O=info->got_offset
A=rela->r_addend
P=loc
fix R_390_GOTENT calculation in apply_rela().
Note: currently this doesn't break anything because me->arch.got_offset
is zero. However, reordering of functions in the future could break it.
Signed-off-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
Acked-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Diffstat (limited to 'net/unix/af_unix.c')
0 files changed, 0 insertions, 0 deletions