depmod: do not output .bin to stdout
authorLucas De Marchi <lucas.demarchi@intel.com>
Thu, 5 Mar 2020 21:33:10 +0000 (13:33 -0800)
committerLucas De Marchi <lucas.demarchi@intel.com>
Fri, 13 Mar 2020 16:23:58 +0000 (09:23 -0700)
index_write() relies on fseek/ftell to manage the position to which we
are write and thus needs the file stream to support it.

Right now when trying to write the index to stdout we fail with:

depmod: tools/depmod.c:416: index_write: Assertion `initial_offset >= 0' failed.
Aborted (core dumped)

We have no interest in outputting our index to stdout, so just skip it
like is done with other indexes.

While at it, add/remove some newlines to improve readability.

Reported-by: Yanko Kaneti <yaneti@declera.com>
Fix: b866b2165ae6 ("Lookup aliases in the modules.builtin.modinfo")

tools/depmod.c

index fbbce10..875e314 100644 (file)
@@ -2408,8 +2408,10 @@ static int output_builtin_alias_bin(struct depmod *depmod, FILE *out)
        struct index_node *idx;
        struct kmod_list *l, *builtin = NULL;
 
-       idx = index_create();
+       if (out == stdout)
+               return 0;
 
+       idx = index_create();
        if (idx == NULL) {
                ret = -ENOMEM;
                goto fail;
@@ -2456,7 +2458,9 @@ static int output_builtin_alias_bin(struct depmod *depmod, FILE *out)
 
        if (count)
                index_write(idx, out);
+
        index_destroy(idx);
+
 fail:
        if (builtin)
                kmod_module_unref_list(builtin);