Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Apr 2007 20:18:27 +0200
From:      Max Laier <max@love2party.net>
To:        freebsd-current@freebsd.org
Cc:        Tillman Hodgson <tillman@seekingfire.com>
Subject:   Re: Panic on boot with April 16 src (lengthy info attached)
Message-ID:  <200704182018.35054.max@love2party.net>
In-Reply-To: <20070418154950.GM1225@seekingfire.com>
References:  <20070417153357.GA1335@seekingfire.com> <20070418084345.H2913@fledge.watson.org> <20070418154950.GM1225@seekingfire.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--nextPart2830636.rBnoFHnBoV
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

On Wednesday 18 April 2007 17:49, Tillman Hodgson wrote:
> On Wed, Apr 18, 2007 at 08:54:00AM +0100, Robert Watson wrote:
> > Things get sticky deep in the firewall code because our firewalls
> > include credential-aware rules, which essentially "peek up the stack"
> > in order to decide what user is associated with a packet before
> > delivery to the connection is done.  The firewall rule lock is held
> > over this lookup and inspection of TCP-layer state.  In the out-bound
> > path, we pass down the TCP state reference (PCB pointer) and
> > guarantee the lock is already held. However, in the in-bound
> > direction, the firewall has to do the full lookup and lock
> > acquisition.  Which reverses the lock order, and can lead to
> > deadlocks.
>
> Thanks for the explanation :-)
>
> Previously you pointed out the ipfw man page which seems to be say the
> same thing (albeit with much less detail):
>
>   gid group
>     Matches all TCP or UDP packets sent by or received for a group.
>     A group may be specified by name or number.  This option should
>     be used only if debug.mpsafenet=3D0 to avoid possible deadlocks due
>     to layering violations in its implementation.
>
> Setting debug.mpsafenet=3D0 worked for me until the TCP timer change. Is
> the LOR situation always true for every inbound packet, or only with
> certain firewall rules in place?
>
> That question has me wondering if I can avoid the issue by avoiding
> certain PF features. My current ruleset is pretty simple. If I drop the
> variables definitions and comments, the whole thing is 13 lines:
>
> nat on $ext_if from $internal_net to any -> ($ext_if)
> rdr on $int_if proto tcp from $internal_net to any port ftp ->
> 127.0.0.1 port 8021 block log all
> pass quick on lo0 all
> pass quick on $int_if proto ospf all
> pass in on $ext_if inet proto tcp from any to ($ext_if) port
> $tcp_services flags S/SA keep state pass in on $ext_if inet proto udp
> from any to ($ext_if) port $udp_services keep state pass in on $ext_if
> inet proto icmp all icmp-type $icmp_types keep state pass in on $ext_if
> inet proto tcp from any to $ext_if user proxy keep state pass in on
> $int_if from $metanetwork to any
> pass out on $int_if from any to $metanetwork
> pass out on $ext_if proto tcp all modulate state flags S/SA
> pass out on $ext_if proto { udp, icmp } all keep state

Running Current you can try to include "options PF_MPSAFE_UGID".  This is=20
a hack that allows the use of user/group rules in a debug.mpsafe=3D1=20
environment.  Unfortunately, I never got any feedback on this albeit=20
throwing it after everybody with these symptoms.  Please report back!

=2D-=20
/"\  Best regards,                      | mlaier@freebsd.org
\ /  Max Laier                          | ICQ #67774661
 X   http://pf4freebsd.love2party.net/  | mlaier@EFnet
/ \  ASCII Ribbon Campaign              | Against HTML Mail and News

--nextPart2830636.rBnoFHnBoV
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (FreeBSD)

iD8DBQBGJmD7XyyEoT62BG0RAnMEAJsFQPkFLjnSF/OaGvt66Vy9LpZhgACfW1mf
8OOQLxNfV8XuxPS02O77KAY=
=ieQT
-----END PGP SIGNATURE-----

--nextPart2830636.rBnoFHnBoV--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200704182018.35054.max>