Re: [PATCH] gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file
On Tue, 2022-08-16 at 12:25 -0700, Kees Cook wrote: > Applied to for-next/hardening, thanks! > > [1/1] gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin > disabled for a file > https://git.kernel.org/kees/c/2d08c71d2c79 > Thanks Kees! Can we make sure this lands in rc2? -- Andrew DonnellanOzLabs, ADL Canberra a...@linux.ibm.com IBM Australia Limited
Re: [PATCH] gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file
On Tue, 2022-08-16 at 05:14 -0700, Yury Norov wrote: > On Tue, Aug 16, 2022 at 03:17:20PM +1000, Andrew Donnellan wrote: > > Commit 36d4b36b6959 ("lib/nodemask: inline next_node_in() and > > node_random()") refactored some code by moving node_random() from > > lib/nodemask.c to include/linux/nodemask.h, thus requiring > > nodemask.h to > > include random.h, which conditionally defines add_latent_entropy() > > depending on whether the macro LATENT_ENTROPY_PLUGIN is defined. > > > > This broke the build on powerpc, where nodemask.h is indirectly > > included > > in arch/powerpc/kernel/prom_init.c, part of the early boot > > machinery that > > is excluded from the latent entropy plugin using > > DISABLE_LATENT_ENTROPY_PLUGIN. It turns out that while we add a gcc > > flag > > to disable the actual plugin, we don't undefine > > LATENT_ENTROPY_PLUGIN. > > > > This leads to the following: > > > > CC arch/powerpc/kernel/prom_init.o > > In file included from ./include/linux/nodemask.h:97, > > from ./include/linux/mmzone.h:17, > > from ./include/linux/gfp.h:7, > > from ./include/linux/xarray.h:15, > > As a side note, xarray can go with gfp_types.h instead of gfp.h Indeed, I just saw your patch to fix this. > > > Fixes: 36d4b36b6959 ("lib/nodemask: inline next_node_in() and > > node_random()") > > I think it rather fixes 38addce8b600ca33 ("gcc-plugins: Add > latent_entropy plugin"). You're right, I was in a rush and should have tagged that appropriately. > > For the rest, > Reviewed-by: Yury Norov Thanks! -- Andrew DonnellanOzLabs, ADL Canberra a...@linux.ibm.com IBM Australia Limited
Re: [PATCH] gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file
On Tue, 16 Aug 2022 15:17:20 +1000, Andrew Donnellan wrote: > Commit 36d4b36b6959 ("lib/nodemask: inline next_node_in() and > node_random()") refactored some code by moving node_random() from > lib/nodemask.c to include/linux/nodemask.h, thus requiring nodemask.h to > include random.h, which conditionally defines add_latent_entropy() > depending on whether the macro LATENT_ENTROPY_PLUGIN is defined. > > This broke the build on powerpc, where nodemask.h is indirectly included > in arch/powerpc/kernel/prom_init.c, part of the early boot machinery that > is excluded from the latent entropy plugin using > DISABLE_LATENT_ENTROPY_PLUGIN. It turns out that while we add a gcc flag > to disable the actual plugin, we don't undefine LATENT_ENTROPY_PLUGIN. > > [...] Applied to for-next/hardening, thanks! [1/1] gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file https://git.kernel.org/kees/c/2d08c71d2c79 -- Kees Cook
Re: [PATCH] gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file
On Tue, Aug 16, 2022 at 03:17:20PM +1000, Andrew Donnellan wrote: > Commit 36d4b36b6959 ("lib/nodemask: inline next_node_in() and > node_random()") refactored some code by moving node_random() from > lib/nodemask.c to include/linux/nodemask.h, thus requiring nodemask.h to > include random.h, which conditionally defines add_latent_entropy() > depending on whether the macro LATENT_ENTROPY_PLUGIN is defined. > > This broke the build on powerpc, where nodemask.h is indirectly included > in arch/powerpc/kernel/prom_init.c, part of the early boot machinery that > is excluded from the latent entropy plugin using > DISABLE_LATENT_ENTROPY_PLUGIN. It turns out that while we add a gcc flag > to disable the actual plugin, we don't undefine LATENT_ENTROPY_PLUGIN. > > This leads to the following: > > CC arch/powerpc/kernel/prom_init.o > In file included from ./include/linux/nodemask.h:97, >from ./include/linux/mmzone.h:17, >from ./include/linux/gfp.h:7, >from ./include/linux/xarray.h:15, As a side note, xarray can go with gfp_types.h instead of gfp.h >from ./include/linux/radix-tree.h:21, >from ./include/linux/idr.h:15, >from ./include/linux/kernfs.h:12, >from ./include/linux/sysfs.h:16, >from ./include/linux/kobject.h:20, >from ./include/linux/pci.h:35, >from arch/powerpc/kernel/prom_init.c:24: > ./include/linux/random.h: In function 'add_latent_entropy': > ./include/linux/random.h:25:46: error: 'latent_entropy' undeclared (first > use in this function); did you mean 'add_latent_entropy'? > 25 | add_device_randomness((const void *)_entropy, > sizeof(latent_entropy)); > | ^~ > | add_latent_entropy > ./include/linux/random.h:25:46: note: each undeclared identifier is > reported only once for each function it appears in > make[2]: *** [scripts/Makefile.build:249: arch/powerpc/kernel/prom_init.o] > Fehler 1 > make[1]: *** [scripts/Makefile.build:465: arch/powerpc/kernel] Fehler 2 > make: *** [Makefile:1855: arch/powerpc] Error 2 > > Change the DISABLE_LATENT_ENTROPY_PLUGIN flags to undefine > LATENT_ENTROPY_PLUGIN for files where the plugin is disabled. > > Cc: Yury Norov > Cc: Emese Revfy > Fixes: 36d4b36b6959 ("lib/nodemask: inline next_node_in() and node_random()") I think it rather fixes 38addce8b600ca33 ("gcc-plugins: Add latent_entropy plugin"). For the rest, Reviewed-by: Yury Norov > Link: https://bugzilla.kernel.org/show_bug.cgi?id=216367 > Link: > https://lore.kernel.org/linuxppc-dev/alpine.deb.2.22.394.2208152006320.289...@ramsan.of.borg/ > Reported-by: Erhard Furtner > Signed-off-by: Andrew Donnellan > --- > scripts/Makefile.gcc-plugins | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/scripts/Makefile.gcc-plugins b/scripts/Makefile.gcc-plugins > index 692d64a70542..e4deaf5fa571 100644 > --- a/scripts/Makefile.gcc-plugins > +++ b/scripts/Makefile.gcc-plugins > @@ -4,7 +4,7 @@ gcc-plugin-$(CONFIG_GCC_PLUGIN_LATENT_ENTROPY)+= > latent_entropy_plugin.so > gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_LATENT_ENTROPY)\ > += -DLATENT_ENTROPY_PLUGIN > ifdef CONFIG_GCC_PLUGIN_LATENT_ENTROPY > -DISABLE_LATENT_ENTROPY_PLUGIN += > -fplugin-arg-latent_entropy_plugin-disable > +DISABLE_LATENT_ENTROPY_PLUGIN += > -fplugin-arg-latent_entropy_plugin-disable -ULATENT_ENTROPY_PLUGIN > endif > export DISABLE_LATENT_ENTROPY_PLUGIN > > -- > 2.30.2
[PATCH] gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file
Commit 36d4b36b6959 ("lib/nodemask: inline next_node_in() and node_random()") refactored some code by moving node_random() from lib/nodemask.c to include/linux/nodemask.h, thus requiring nodemask.h to include random.h, which conditionally defines add_latent_entropy() depending on whether the macro LATENT_ENTROPY_PLUGIN is defined. This broke the build on powerpc, where nodemask.h is indirectly included in arch/powerpc/kernel/prom_init.c, part of the early boot machinery that is excluded from the latent entropy plugin using DISABLE_LATENT_ENTROPY_PLUGIN. It turns out that while we add a gcc flag to disable the actual plugin, we don't undefine LATENT_ENTROPY_PLUGIN. This leads to the following: CC arch/powerpc/kernel/prom_init.o In file included from ./include/linux/nodemask.h:97, from ./include/linux/mmzone.h:17, from ./include/linux/gfp.h:7, from ./include/linux/xarray.h:15, from ./include/linux/radix-tree.h:21, from ./include/linux/idr.h:15, from ./include/linux/kernfs.h:12, from ./include/linux/sysfs.h:16, from ./include/linux/kobject.h:20, from ./include/linux/pci.h:35, from arch/powerpc/kernel/prom_init.c:24: ./include/linux/random.h: In function 'add_latent_entropy': ./include/linux/random.h:25:46: error: 'latent_entropy' undeclared (first use in this function); did you mean 'add_latent_entropy'? 25 | add_device_randomness((const void *)_entropy, sizeof(latent_entropy)); | ^~ | add_latent_entropy ./include/linux/random.h:25:46: note: each undeclared identifier is reported only once for each function it appears in make[2]: *** [scripts/Makefile.build:249: arch/powerpc/kernel/prom_init.o] Fehler 1 make[1]: *** [scripts/Makefile.build:465: arch/powerpc/kernel] Fehler 2 make: *** [Makefile:1855: arch/powerpc] Error 2 Change the DISABLE_LATENT_ENTROPY_PLUGIN flags to undefine LATENT_ENTROPY_PLUGIN for files where the plugin is disabled. Cc: Yury Norov Cc: Emese Revfy Fixes: 36d4b36b6959 ("lib/nodemask: inline next_node_in() and node_random()") Link: https://bugzilla.kernel.org/show_bug.cgi?id=216367 Link: https://lore.kernel.org/linuxppc-dev/alpine.deb.2.22.394.2208152006320.289...@ramsan.of.borg/ Reported-by: Erhard Furtner Signed-off-by: Andrew Donnellan --- scripts/Makefile.gcc-plugins | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Makefile.gcc-plugins b/scripts/Makefile.gcc-plugins index 692d64a70542..e4deaf5fa571 100644 --- a/scripts/Makefile.gcc-plugins +++ b/scripts/Makefile.gcc-plugins @@ -4,7 +4,7 @@ gcc-plugin-$(CONFIG_GCC_PLUGIN_LATENT_ENTROPY) += latent_entropy_plugin.so gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_LATENT_ENTROPY) \ += -DLATENT_ENTROPY_PLUGIN ifdef CONFIG_GCC_PLUGIN_LATENT_ENTROPY -DISABLE_LATENT_ENTROPY_PLUGIN += -fplugin-arg-latent_entropy_plugin-disable +DISABLE_LATENT_ENTROPY_PLUGIN += -fplugin-arg-latent_entropy_plugin-disable -ULATENT_ENTROPY_PLUGIN endif export DISABLE_LATENT_ENTROPY_PLUGIN -- 2.30.2