From: David Hinds <dhinds@sonic.net>
To: "Jörn Engel" <joern@wohnheim.fh-wedel.de>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Worst recursion in the kernel
Date: Wed, 3 Dec 2003 15:08:04 -0800 [thread overview]
Message-ID: <20031203150804.A19286@sonic.net> (raw)
In-Reply-To: <20031203190440.GA15857@wohnheim.fh-wedel.de>
On Wed, Dec 03, 2003 at 08:04:40PM +0100, Jörn Engel wrote:
>
> You are right, verify_cis_cache() does not belong into the list.
> Gotta see where that bug comes from. set_cis_map() is correct,
> though. It does call validate_mem(), at least in my copy of
> 2.6.0-test11:
Oh, so it does; I was looking at the older version I wrote.
> I have no better alternative availlable right now, but there must be
> another way. Maybe something like this:
>
> read_cis_mem() {
> if (__read_cis_mem() != -EAGAIN)
> return;
> validate_mem();
> __read_cis_mem();
> }
The issue is that validate_mem() doesn't need to use read_cis_mem's
functionality directly (so it can't just be modified to use the __*
form). It calls other stuff, which calls other stuff, which
eventually calls read_cis_mem(), and all that other stuff is used by
other callers. So there isn't an obvious place to insert this
bifurcation.
> Not sure about you, but it would make my program much happier. If you
> look at the relevant part of the call graph (below), you will notice
> that inv_probe() alone is already recursive. Having multiple
> recursions to worry about in the same function is where the problem
> stops being difficult and becomes impossible.
inv_probe() is pretty comprehensible, it calls itself directly, in
order to traverse a short linked list from tail to head.
-- Dave
next prev parent reply other threads:[~2003-12-03 23:09 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-12-03 14:31 Worst recursion in the kernel Jörn Engel
2003-12-03 18:07 ` David Hinds
2003-12-03 19:04 ` Jörn Engel
2003-12-03 22:57 ` Russell King
2003-12-03 23:08 ` Mike Fedyk
2003-12-03 23:36 ` David Hinds
2003-12-04 14:14 ` Jörn Engel
2003-12-04 15:08 ` Martin Waitz
2003-12-04 18:40 ` Russell King
2003-12-04 18:46 ` Jörn Engel
2003-12-03 23:08 ` David Hinds [this message]
2003-12-04 13:47 ` Jörn Engel
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=20031203150804.A19286@sonic.net \
--to=dhinds@sonic.net \
--cc=joern@wohnheim.fh-wedel.de \
--cc=linux-kernel@vger.kernel.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.