From: Lucas De Marchi <lucas.de.marchi@gmail.com>
To: Alexey Gladkov <gladkov.alexey@gmail.com>
Cc: mahatma@eu.by, linux-modules <linux-modules@vger.kernel.org>
Subject: Re: modinfo must show real module info, not context if filename set
Date: Wed, 26 Feb 2020 11:36:00 -0800 [thread overview]
Message-ID: <CAKi4VAJFM0oM5r0oUtgT0oChH2q6+5YNq_46e01ih4j5qXsCxQ@mail.gmail.com> (raw)
In-Reply-To: <20200226183153.35qmuu57svmx62ab@comp-core-i7-2640m-0182e6>
On Wed, Feb 26, 2020 at 10:33 AM Alexey Gladkov
<gladkov.alexey@gmail.com> wrote:
>
> On Wed, Feb 26, 2020 at 04:53:45AM +0200, Denis Kaganovich wrote:
> > After commit e7e2cb61fa9f1db3429d91ef6accff549500d268, even if real filename
> > passed - modinfo show info from context (so, I got built-in info from
> > running
> > kernel, but asking for new kernel's external module). This behaviour
> > unobvious
> > and incompatible with pre-v27. Simple use fake context for filename - IMHO
> > much less ugly then current results.
>
> Can you give an example of this misbehavior ?
>
> I have a two kernel directories (generic and current) with
> modules.builtin.modinfo:
>
> $ ls -1 /lib/modules/{5.2.0-generic,`uname -r`}/modules.builtin.modinfo
> /lib/modules/5.2.0-generic/modules.builtin.modinfo
> /lib/modules/5.2.0-current/modules.builtin.modinfo
>
> The ext4 module is built into both:
>
> $ tr '\0' '\n' < /lib/modules/`uname -r`/modules.builtin.modinfo |grep ^ext4.description
> ext4.description=Fourth Extended Filesystem
>
> $ tr '\0' '\n' < /lib/modules/5.2.0-generic/modules.builtin.modinfo |grep ^ext4.description
> ext4.description=Fourth Extended Filesystem
>
> Now I have build this module separately and put it into the tree:
that's why you don't have this problem. If you just build a new
ext4.ko module and give it
in the command line without putting it into the tree, then this
problem would be triggered.
$ ~/p/kmod/tools/modinfo fs/ext4/ext4.ko
filename: /home/ldmartin/p/gfx-internal/drm-intel-internal/fs/ext4/ext4.ko
modinfo: ERROR: could not get modinfo from 'ext4': No such file or directory
$ modinfo fs/ext4/ext4.ko
filename: /home/ldmartin/p/gfx-internal/drm-intel-internal/fs/ext4/ext4.ko
softdep: pre: crc32c
license: GPL
description: Fourth Extended Filesystem
author: Remy Card, Stephen Tweedie, Andrew Morton, Andreas
Dilger, Theodore Ts'o and others
alias: fs-ext4
alias: ext3
alias: fs-ext3
alias: ext2
alias: fs-ext2
depends: mbcache,jbd2
retpoline: Y
intree: Y
name: ext4
vermagic: 5.4.17+ SMP preempt mod_unload
Lucas De Marchi
>
> $ find /lib/modules/{5.2.0-generic,`uname -r`} -name 'ext4.*'
> /lib/modules/5.2.0-generic/kernel/fs/ext4/ext4.ko.gz
>
> For current kernel:
>
> $ tools/modinfo ext4 |grep filename
> filename: (builtin)
>
> For the other kernel:
>
> $ tools/modinfo -k 5.2.0-generic ext4 |grep filename
> filename: /lib/modules/5.2.0-generic/kernel/fs/ext4/ext4.ko.gz
>
> Only the external module is displayed, even if there is a module with the
> same name in the modules.builtin.modinfo.
>
> I also have a very old kernel without modules.builtin.modinfo:
>
> $ tools/modinfo -k 4.14.96-generic ext4 |grep filename
> filename: /lib/modules/4.14.96-generic/kernel/fs/ext4/ext4.ko.gz
>
> > Signed-off-by: Dzianis Kahanovich <mahatma@eu.by>
> >
> > --- a/tools/modinfo.c 2020-02-25 13:46:38.181693570 +0300
> > +++ b/tools/modinfo.c 2020-02-26 05:18:39.393790919 +0300
> > @@ -359,7 +359,7 @@ static bool is_module_filename(const cha
> >
> > static int do_modinfo(int argc, char *argv[])
> > {
> > - struct kmod_ctx *ctx;
> > + struct kmod_ctx *ctx, *ctx0;
> > char dirname_buf[PATH_MAX];
> > const char *dirname = NULL;
> > const char *kversion = NULL;
> > @@ -437,7 +437,8 @@ static int do_modinfo(int argc, char *ar
> > }
> >
> > ctx = kmod_new(dirname, &null_config);
> > - if (!ctx) {
> > + ctx0 = kmod_new("/dev/null", &null_config);
> > + if (!ctx || !ctx0) {
> > ERR("kmod_new() failed!\n");
> > return EXIT_FAILURE;
> > }
> > @@ -448,7 +449,7 @@ static int do_modinfo(int argc, char *ar
> > int r;
> >
> > if (is_module_filename(name))
> > - r = modinfo_path_do(ctx, name);
> > + r = modinfo_path_do(ctx0, name);
> > else
> > r = modinfo_alias_do(ctx, name);
> >
> > @@ -456,6 +457,7 @@ static int do_modinfo(int argc, char *ar
> > err = r;
> > }
> >
> > + kmod_unref(ctx0);
> > kmod_unref(ctx);
> > return err >= 0 ? EXIT_SUCCESS : EXIT_FAILURE;
> > }
> >
>
> --
> Rgrds, legion
>
--
Lucas De Marchi
next prev parent reply other threads:[~2020-02-26 19:36 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-26 2:53 modinfo must show real module info, not context if filename set Denis Kaganovich
2020-02-26 18:31 ` Alexey Gladkov
2020-02-26 19:36 ` Lucas De Marchi [this message]
2020-02-26 22:36 ` Alexey Gladkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAKi4VAJFM0oM5r0oUtgT0oChH2q6+5YNq_46e01ih4j5qXsCxQ@mail.gmail.com \
--to=lucas.de.marchi@gmail.com \
--cc=gladkov.alexey@gmail.com \
--cc=linux-modules@vger.kernel.org \
--cc=mahatma@eu.by \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).