From: Linus Torvalds <torvalds@linux-foundation.org>
To: Joe Perches <joe@perches.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Nick Andrew <nick@nick-andrew.net>,
linux-kernel@vger.kernel.org, Greg Kroah-Hartman <gregkh@suse.de>,
netdev@vger.kernel.org
Subject: Re: [RESEND PATCH 0/2] Make functions of dev_<level> macros, recursive vsnprintf
Date: Sat, 6 Mar 2010 14:52:55 -0800 (PST) [thread overview]
Message-ID: <alpine.LFD.2.00.1003061445490.31447@localhost.localdomain> (raw)
In-Reply-To: <1267914654.849.81.camel@Joe-Laptop.home>
On Sat, 6 Mar 2010, Joe Perches wrote:
>
> Maybe limit the %pV recursion depth to 1 with something like:
> (in vsprintf.c: pointer() )
Nope. Think about concurrent users.
The thing is, you have to hide it in local storage. We could make it
thread-local (not cpu-local), but even that interacts badly with
interrupts.
The only really workable approach would be to have a stack slot that is
created by the externally visible routines (and initialized to zero), and
those then passe the address of that as an argument to the lower levels,
and then the recursion happens entirely within those lower level functions
that update the value.
So it's doable, it's just not pretty.
> > and I'd also love to see some actual numbers of > > how deep the vsnprintf stack frame is, but I don't see how to do the
> > first, and I'm hoping the second isn't too horrible.
>
> I believe it's the arguments, a long long, a couple of pointers,
> and a struct printf_spec. Not too bad.
I'm not convinced. We pass that 'printf_spec' around a lot, including
nesting. Not as a pointer, either.
(Bjorn Helgaas has a patch that gets rid of _some_ of the stack usage, but
not nearly all).
Linus
next prev parent reply other threads:[~2010-03-06 22:52 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1267682641.git.joe@perches.com>
2010-03-04 6:27 ` [PATCH 1/2] vsprintf: Recursive vsnprintf: Add "%pV", struct va_format Joe Perches
2010-03-04 6:27 ` [PATCH 2/2] device.h drivers/base/core.c Convert dev_<level> macros to functions Joe Perches
2010-03-04 22:38 ` [RESEND PATCH 0/2] Make functions of dev_<level> macros, recursive vsnprintf Andrew Morton
2010-03-04 23:06 ` Linus Torvalds
2010-03-06 21:36 ` Joe Perches
2010-03-06 22:03 ` Linus Torvalds
2010-03-06 22:30 ` Joe Perches
2010-03-06 22:52 ` Linus Torvalds [this message]
2010-03-06 22:57 ` Linus Torvalds
2010-03-06 23:35 ` Joe Perches
2010-03-06 23:46 ` Linus Torvalds
2010-03-06 23:48 ` Linus Torvalds
2010-03-06 23:57 ` Joe Perches
2010-03-06 23:58 ` Linus Torvalds
2010-03-07 1:10 ` [PATCH] vsprintf.c: Reduce sizeof struct printf_spec from 24 to 8 bytes Joe Perches
2010-03-07 2:03 ` Linus Torvalds
2010-03-07 2:24 ` Linus Torvalds
2010-03-07 2:33 ` [PATCH] vsprintf.c: Use noinline_for_stack Joe Perches
2010-03-08 23:39 ` Joe Perches
2010-03-13 0:25 ` Andrew Morton
2010-03-13 15:35 ` Linus Torvalds
2010-03-13 17:44 ` Joe Perches
2010-03-13 19:54 ` [PATCH] vsprintf.c: remove stack variable ksym from Joe Perches
2010-03-15 15:01 ` Paulo Marques
[not found] ` <f2b24d484347c083fa87856a75c1d96102af9005.1267682641.git.joe@perches.com>
2010-03-05 0:56 ` [PATCH 2/2] device.h drivers/base/core.c Convert dev_<level> macros to functions Andrew Morton
2010-03-05 1:00 ` Andrew Morton
2010-03-05 2:46 ` Joe Perches
2010-03-04 6:27 [RESEND PATCH 0/2] Make functions of dev_<level> macros, recursive vsnprintf Joe Perches
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=alpine.LFD.2.00.1003061445490.31447@localhost.localdomain \
--to=torvalds@linux-foundation.org \
--cc=akpm@linux-foundation.org \
--cc=gregkh@suse.de \
--cc=joe@perches.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nick@nick-andrew.net \
/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