2014-12-19 01:39:06

by Rusty Russell

[permalink] [raw]
Subject: [PULL] modules-next

The following changes since commit 0df1f2487d2f0d04703f142813d53615d62a1da4:

Linux 3.18-rc3 (2014-11-02 15:01:51 -0800)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux.git tags/modules-next-for-linus

for you to fetch changes up to b0a65b0cccd477b2fd8b7adad0ac39433df54829:

param: do not set store func without write perm (2014-12-18 12:38:51 +1030)

----------------------------------------------------------------
The exciting thing here is the getting rid of stop_machine on module
removal. This is possible by using a simple atomic_t for the counter,
rather than our fancy per-cpu counter: it turns out that no one is doing
a module increment per net packet, so the slowdown should be in the noise.

Also, script fixed for new git version.

Cheers,
Rusty.

----------------------------------------------------------------
Ionut Alexa (1):
kernel:module Fix coding style errors and warnings.

Kees Cook (1):
param: do not set store func without write perm

Masami Hiramatsu (5):
module: Wait for RCU synchronizing before releasing a module
module: Unlink module with RCU synchronizing instead of stop_machine
lib/bug: Use RCU list ops for module_bug_list
module: Replace module_ref with atomic_t refcnt
module: Remove stop_machine from module unloading

Rusty Russell (1):
params: cleanup sysfs allocation

include/linux/module.h | 16 +---
include/trace/events/module.h | 2 +-
kernel/module.c | 170 +++++++++++++++++++-----------------------
kernel/params.c | 97 ++++++++++++------------
lib/bug.c | 20 +++--
5 files changed, 137 insertions(+), 168 deletions(-)


2014-12-19 05:01:24

by Linus Torvalds

[permalink] [raw]
Subject: Re: [PULL] modules-next

On Thu, Dec 18, 2014 at 4:55 PM, Rusty Russell <[email protected]> wrote:
>
> The exciting thing here is the getting rid of stop_machine on module
> removal. This is possible by using a simple atomic_t for the counter,
> rather than our fancy per-cpu counter: it turns out that no one is doing
> a module increment per net packet, so the slowdown should be in the noise.

Famous last words. It may not happen per-packet, but I see
module_get() in various block drivers and in netfilter code etc, and
some of them may be pretty bad.

Let's see how it all works out.

Linus

2014-12-23 00:21:23

by Rusty Russell

[permalink] [raw]
Subject: Re: [PULL] modules-next

Linus Torvalds <[email protected]> writes:
> On Thu, Dec 18, 2014 at 4:55 PM, Rusty Russell <[email protected]> wrote:
>>
>> The exciting thing here is the getting rid of stop_machine on module
>> removal. This is possible by using a simple atomic_t for the counter,
>> rather than our fancy per-cpu counter: it turns out that no one is doing
>> a module increment per net packet, so the slowdown should be in the noise.
>
> Famous last words. It may not happen per-packet, but I see
> module_get() in various block drivers and in netfilter code etc, and
> some of them may be pretty bad.
>
> Let's see how it all works out.

Indeed. The general pattern is "get on open/init"; get-on-every-use was
most useful combined with blocking rmmod, which we removed a few kernels
ago (because no one used it).

I did a random audit until I got bored, and I put a printk-on-module-get
in my kernels for a while, and none of my usecases flood my logs. But
it's definitely a risk...

Cheers,
Rusty.