From: Harish Jenny Kandiga Nagaraj <harish_kandiga@mentor.com>
To: Lucas De Marchi <lucas.de.marchi@gmail.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>,
linux-modules <linux-modules@vger.kernel.org>,
lkml <linux-kernel@vger.kernel.org>,
greg KH <gregkh@linuxfoundation.org>
Subject: Re: [PATCH] libkmod-module: Remove directory existence check for KMOD_MODULE_BUILTIN
Date: Thu, 19 Feb 2015 18:02:49 +0530 [thread overview]
Message-ID: <54E5D7F1.2090804@mentor.com> (raw)
In-Reply-To: <CAKi4VA+ceEsQm30+4q_hvgtm2Uwo1cJSQdJErUh6hsd=fwbe0g@mail.gmail.com>
On Thursday 19 February 2015 04:00 PM, Lucas De Marchi wrote:
> On Thu, Feb 19, 2015 at 3:49 AM, Harish Jenny Kandiga Nagaraj
> <harish_kandiga@mentor.com> wrote:
>>> Harrish, in your patch if you just change the "return
>>> KMOD_MODULE_BUILTIN;" to "return KMOD_MODULE_COMING;" does it work?
>> Yes. Returning KMOD_MODULE_COMING instead of KMOD_MODULE_BUILTIN works. The built-in modules are handled by looking at the modules.builtin index file. Is there any chance of returning KMOD_MODULE_COMING for builti-in modules? If it does not have any impact, then the fix should be fine.
> well... you're not returning KMOD_MODULE_COMING for a builtin module.
> Having the directory /sys/module/<name> and not the initstate could be
> either that the module is builtin or that there's a race while loading
> the module and it's in the coming state. However since we use the
> index to decide if this module is builtin in the beginning of this
> function, here it can only be the second case.
>
> However... mod->builtin in the beginning of this function is only set
> if the module is created by a lookup rather than from name or from
> path.... maybe here we need to actually fallback to the index rather
> than the cached value, otherwise this test would fail (considering
> "vt" is builtin):
>
> kmod_module_new_from_name(ctx, "vt", &mod);
> kmod_module_get_initstate(mod, &state);
>
something like this ?
diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c
index 19bb2ed..d424f3e 100644
--- a/libkmod/libkmod-module.c
+++ b/libkmod/libkmod-module.c
@@ -99,6 +99,8 @@ struct kmod_module {
* "module", except knowing it's builtin.
*/
bool builtin : 1;
+
+ bool lookup : 1;
};
static inline const char *path_join(const char *path, size_t prefixlen,
@@ -215,6 +217,11 @@ void kmod_module_set_builtin(struct kmod_module *mod, bool builtin)
mod->builtin = builtin;
}
+void kmod_module_set_lookup(struct kmod_module *mod, bool lookup)
+{
+ mod->lookup = lookup;
+}
+
void kmod_module_set_required(struct kmod_module *mod, bool required)
{
mod->required = required;
@@ -1729,7 +1736,7 @@ KMOD_EXPORT int kmod_module_get_initstate(const struct kmod_module *mod)
struct stat st;
path[pathlen - (sizeof("/initstate") - 1)] = '\0';
if (stat(path, &st) == 0 && S_ISDIR(st.st_mode))
- return KMOD_MODULE_COMING;
+ return mod->lookup ? KMOD_MODULE_COMING : KMOD_MODULE_BUILTIN;
}
DBG(mod->ctx, "could not open '%s': %s\n",
diff --git a/tools/modprobe.c b/tools/modprobe.c
index 3af16c7..43288b6 100644
--- a/tools/modprobe.c
+++ b/tools/modprobe.c
@@ -549,6 +549,7 @@ static int insmod(struct kmod_ctx *ctx, const char *alias,
if (lookup_only)
printf("%s\n", kmod_module_get_name(mod));
else {
+ kmod_module_set_lookup(mod,true);
err = kmod_module_probe_insert_module(mod, flags,
extra_options, NULL, NULL, show);
}
>> Do I need to send a separate patch ?
> I was hoping it would be a oneliner, but it isn't. If you are going to
> send a patch, please add the necessary checks for the builtin index.
> Otherwise I can take a look on this until the end of this week.
>
next prev parent reply other threads:[~2015-02-19 12:32 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-17 12:56 [PATCH] libkmod-module: Remove directory existence check for KMOD_MODULE_BUILTIN Harish Jenny K N
2015-02-17 17:30 ` Lucas De Marchi
2015-02-18 4:07 ` Rusty Russell
2015-02-18 6:10 ` Harish Jenny Kandiga Nagaraj
2015-02-18 16:50 ` Lucas De Marchi
2015-02-18 22:40 ` Rusty Russell
2015-02-19 1:19 ` Lucas De Marchi
2015-02-19 2:25 ` greg KH
2015-02-19 3:46 ` Lucas De Marchi
2015-02-19 2:25 ` Rusty Russell
2015-02-19 3:34 ` Lucas De Marchi
2015-02-19 5:49 ` Harish Jenny Kandiga Nagaraj
2015-02-19 10:30 ` Lucas De Marchi
2015-02-19 10:30 ` Lucas De Marchi
2015-02-19 12:32 ` Harish Jenny Kandiga Nagaraj [this message]
2015-02-19 12:43 ` Lucas De Marchi
2015-02-19 12:43 ` Lucas De Marchi
2015-02-19 14:02 ` Harish Jenny Kandiga Nagaraj
2015-02-19 14:35 ` Harish Jenny Kandiga Nagaraj
2015-02-28 17:28 ` Lucas De Marchi
2015-03-02 4:52 ` Harish Jenny Kandiga Nagaraj
2015-02-19 12:33 ` Harish Jenny Kandiga Nagaraj
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=54E5D7F1.2090804@mentor.com \
--to=harish_kandiga@mentor.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-modules@vger.kernel.org \
--cc=lucas.de.marchi@gmail.com \
--cc=rusty@rustcorp.com.au \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.