From: Rusty Russell <rusty@rustcorp.com.au>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Brandon Philips <brandon@ifup.org>,
Andrew Morton <akpm@linux-foundation.org>,
"Rafael J. Wysocki" <rjw@sisk.pl>,
LKML <linux-kernel@vger.kernel.org>,
Jon Masters <jonathan@jonmasters.org>,
Tejun Heo <htejun@gmail.com>,
Masami Hiramatsu <mhiramat@redhat.com>,
Kay Sievers <kay.sievers@vrfy.org>
Subject: Re: [PATCH 2/2] module: fix bne2 "gave up waiting for init of module libcrc32c"
Date: Thu, 3 Jun 2010 22:36:45 +0930 [thread overview]
Message-ID: <201006032236.46943.rusty@rustcorp.com.au> (raw)
In-Reply-To: <alpine.LFD.2.00.1006020750330.8175@i5.linux-foundation.org>
On Thu, 3 Jun 2010 12:20:48 am Linus Torvalds wrote:
>
> On Wed, 2 Jun 2010, Rusty Russell wrote:
> >
> > Found another locking issue: the code which verifies we don't export over
> > an existing symbol needs to be atomic wrt. adding us to the list.
>
> Yup.
>
> And now that I'm looking at that call-chain (to see if it would make sense
> to use some other more specific lock - doesn't look like it: all the
> readers are using RCU and this is the only writer), I also give you this
> trivial one-liner. It changes each_symbol() to not put that constant array
> on the stack, resulting in changing
>
> movq $C.388.31095, %rsi #, tmp85
> subq $376, %rsp #,
> movq %rdi, %rbx # fn, fn
> leaq -208(%rbp), %rdi #, tmp84
> movq %rbx, %rdx # fn,
> rep movsl
> xorl %esi, %esi #
> leaq -208(%rbp), %rdi #, tmp87
> movq %r12, %rcx # data,
> call each_symbol_in_section.clone.0 #
>
> into
>
> xorl %esi, %esi #
> subq $216, %rsp #,
> movq %rdi, %rbx # fn, fn
> movq $arr.31078, %rdi #,
> call each_symbol_in_section.clone.0 #
>
> which is not so much about being obviously shorter and simpler because we
> don't unnecessarily copy that constant array around onto the stack, but
> also about having a much smaller stack footprint (376 vs 216 bytes - see
> the update of 'rsp').
>
> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
BTW, applied, thanks!
I've finished the cleanup now, and removed the noinline on load_module;
we're down to 124 bytes of stack for sys_init_module here (32 bit).
The following changes since commit aef4b9aaae1decc775778903922bd0075cce7a88:
Linus Torvalds (1):
Merge branch 'next' of git://git.kernel.org/.../benh/powerpc
are available in the git repository at:
ssh://master.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6 modules
Eric Dumazet (1):
module: module_unload_init() cleanup
Linus Torvalds (6):
module: Make the 'usage' lists be two-way
module: move find_module check to end
module: refactor load_module
module: refactor load_module part 2
module: reduce stack usage for each_symbol()
module: fix bne2 "gave up waiting for init of module libcrc32c"
Rusty Russell (18):
module: fix kdb's illicit use of struct module_use.
module: move sysfs exposure to end of load_module
module: Make module sysfs functions private.
module: make locking more fine-grained.
module: verify_export_symbols under the lock
module: fix bne2 "gave up waiting for init of module libcrc32c"
module: refactor load_module part 3
module: refactor load_module part 4
module: refactor load_module part 5
module: refactor out section header rewriting
module: kallsyms functions take struct load_info
module: layout_and_allocate
module: sysfs cleanup
module: pass load_info into other functions
module: move module args strndup_user to just before use
module: simplify per-cpu handling a little
module: group post-relocation functions into post_relocation()
module: cleanup comments, remove noinline
include/linux/module.h | 44 +--
kernel/debug/kdb/kdb_main.c | 12 +-
kernel/module.c | 1361 ++++++++++++++++++++++++-------------------
next prev parent reply other threads:[~2010-06-03 13:06 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-25 21:00 [Regression] Crash in load_module() while freeing args Rafael J. Wysocki
2010-05-25 22:54 ` Rafael J. Wysocki
2010-05-25 23:47 ` Linus Torvalds
2010-05-26 8:00 ` Rusty Russell
2010-05-26 11:57 ` Rusty Russell
2010-05-26 22:56 ` Rafael J. Wysocki
2010-05-26 23:07 ` Linus Torvalds
2010-05-27 5:26 ` Rusty Russell
2010-05-27 18:46 ` Brandon Philips
2010-05-31 9:40 ` Rusty Russell
2010-05-31 12:00 ` [PATCH 0/2] kernel/module.c locking changes Rusty Russell
2010-05-31 12:01 ` [PATCH 1/2] module: make locking more fine-grained Rusty Russell
2010-05-31 12:02 ` [PATCH 2/2] module: fix bne2 "gave up waiting for init of module libcrc32c" Rusty Russell
2010-05-31 16:48 ` Andrew Morton
2010-05-31 18:19 ` Linus Torvalds
2010-05-31 20:15 ` Linus Torvalds
2010-05-31 20:16 ` [PATCH 1/2] Make the module 'usage' lists be two-way Linus Torvalds
2010-05-31 20:17 ` [PATCH 2/2] module: wait for other modules after dropping the module_mutex Linus Torvalds
2010-06-01 1:37 ` [PATCH 1/2] Make the module 'usage' lists be two-way Rusty Russell
2010-06-01 3:42 ` Rusty Russell
2010-06-01 4:00 ` Linus Torvalds
2010-06-01 4:05 ` Linus Torvalds
2010-06-01 2:44 ` Américo Wang
2010-06-01 3:51 ` Linus Torvalds
2010-06-01 1:57 ` [PATCH 2/2] module: fix bne2 "gave up waiting for init of module libcrc32c" Rusty Russell
2010-06-01 3:40 ` Linus Torvalds
2010-06-01 4:27 ` Linus Torvalds
2010-06-01 5:19 ` Rusty Russell
2010-06-02 3:15 ` Rusty Russell
2010-06-01 1:21 ` Rusty Russell
2010-06-01 3:24 ` Linus Torvalds
2010-06-01 5:22 ` Rusty Russell
2010-06-01 14:58 ` Linus Torvalds
2010-06-01 17:53 ` Linus Torvalds
2010-06-01 23:24 ` Brandon Philips
2010-06-01 23:51 ` Linus Torvalds
2010-06-02 2:10 ` Brandon Philips
2010-06-02 3:03 ` Rusty Russell
2010-06-02 4:35 ` Linus Torvalds
2010-06-02 4:44 ` Linus Torvalds
2010-06-02 6:35 ` Rusty Russell
2010-06-02 7:45 ` Linus Torvalds
2010-06-02 8:12 ` Linus Torvalds
2010-06-02 9:07 ` Rusty Russell
2010-06-02 5:52 ` Rusty Russell
2010-06-02 7:21 ` Linus Torvalds
2010-06-02 14:06 ` Rusty Russell
2010-06-02 14:50 ` Linus Torvalds
2010-06-03 13:06 ` Rusty Russell [this message]
2010-06-02 16:53 ` Brandon Philips
2010-06-02 18:01 ` Linus Torvalds
2010-06-03 5:20 ` Rusty Russell
2010-06-03 16:24 ` Linus Torvalds
2010-06-04 1:02 ` Rusty Russell
2010-06-04 1:55 ` Linus Torvalds
2010-06-04 5:20 ` Rusty Russell
2010-06-04 22:48 ` Linus Torvalds
2010-06-05 1:49 ` Rusty Russell
2010-06-02 3:09 ` Rusty Russell
2010-06-02 4:32 ` Linus Torvalds
2010-06-02 4:56 ` Linus Torvalds
2010-06-02 5:52 ` Rusty Russell
2010-06-02 6:59 ` Linus Torvalds
2010-06-01 1:04 ` Rusty Russell
2010-06-01 5:38 ` [PATCH 1/2] module: make locking more fine-grained Américo Wang
2010-06-01 5:55 ` Rusty Russell
2010-05-27 21:57 ` [Regression] Crash in load_module() while freeing args Rafael J. Wysocki
2010-05-31 7:54 ` Rusty Russell
2010-05-31 10:23 ` [PATCH] module: fix reference to mod->percpu after freeing module Rusty Russell
2010-05-31 10:25 ` Tejun Heo
2010-05-26 15:41 ` [Regression] Crash in load_module() while freeing args Linus Torvalds
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=201006032236.46943.rusty@rustcorp.com.au \
--to=rusty@rustcorp.com.au \
--cc=akpm@linux-foundation.org \
--cc=brandon@ifup.org \
--cc=htejun@gmail.com \
--cc=jonathan@jonmasters.org \
--cc=kay.sievers@vrfy.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@redhat.com \
--cc=rjw@sisk.pl \
--cc=torvalds@linux-foundation.org \
/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.