lkml.org 
[lkml]   [2022]   [Aug]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 346/389] gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file
    Date
    From: Andrew Donnellan <ajd@linux.ibm.com>

    commit 012e8d2034f1bda8863435cd589636e618d6a659 upstream.

    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 *)&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: 38addce8b600 ("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: Erhard Furtner <erhard_f@mailbox.org>
    Signed-off-by: Andrew Donnellan <ajd@linux.ibm.com>
    Reviewed-by: Yury Norov <yury.norov@gmail.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20220816051720.44108-1-ajd@linux.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    scripts/Makefile.gcc-plugins | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/scripts/Makefile.gcc-plugins
    +++ b/scripts/Makefile.gcc-plugins
    @@ -6,7 +6,7 @@ gcc-plugin-$(CONFIG_GCC_PLUGIN_LATENT_EN
    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


    \
     
     \ /
      Last update: 2022-08-23 14:04    [W:3.058 / U:0.228 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site