From: Martin Josefsson <gandalf@wlug.westbo.se>
To: Netfilter-devel <netfilter-devel@lists.netfilter.org>
Cc: Harald Welte <laforge@gnumonks.org>
Subject: what's the lockingrules for ip_conntrack_expect_list?
Date: 10 Oct 2002 23:40:48 +0200 [thread overview]
Message-ID: <1034286048.25146.40.camel@tux> (raw)
Hi,
I've been going through the latest bugreport about failed ASSERT's...
It's the usual suspects, exp_for_packet that calls ip_ct_find_proto
instead of __find_proto, this isn't a bug, it's just that the
debug-macros can't handle it, we've been over this before...
But here's the real question...
What's the lockingrules for ip_conntrack_expect_list?
I've gone through 2.4.20-pre8aa2 which was the kernel the bugreport was
from. And I've found some inconsistencies.
here's a list of all functions that deals with ip_conntrack_expect_list
and which locks they are holding when they do so, and the specific
operation they perform on the list.
ip_conntrack_expect_find_get
READ_LOCK(&ip_conntrack_lock);
READ_LOCK(&ip_conntrack_expect_tuple_lock);
__ip_ct_expect_find
MUST_BE_READ_LOCKED(&ip_conntrack_lock);
MUST_BE_READ_LOCKED(&ip_conntrack_expect_tuple_lock);
LIST_FIND
death_by_timeout
WRITE_LOCK(&ip_conntrack_lock);
clean_from_lists
MUST_BE_WRITE_LOCKED(&ip_conntrack_lock);
remove_expectations
list_inlist
init_conntrack
first:
WRITE_LOCK(&ip_conntrack_lock);
READ_LOCK(&ip_conntrack_expect_tuple_lock);
LIST_FIND
later:
WRITE_LOCK(&ip_conntrack_lock);
LIST_DELETE
ip_conntrack_expect_related
WRITE_LOCK(&ip_conntrack_lock);
LIST_FIND
LIST_FIND
list_prepend
ip_conntrack_change_expect
MUST_BE_READ_LOCKED(&ip_conntrack_lock);
LIST_FIND
FAILS!! called from nat-helpers which only hold their own locks if any
at all.
So what's the story? sometimes we hold only ip_conntrack_lock and
sometimes we hold that plus ip_conntrack_expect_tuple_lock and now I've
found out that sometimes we never hold any lock.
Give me a hint and I'll write up a patch to fix it.
--
/Martin
Never argue with an idiot. They drag you down to their level, then beat
you with experience.
next reply other threads:[~2002-10-10 21:40 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-10 21:40 Martin Josefsson [this message]
2002-10-11 13:06 ` what's the lockingrules for ip_conntrack_expect_list? Jozsef Kadlecsik
2002-10-11 13:56 ` Martin Josefsson
2002-10-11 14:07 ` Jozsef Kadlecsik
2002-10-11 18:42 ` [PATCH] " Martin Josefsson
2002-10-12 12:25 ` Harald Welte
2002-10-12 13:11 ` Martin Josefsson
2002-10-12 12:17 ` Harald Welte
2002-10-12 13:09 ` Martin Josefsson
2002-10-12 13:20 ` Martin Josefsson
2002-10-12 13:29 ` [PATCH 2] " Martin Josefsson
2002-10-12 14:36 ` Harald Welte
2002-10-12 14:59 ` Min Li
2002-10-12 15:32 ` Martin Josefsson
2002-10-14 11:33 ` Harald Welte
2002-10-14 13:26 ` Martin Josefsson
2002-10-23 15:16 ` how you use nfnetlink-ctnetlink-0.11.patch marian stagarescu
2002-10-23 15:52 ` Harald Welte
2002-10-12 14:34 ` what's the lockingrules for ip_conntrack_expect_list? Harald Welte
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=1034286048.25146.40.camel@tux \
--to=gandalf@wlug.westbo.se \
--cc=laforge@gnumonks.org \
--cc=netfilter-devel@lists.netfilter.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.