• A
    gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file · 012e8d20
    Andrew Donnellan 提交于
    Commit 36d4b36b ("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 *)&latent_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 <yury.norov@gmail.com>
    Fixes: 38addce8 ("gcc-plugins: Add latent_entropy plugin")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216367
    Link: https://lore.kernel.org/linuxppc-dev/alpine.DEB.2.22.394.2208152006320.289321@ramsan.of.borg/Reported-by: NErhard Furtner <erhard_f@mailbox.org>
    Signed-off-by: NAndrew Donnellan <ajd@linux.ibm.com>
    Reviewed-by: NYury Norov <yury.norov@gmail.com>
    Signed-off-by: NKees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20220816051720.44108-1-ajd@linux.ibm.com
    012e8d20
Makefile.gcc-plugins 2.6 KB