Re: [PATCH 1/4] modpost: delegate updating namespaces to separate function

From: Will Deacon
Date: Fri Oct 11 2019 - 10:24:35 EST


On Thu, Oct 10, 2019 at 04:14:40PM +0100, Matthias Maennich wrote:
> Let the function 'sym_update_namespace' take care of updating the
> namespace for a symbol. While this currently only replaces one single
> location where namespaces are updated, in a following patch, this
> function will get more call sites.
>
> The function signature is intentionally close to sym_update_crc and
> taking the name by char* seems like unnecessary work as the symbol has
> to be looked up again. In a later patch of this series, this concern
> will be addressed.
>
> This function ensures that symbol::namespace is either NULL or has a
> valid non-empty value. Previously, the empty string was considered 'no
> namespace' as well and this lead to confusion.
>
> Signed-off-by: Matthias Maennich <maennich@xxxxxxxxxx>
> ---
> scripts/mod/modpost.c | 21 ++++++++++++++++++---
> 1 file changed, 18 insertions(+), 3 deletions(-)
>
> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index 4d2cdb4d71e3..9f5dcdff4d2f 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -362,6 +362,22 @@ static char *sym_extract_namespace(const char **symname)
> return namespace;
> }
>
> +static void sym_update_namespace(const char *symname, const char *namespace)
> +{
> + struct symbol *s = find_symbol(symname);
> + /* That symbol should have been created earlier and thus this is
> + * actually an assertion. */
> + if (!s) {
> + merror("Could not update namespace(%s) for symbol %s\n",
> + namespace, symname);
> + return;
> + }
> +
> + free(s->namespace);
> + s->namespace =
> + namespace && namespace[0] ? NOFAIL(strdup(namespace)) : NULL;
> +}

You made me look up C operator precedence again, but it's fine so:

Acked-by: Will Deacon <will@xxxxxxxxxx>

Will