* [PATCH] modules: sysfs - export: taint, address, size
@ 2012-01-07 15:44 Kay Sievers
2012-01-09 7:27 ` Rusty Russell
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Kay Sievers @ 2012-01-07 15:44 UTC (permalink / raw)
To: Rusty Russell; +Cc: linux-kernel, Lucas De Marchi
From: Kay Sievers <kay.sievers@vrfy.org>
Subject: modules: sysfs - export taint, address, size
Recent tools do not use /proc to retrieve module information. A few values
are currently missing from sysfs.
Cc: Lucas De Marchi <lucas.demarchi@profusion.mobi>
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
---
kernel/module.c | 89 +++++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 62 insertions(+), 27 deletions(-)
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -849,6 +849,26 @@ out:
return ret;
}
+static size_t module_flags_taint(struct module *mod, char *buf)
+{
+ size_t l = 0;
+
+ if (mod->taints & (1 << TAINT_PROPRIETARY_MODULE))
+ buf[l++] = 'P';
+ else if (mod->taints & (1 << TAINT_OOT_MODULE))
+ buf[l++] = 'O';
+ if (mod->taints & (1 << TAINT_FORCED_MODULE))
+ buf[l++] = 'F';
+ if (mod->taints & (1 << TAINT_CRAP))
+ buf[l++] = 'C';
+ /*
+ * TAINT_FORCED_RMMOD: could be added.
+ * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't
+ * apply to modules.
+ */
+ return l;
+}
+
static inline void print_unload_info(struct seq_file *m, struct module *mod)
{
struct module_use *use;
@@ -907,10 +927,8 @@ static ssize_t show_refcnt(struct module
return sprintf(buffer, "%u\n", module_refcount(mk->mod));
}
-static struct module_attribute refcnt = {
- .attr = { .name = "refcnt", .mode = 0444 },
- .show = show_refcnt,
-};
+static struct module_attribute refcnt =
+ __ATTR(refcnt, 0444, show_refcnt, NULL);
void module_put(struct module *module)
{
@@ -970,10 +988,8 @@ static ssize_t show_initstate(struct mod
return sprintf(buffer, "%s\n", state);
}
-static struct module_attribute initstate = {
- .attr = { .name = "initstate", .mode = 0444 },
- .show = show_initstate,
-};
+static struct module_attribute module_initstate =
+ __ATTR(initstate, 0444, show_initstate, NULL);
static ssize_t store_uevent(struct module_attribute *mattr,
struct module_kobject *mk,
@@ -986,16 +1002,48 @@ static ssize_t store_uevent(struct modul
return count;
}
-struct module_attribute module_uevent = {
- .attr = { .name = "uevent", .mode = 0200 },
- .store = store_uevent,
-};
+struct module_attribute module_uevent =
+ __ATTR(uevent, 0200, NULL, store_uevent);
+
+static ssize_t show_address(struct module_attribute *mattr,
+ struct module_kobject *mk, char *buffer)
+{
+ return sprintf(buffer, "0x%pK\n", mk->mod->module_core);
+}
+
+struct module_attribute module_address =
+ __ATTR(address, 0444, show_address, NULL);
+
+static ssize_t show_size(struct module_attribute *mattr,
+ struct module_kobject *mk, char *buffer)
+{
+ return sprintf(buffer, "%u\n", mk->mod->init_size + mk->mod->core_size);
+}
+
+struct module_attribute module_size =
+ __ATTR(size, 0444, show_size, NULL);
+
+static ssize_t show_taint(struct module_attribute *mattr,
+ struct module_kobject *mk, char *buffer)
+{
+ size_t l;
+
+ l = module_flags_taint(mk->mod, buffer);
+ buffer[l++] = '\n';
+ return l;
+}
+
+struct module_attribute module_taint =
+ __ATTR(taint, 0444, show_taint, NULL);
static struct module_attribute *modinfo_attrs[] = {
&modinfo_version,
&modinfo_srcversion,
- &initstate,
+ &module_initstate,
&module_uevent,
+ &module_address,
+ &module_size,
+ &module_taint,
#ifdef CONFIG_MODULE_UNLOAD
&refcnt,
#endif
@@ -3256,20 +3304,7 @@ static char *module_flags(struct module
mod->state == MODULE_STATE_GOING ||
mod->state == MODULE_STATE_COMING) {
buf[bx++] = '(';
- if (mod->taints & (1 << TAINT_PROPRIETARY_MODULE))
- buf[bx++] = 'P';
- else if (mod->taints & (1 << TAINT_OOT_MODULE))
- buf[bx++] = 'O';
- if (mod->taints & (1 << TAINT_FORCED_MODULE))
- buf[bx++] = 'F';
- if (mod->taints & (1 << TAINT_CRAP))
- buf[bx++] = 'C';
- /*
- * TAINT_FORCED_RMMOD: could be added.
- * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't
- * apply to modules.
- */
-
+ bx += module_flags_taint(mod, buf + bx);
/* Show a - for module-is-being-unloaded */
if (mod->state == MODULE_STATE_GOING)
buf[bx++] = '-';
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [PATCH] modules: sysfs - export: taint, address, size 2012-01-07 15:44 [PATCH] modules: sysfs - export: taint, address, size Kay Sievers @ 2012-01-09 7:27 ` Rusty Russell 2012-01-09 12:44 ` Kay Sievers 2012-01-09 15:52 ` Nick Bowler 2012-01-09 23:07 ` Greg KH 2 siblings, 1 reply; 10+ messages in thread From: Rusty Russell @ 2012-01-09 7:27 UTC (permalink / raw) To: Kay Sievers; +Cc: Jon Masters, linux-kernel, Lucas De Marchi On Sat, 07 Jan 2012 16:44:36 +0100, Kay Sievers <kay.sievers@vrfy.org> wrote: > From: Kay Sievers <kay.sievers@vrfy.org> > Subject: modules: sysfs - export taint, address, size > > Recent tools do not use /proc to retrieve module information. A few values > are currently missing from sysfs. Well, strace says lsmod still does. Is libkmod doing something different? Should we be deprecating /proc/modules? > Cc: Lucas De Marchi <lucas.demarchi@profusion.mobi> > Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> > --- > kernel/module.c | 89 +++++++++++++++++++++++++++++++++++++++----------------- > 1 file changed, 62 insertions(+), 27 deletions(-) > > --- a/kernel/module.c > +++ b/kernel/module.c > @@ -849,6 +849,26 @@ out: > return ret; > } > > +static size_t module_flags_taint(struct module *mod, char *buf) > +{ > + size_t l = 0; > + > + if (mod->taints & (1 << TAINT_PROPRIETARY_MODULE)) > + buf[l++] = 'P'; > + else if (mod->taints & (1 << TAINT_OOT_MODULE)) > + buf[l++] = 'O'; > + if (mod->taints & (1 << TAINT_FORCED_MODULE)) > + buf[l++] = 'F'; > + if (mod->taints & (1 << TAINT_CRAP)) > + buf[l++] = 'C'; > + /* > + * TAINT_FORCED_RMMOD: could be added. > + * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't > + * apply to modules. > + */ > + return l; > +} The else here is weird. Shouldn't we leave the exclusion elsewhere? > +static ssize_t show_address(struct module_attribute *mattr, > + struct module_kobject *mk, char *buffer) > +{ > + return sprintf(buffer, "0x%pK\n", mk->mod->module_core); > +} > + > +struct module_attribute module_address = > + __ATTR(address, 0444, show_address, NULL); > + > +static ssize_t show_size(struct module_attribute *mattr, > + struct module_kobject *mk, char *buffer) > +{ > + return sprintf(buffer, "%u\n", mk->mod->init_size + mk->mod->core_size); > +} > + > +struct module_attribute module_size = > + __ATTR(size, 0444, show_size, NULL); This copies a past mistake, and is definitely wrong. Either expose both pointers and sizes, or don't include init_size here. Sure, it'll normally be 0, but if not it's confusing... But the bigger question is: Why are we exposing these sizes? /proc/modules did since 2.2, or before, but that doesn't make it the best option... Cheers, Rusty. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] modules: sysfs - export: taint, address, size 2012-01-09 7:27 ` Rusty Russell @ 2012-01-09 12:44 ` Kay Sievers 2012-01-09 18:40 ` Randy Dunlap 2012-01-09 22:44 ` Rusty Russell 0 siblings, 2 replies; 10+ messages in thread From: Kay Sievers @ 2012-01-09 12:44 UTC (permalink / raw) To: Rusty Russell; +Cc: Jon Masters, linux-kernel, Lucas De Marchi On Mon, Jan 9, 2012 at 08:27, Rusty Russell <rusty@rustcorp.com.au> wrote: > On Sat, 07 Jan 2012 16:44:36 +0100, Kay Sievers <kay.sievers@vrfy.org> wrote: >> Recent tools do not use /proc to retrieve module information. A few values >> are currently missing from sysfs. > > Well, strace says lsmod still does. Is libkmod doing something > different? Yes, kmod used /sys only. There is current code to read the size, to provide the 'lsmod' output, but that will be removed. > Should we be deprecating /proc/modules? In the longer run, yes. We still aim for leaving everything that isn't process- or namespace-related (which, with some stretch is always process-related) alone, and use /sys for it. >> +static size_t module_flags_taint(struct module *mod, char *buf) >> +{ >> + size_t l = 0; >> + >> + if (mod->taints & (1 << TAINT_PROPRIETARY_MODULE)) >> + buf[l++] = 'P'; >> + else if (mod->taints & (1 << TAINT_OOT_MODULE)) >> + buf[l++] = 'O'; >> + if (mod->taints & (1 << TAINT_FORCED_MODULE)) >> + buf[l++] = 'F'; >> + if (mod->taints & (1 << TAINT_CRAP)) >> + buf[l++] = 'C'; >> + /* >> + * TAINT_FORCED_RMMOD: could be added. >> + * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't >> + * apply to modules. >> + */ >> + return l; >> +} > > The else here is weird. Shouldn't we leave the exclusion elsewhere? You mean the 'else if ... TAINT_OOT_MODULE'? It's a one-to-one copy of the current code, which just moved up a bit. Disconnect the two flags form each other? >> +static ssize_t show_address(struct module_attribute *mattr, >> + struct module_kobject *mk, char *buffer) >> +{ >> + return sprintf(buffer, "0x%pK\n", mk->mod->module_core); >> +} >> + >> +struct module_attribute module_address = >> + __ATTR(address, 0444, show_address, NULL); >> + >> +static ssize_t show_size(struct module_attribute *mattr, >> + struct module_kobject *mk, char *buffer) >> +{ >> + return sprintf(buffer, "%u\n", mk->mod->init_size + mk->mod->core_size); >> +} >> + >> +struct module_attribute module_size = >> + __ATTR(size, 0444, show_size, NULL); > > This copies a past mistake, and is definitely wrong. Either expose both > pointers and sizes, or don't include init_size here. Sure, it'll > normally be 0, but if not it's confusing... Ah, good to know, mod->init_size is 0 for all modules here, so we should just drop mod->init_size and maybe name the 'size' attribute to 'coresize'? > But the bigger question is: Why are we exposing these sizes? > /proc/modules did since 2.2, or before, but that doesn't make it the > best option... Good question, I doubt it is too useful, it's just that 'lsmod' shows it, so we wanted to show too. Kay ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] modules: sysfs - export: taint, address, size 2012-01-09 12:44 ` Kay Sievers @ 2012-01-09 18:40 ` Randy Dunlap 2012-01-09 22:44 ` Rusty Russell 1 sibling, 0 replies; 10+ messages in thread From: Randy Dunlap @ 2012-01-09 18:40 UTC (permalink / raw) To: Kay Sievers; +Cc: Rusty Russell, Jon Masters, linux-kernel, Lucas De Marchi On 01/09/2012 04:44 AM, Kay Sievers wrote: > On Mon, Jan 9, 2012 at 08:27, Rusty Russell <rusty@rustcorp.com.au> wrote: >> On Sat, 07 Jan 2012 16:44:36 +0100, Kay Sievers <kay.sievers@vrfy.org> wrote: > >>> Recent tools do not use /proc to retrieve module information. A few values >>> are currently missing from sysfs. >> >> Well, strace says lsmod still does. Is libkmod doing something >> different? > > Yes, kmod used /sys only. > > There is current code to read the size, to provide the 'lsmod' output, > but that will be removed. > >> Should we be deprecating /proc/modules? > > In the longer run, yes. Deprecate it for udev? OK. what about other users of it? > We still aim for leaving everything that isn't process- or > namespace-related (which, with some stretch is always process-related) > alone, and use /sys for it. -- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] modules: sysfs - export: taint, address, size 2012-01-09 12:44 ` Kay Sievers 2012-01-09 18:40 ` Randy Dunlap @ 2012-01-09 22:44 ` Rusty Russell 2012-01-10 16:47 ` Kay Sievers 1 sibling, 1 reply; 10+ messages in thread From: Rusty Russell @ 2012-01-09 22:44 UTC (permalink / raw) To: Kay Sievers; +Cc: Jon Masters, linux-kernel, Lucas De Marchi On Mon, 9 Jan 2012 13:44:52 +0100, Kay Sievers <kay.sievers@vrfy.org> wrote: > On Mon, Jan 9, 2012 at 08:27, Rusty Russell <rusty@rustcorp.com.au> wrote: > > The else here is weird. Shouldn't we leave the exclusion elsewhere? > > You mean the 'else if ... TAINT_OOT_MODULE'? It's a one-to-one copy > of the current code, which just moved up a bit. > > Disconnect the two flags form each other? Yes, I think so. > > This copies a past mistake, and is definitely wrong. Either expose both > > pointers and sizes, or don't include init_size here. Sure, it'll > > normally be 0, but if not it's confusing... > > Ah, good to know, mod->init_size is 0 for all modules here, so we > should just drop mod->init_size and maybe name the 'size' attribute to > 'coresize'? If a module is still initializing, mod->init_size may well be non-zero. Let's rename it to coresize, and add initsize. > > But the bigger question is: Why are we exposing these sizes? > > /proc/modules did since 2.2, or before, but that doesn't make it the > > best option... > > Good question, I doubt it is too useful, it's just that 'lsmod' shows > it, so we wanted to show too. And breaking lsmod output might kill some scripts. So it stays. Let's drop the address stuff though. We can actually do something more radical: we could change the kernel to call modprobe to resolve unresolved symbols. We already support symbol:<symbol> for symbol_request(). This means that modprobe still needs to maintain a sym->mod mapping (though I would argue depmod should be moved into the kernel source), but not any dependency mapping. Thanks, Rusty. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] modules: sysfs - export: taint, address, size 2012-01-09 22:44 ` Rusty Russell @ 2012-01-10 16:47 ` Kay Sievers 2012-01-10 23:54 ` Rusty Russell 0 siblings, 1 reply; 10+ messages in thread From: Kay Sievers @ 2012-01-10 16:47 UTC (permalink / raw) To: Rusty Russell; +Cc: Jon Masters, linux-kernel, Lucas De Marchi On Tue, 2012-01-10 at 09:14 +1030, Rusty Russell wrote: > On Mon, 9 Jan 2012 13:44:52 +0100, Kay Sievers <kay.sievers@vrfy.org> wrote: > > On Mon, Jan 9, 2012 at 08:27, Rusty Russell <rusty@rustcorp.com.au> wrote: > > > The else here is weird. Shouldn't we leave the exclusion elsewhere? > > > > You mean the 'else if ... TAINT_OOT_MODULE'? It's a one-to-one copy > > of the current code, which just moved up a bit. > > > > Disconnect the two flags form each other? > > Yes, I think so. > > > > This copies a past mistake, and is definitely wrong. Either expose both > > > pointers and sizes, or don't include init_size here. Sure, it'll > > > normally be 0, but if not it's confusing... > > > > Ah, good to know, mod->init_size is 0 for all modules here, so we > > should just drop mod->init_size and maybe name the 'size' attribute to > > 'coresize'? > > If a module is still initializing, mod->init_size may well be non-zero. > Let's rename it to coresize, and add initsize. > > > > But the bigger question is: Why are we exposing these sizes? > > > /proc/modules did since 2.2, or before, but that doesn't make it the > > > best option... > > > > Good question, I doubt it is too useful, it's just that 'lsmod' shows > > it, so we wanted to show too. > > And breaking lsmod output might kill some scripts. So it stays. > > Let's drop the address stuff though. From: Kay Sievers <kay.sievers@vrfy.org> Subject: modules: sysfs - export: taint, coresize, initsize Recent tools do not want to use /proc to retrieve module information. A few values are currently missing from sysfs to replace the information available in /proc/modules. This adds /sys/module/*/{coresize,initsize,taint} attributes. TAINT_PROPRIETARY_MODULE (P) and TAINT_OOT_MODULE (O) flags are both always shown now, and do no longer exclude each other, also in /proc/modules. Replace the open-coded sysfs attribute initializers with the __ATTR() macro. Add the new attributes to Documentation/ABI. Cc: Lucas De Marchi <lucas.demarchi@profusion.mobi> Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> --- Documentation/ABI/testing/sysfs-module | 16 +++++ kernel/module.c | 93 ++++++++++++++++++++++----------- 2 files changed, 80 insertions(+), 29 deletions(-) --- a/Documentation/ABI/testing/sysfs-module +++ b/Documentation/ABI/testing/sysfs-module @@ -33,3 +33,19 @@ Description: Maximum time allowed for pe Beware, non-standard modes are usually not thoroughly tested by hardware designers, and the hardware can malfunction when this setting differ from default 100. + +What: /sys/module/*/{coresize,initsize} +Date: Jan 2012 +KernelVersion:»·3.3 +Contact: Kay Sievers <kay.sievers@vrfy.org> +Description: Module size in bytes. + +What: /sys/module/*/taint +Date: Jan 2012 +KernelVersion:»·3.3 +Contact: Kay Sievers <kay.sievers@vrfy.org> +Description: Module taint flags: + P - proprietary module + O - out-of-tree module + F - force-loaded module + C - staging driver module --- a/kernel/module.c +++ b/kernel/module.c @@ -849,6 +849,26 @@ out: return ret; } +static size_t module_flags_taint(struct module *mod, char *buf) +{ + size_t l = 0; + + if (mod->taints & (1 << TAINT_PROPRIETARY_MODULE)) + buf[l++] = 'P'; + if (mod->taints & (1 << TAINT_OOT_MODULE)) + buf[l++] = 'O'; + if (mod->taints & (1 << TAINT_FORCED_MODULE)) + buf[l++] = 'F'; + if (mod->taints & (1 << TAINT_CRAP)) + buf[l++] = 'C'; + /* + * TAINT_FORCED_RMMOD: could be added. + * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't + * apply to modules. + */ + return l; +} + static inline void print_unload_info(struct seq_file *m, struct module *mod) { struct module_use *use; @@ -907,10 +927,8 @@ static ssize_t show_refcnt(struct module return sprintf(buffer, "%u\n", module_refcount(mk->mod)); } -static struct module_attribute refcnt = { - .attr = { .name = "refcnt", .mode = 0444 }, - .show = show_refcnt, -}; +static struct module_attribute modinfo_refcnt = + __ATTR(refcnt, 0444, show_refcnt, NULL); void module_put(struct module *module) { @@ -970,10 +988,8 @@ static ssize_t show_initstate(struct mod return sprintf(buffer, "%s\n", state); } -static struct module_attribute initstate = { - .attr = { .name = "initstate", .mode = 0444 }, - .show = show_initstate, -}; +static struct module_attribute modinfo_initstate = + __ATTR(initstate, 0444, show_initstate, NULL); static ssize_t store_uevent(struct module_attribute *mattr, struct module_kobject *mk, @@ -986,18 +1002,50 @@ static ssize_t store_uevent(struct modul return count; } -struct module_attribute module_uevent = { - .attr = { .name = "uevent", .mode = 0200 }, - .store = store_uevent, -}; +struct module_attribute module_uevent = + __ATTR(uevent, 0200, NULL, store_uevent); + +static ssize_t show_coresize(struct module_attribute *mattr, + struct module_kobject *mk, char *buffer) +{ + return sprintf(buffer, "%u\n", mk->mod->core_size); +} + +static struct module_attribute modinfo_coresize = + __ATTR(coresize, 0444, show_coresize, NULL); + +static ssize_t show_initsize(struct module_attribute *mattr, + struct module_kobject *mk, char *buffer) +{ + return sprintf(buffer, "%u\n", mk->mod->init_size); +} + +static struct module_attribute modinfo_initsize = + __ATTR(initsize, 0444, show_initsize, NULL); + +static ssize_t show_taint(struct module_attribute *mattr, + struct module_kobject *mk, char *buffer) +{ + size_t l; + + l = module_flags_taint(mk->mod, buffer); + buffer[l++] = '\n'; + return l; +} + +static struct module_attribute modinfo_taint = + __ATTR(taint, 0444, show_taint, NULL); static struct module_attribute *modinfo_attrs[] = { + &module_uevent, &modinfo_version, &modinfo_srcversion, - &initstate, - &module_uevent, + &modinfo_initstate, + &modinfo_coresize, + &modinfo_initsize, + &modinfo_taint, #ifdef CONFIG_MODULE_UNLOAD - &refcnt, + &modinfo_refcnt, #endif NULL, }; @@ -3256,20 +3304,7 @@ static char *module_flags(struct module mod->state == MODULE_STATE_GOING || mod->state == MODULE_STATE_COMING) { buf[bx++] = '('; - if (mod->taints & (1 << TAINT_PROPRIETARY_MODULE)) - buf[bx++] = 'P'; - else if (mod->taints & (1 << TAINT_OOT_MODULE)) - buf[bx++] = 'O'; - if (mod->taints & (1 << TAINT_FORCED_MODULE)) - buf[bx++] = 'F'; - if (mod->taints & (1 << TAINT_CRAP)) - buf[bx++] = 'C'; - /* - * TAINT_FORCED_RMMOD: could be added. - * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't - * apply to modules. - */ - + bx += module_flags_taint(mod, buf + bx); /* Show a - for module-is-being-unloaded */ if (mod->state == MODULE_STATE_GOING) buf[bx++] = '-'; ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] modules: sysfs - export: taint, address, size 2012-01-10 16:47 ` Kay Sievers @ 2012-01-10 23:54 ` Rusty Russell 2012-01-11 1:56 ` Lucas De Marchi 0 siblings, 1 reply; 10+ messages in thread From: Rusty Russell @ 2012-01-10 23:54 UTC (permalink / raw) To: Kay Sievers; +Cc: Jon Masters, linux-kernel, Lucas De Marchi On Tue, 10 Jan 2012 17:47:43 +0100, Kay Sievers <kay.sievers@vrfy.org> wrote: > From: Kay Sievers <kay.sievers@vrfy.org> > Subject: modules: sysfs - export: taint, coresize, initsize > > Recent tools do not want to use /proc to retrieve module information. A few > values are currently missing from sysfs to replace the information available > in /proc/modules. > > This adds /sys/module/*/{coresize,initsize,taint} attributes. > > TAINT_PROPRIETARY_MODULE (P) and TAINT_OOT_MODULE (O) flags are both always > shown now, and do no longer exclude each other, also in /proc/modules. > > Replace the open-coded sysfs attribute initializers with the __ATTR() macro. > > Add the new attributes to Documentation/ABI. > > Cc: Lucas De Marchi <lucas.demarchi@profusion.mobi> > Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> Thanks, applied. Cheers, Rusty. PS. You could have split this into four separate patches, like the pedants wanted, and got more gititude! PPS. I'm so glad you didn't. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] modules: sysfs - export: taint, address, size 2012-01-10 23:54 ` Rusty Russell @ 2012-01-11 1:56 ` Lucas De Marchi 0 siblings, 0 replies; 10+ messages in thread From: Lucas De Marchi @ 2012-01-11 1:56 UTC (permalink / raw) To: Rusty Russell; +Cc: Kay Sievers, Jon Masters, linux-kernel On Tue, Jan 10, 2012 at 9:54 PM, Rusty Russell <rusty@rustcorp.com.au> wrote: > On Tue, 10 Jan 2012 17:47:43 +0100, Kay Sievers <kay.sievers@vrfy.org> wrote: >> From: Kay Sievers <kay.sievers@vrfy.org> >> Subject: modules: sysfs - export: taint, coresize, initsize >> >> Recent tools do not want to use /proc to retrieve module information. A few >> values are currently missing from sysfs to replace the information available >> in /proc/modules. >> >> This adds /sys/module/*/{coresize,initsize,taint} attributes. >> >> TAINT_PROPRIETARY_MODULE (P) and TAINT_OOT_MODULE (O) flags are both always >> shown now, and do no longer exclude each other, also in /proc/modules. >> >> Replace the open-coded sysfs attribute initializers with the __ATTR() macro. >> >> Add the new attributes to Documentation/ABI. >> >> Cc: Lucas De Marchi <lucas.demarchi@profusion.mobi> >> Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> > > Thanks, applied. > Nice to see this patch applied. I'll prepare the changes to kmod. Thanks Lucas De Marchi ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] modules: sysfs - export: taint, address, size 2012-01-07 15:44 [PATCH] modules: sysfs - export: taint, address, size Kay Sievers 2012-01-09 7:27 ` Rusty Russell @ 2012-01-09 15:52 ` Nick Bowler 2012-01-09 23:07 ` Greg KH 2 siblings, 0 replies; 10+ messages in thread From: Nick Bowler @ 2012-01-09 15:52 UTC (permalink / raw) To: Kay Sievers; +Cc: Rusty Russell, linux-kernel, Lucas De Marchi On 2012-01-07 16:44 +0100, Kay Sievers wrote: > From: Kay Sievers <kay.sievers@vrfy.org> > Subject: modules: sysfs - export taint, address, size > > Recent tools do not use /proc to retrieve module information. A few values > are currently missing from sysfs. [...] > @@ -907,10 +927,8 @@ static ssize_t show_refcnt(struct module > return sprintf(buffer, "%u\n", module_refcount(mk->mod)); > } > > -static struct module_attribute refcnt = { > - .attr = { .name = "refcnt", .mode = 0444 }, > - .show = show_refcnt, > -}; > +static struct module_attribute refcnt = > + __ATTR(refcnt, 0444, show_refcnt, NULL); This change seems unrelated to the patch description, and is not mentioned in the changelog. Several instances of this. [...] > static struct module_attribute *modinfo_attrs[] = { > &modinfo_version, > &modinfo_srcversion, > - &initstate, > + &module_initstate, Another unrelated change? > &module_uevent, > + &module_address, > + &module_size, > + &module_taint, You've forgotten to update Documentation/ABI to describe these new attributes. Cheers, -- Nick Bowler, Elliptic Technologies (http://www.elliptictech.com/) ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] modules: sysfs - export: taint, address, size 2012-01-07 15:44 [PATCH] modules: sysfs - export: taint, address, size Kay Sievers 2012-01-09 7:27 ` Rusty Russell 2012-01-09 15:52 ` Nick Bowler @ 2012-01-09 23:07 ` Greg KH 2 siblings, 0 replies; 10+ messages in thread From: Greg KH @ 2012-01-09 23:07 UTC (permalink / raw) To: Kay Sievers; +Cc: Rusty Russell, linux-kernel, Lucas De Marchi On Sat, Jan 07, 2012 at 04:44:36PM +0100, Kay Sievers wrote: > From: Kay Sievers <kay.sievers@vrfy.org> > Subject: modules: sysfs - export taint, address, size > > Recent tools do not use /proc to retrieve module information. A few values > are currently missing from sysfs. > > Cc: Lucas De Marchi <lucas.demarchi@profusion.mobi> > Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> > --- > kernel/module.c | 89 +++++++++++++++++++++++++++++++++++++++----------------- You forgot the Documentation/ABI/ update as well :) ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2012-01-11 1:56 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-01-07 15:44 [PATCH] modules: sysfs - export: taint, address, size Kay Sievers 2012-01-09 7:27 ` Rusty Russell 2012-01-09 12:44 ` Kay Sievers 2012-01-09 18:40 ` Randy Dunlap 2012-01-09 22:44 ` Rusty Russell 2012-01-10 16:47 ` Kay Sievers 2012-01-10 23:54 ` Rusty Russell 2012-01-11 1:56 ` Lucas De Marchi 2012-01-09 15:52 ` Nick Bowler 2012-01-09 23:07 ` Greg KH
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox