On 2020/8/29 下午3:49, Qu Wenruo wrote: > > > On 2020/8/29 下午3:44, Qu Wenruo wrote: >> Hi, >> >> Recently built a v5.9-rc2 kernel, it boots fine, but unable to load any >> kernel module. >> >> After some debugging, it shows that it's due to RWX check failure: >> >> load_module: start >> module_enforce_rwx_sections: index=22 sh_flags=0x7 shf_wx=0x5 >> layout_and_allocate: module enforce rwx sections >> load_module: failed to alloc layout and allocate >> load_module: end >> >> Futhermore, it's unable to disable the RWX check through "make >> menuconfig", since the ARCH_OPTIONAL_KERNEL_RWX is no for arm64. >> >> The offending section 22 looks like this: (the kernel reports 38 >> sectors, while we only have 37, thus near-by sections are also shown here). >> >> 20 .data 00000aa0 0000000000000000 0000000000000000 00086d08 >> 2**3 >> CONTENTS, ALLOC, LOAD, RELOC, DATA >> 21 __bug_table 000000cc 0000000000000000 0000000000000000 000877a8 >> 2**2 >> CONTENTS, ALLOC, LOAD, RELOC, DATA >> 22 __dyndbg 0000b9b8 0000000000000000 0000000000000000 00087878 >> 2**3 >> CONTENTS, ALLOC, LOAD, RELOC, DATA >> 23 .data.unlikely 00000012 0000000000000000 0000000000000000 >> 00093230 2**0 >> CONTENTS, ALLOC, LOAD, DATA >> >> I'm using GCC 10.2.0, could this be the cause? > > I should check the git log, the module_enforce_rwx_sections() is just > recently added by commit 5c3a7db0c7ec ("module: Harden STRICT_MODULE_RWX"). > > Hi Peter, any idea how could this commit causing a regression on arm64 > but not on x86_64? And obviously, reverting it solves the problem of mine. (Now happy working 4K sector size btrfs support on 64K page size system) Thanks, Qu > > Thanks, > Qu > >> >> Thanks, >> Qu >> >> >> >