Message ID | 20211122142456.181724-1-atenart@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | cb902b332f9545635911063b671927defa5866bf |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next,v2] sections: global data can be in .bss | expand |
On Mon, Nov 22, 2021 at 3:24 PM Antoine Tenart <atenart@kernel.org> wrote: > > When checking an address is located in a global data section also check > for the .bss section as global variables initialized to 0 can be in > there (-fzero-initialized-in-bss). > > This was found when looking at ensure_safe_net_sysctl which was failing > to detect non-init sysctl pointing to a global data section when the > data was in the .bss section. > > Signed-off-by: Antoine Tenart <atenart@kernel.org> > Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org> > --- > > A few remarks: > > - This still targets net-next but I added Arnd if he prefers to take it > through the 'asm-generic' tree, now that is_kernel_core_data is in > include/asm-generic/. I have nothing else for asm-generic at the moment, please take this through net-next. Acked-by: Arnd Bergmann <arnd@arndb.de>
Hello: This patch was applied to netdev/net-next.git (master) by David S. Miller <davem@davemloft.net>: On Mon, 22 Nov 2021 15:24:56 +0100 you wrote: > When checking an address is located in a global data section also check > for the .bss section as global variables initialized to 0 can be in > there (-fzero-initialized-in-bss). > > This was found when looking at ensure_safe_net_sysctl which was failing > to detect non-init sysctl pointing to a global data section when the > data was in the .bss section. > > [...] Here is the summary with links: - [net-next,v2] sections: global data can be in .bss https://git.kernel.org/netdev/net-next/c/cb902b332f95 You are awesome, thank you!
On Mon, Nov 22, 2021 at 9:24 AM Antoine Tenart <atenart@kernel.org> wrote: > > When checking an address is located in a global data section also check > for the .bss section as global variables initialized to 0 can be in > there (-fzero-initialized-in-bss). > > This was found when looking at ensure_safe_net_sysctl which was failing > to detect non-init sysctl pointing to a global data section when the > data was in the .bss section. > > Signed-off-by: Antoine Tenart <atenart@kernel.org> > Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Co-Developed-by: Jonathon Reinhart <jonathon.reinhart@gmail.com> Signed-off-by: Jonathon Reinhart <jonathon.reinhart@gmail.com> > --- > > A few remarks: > > - This still targets net-next but I added Arnd if he prefers to take it > through the 'asm-generic' tree, now that is_kernel_core_data is in > include/asm-generic/. > > - I kept the Acked-by tag as the change is the same really, the > difference is the core_kernel_data function was renamed to > is_kernel_core_data and moved since then. > > - @Jonathon: with your analysis and suggestion I think you should be > listed as a co-developer. If that's fine please say so, and reply > with both a Co-developed-by and a Signed-off-by tags. Added, thanks. Although it appears I may have missed the boat.
Quoting Jonathon Reinhart (2021-11-22 17:56:55) > On Mon, Nov 22, 2021 at 9:24 AM Antoine Tenart <atenart@kernel.org> wrote: > > > > - @Jonathon: with your analysis and suggestion I think you should be > > listed as a co-developer. If that's fine please say so, and reply > > with both a Co-developed-by and a Signed-off-by tags. > > Added, thanks. Although it appears I may have missed the boat. Yes, the patch was applied quickly. Anyway, thanks for the investigation! Antoine
diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h index 1dfadb2e878d..76a0f16e56cf 100644 --- a/include/asm-generic/sections.h +++ b/include/asm-generic/sections.h @@ -130,18 +130,24 @@ static inline bool init_section_intersects(void *virt, size_t size) /** * is_kernel_core_data - checks if the pointer address is located in the - * .data section + * .data or .bss section * * @addr: address to check * - * Returns: true if the address is located in .data, false otherwise. + * Returns: true if the address is located in .data or .bss, false otherwise. * Note: On some archs it may return true for core RODATA, and false * for others. But will always be true for core RW data. */ static inline bool is_kernel_core_data(unsigned long addr) { - return addr >= (unsigned long)_sdata && - addr < (unsigned long)_edata; + if (addr >= (unsigned long)_sdata && addr < (unsigned long)_edata) + return true; + + if (addr >= (unsigned long)__bss_start && + addr < (unsigned long)__bss_stop) + return true; + + return false; } /**