Re: [PATCH] Remove broken netfilter binary sysctls from bridging code

From: Eric W. Biederman
Date: Fri Sep 21 2007 - 00:22:01 EST


jfannin@xxxxxxxxx (Joseph Fannin) writes:

> The netfilter sysctls in the bridging code don't set strategy routines:
>
> sysctl table check failed: /net/bridge/bridge-nf-call-arptables .3.10.1 Missing
> strategy
> sysctl table check failed: /net/bridge/bridge-nf-call-iptables .3.10.2 Missing
> strategy
> sysctl table check failed: /net/bridge/bridge-nf-call-ip6tables .3.10.3 Missing
> strategy
> sysctl table check failed: /net/bridge/bridge-nf-filter-vlan-tagged .3.10.4
> Missing strategy
> sysctl table check failed: /net/bridge/bridge-nf-filter-pppoe-tagged .3.10.5
> Missing strategy
>
> These binary sysctls can't work. The binary sysctl numbers of
> other netfilter sysctls with this problem are being removed. These
> need to go as well.
>
> Signed-off-by: Joseph Fannin <jfannin@xxxxxxxxx>

Acked-by: "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx>

> ---
>
> This *really* needs to be reviewed by someone who knows what this
> is all about. I've simply extended the removal of netfilter binary
> sysctl numbers so I could load bridge.ko. I don't particularly
> care if I get attributed for this fix or any of that.
>
> It Works For Me.

Hmm. This is an interesting case. The proc method is forcing
the integer to be either 0 or 1 in a racy fashion. But none of the
users appear to depend upon that.

So this is the least broken set of binary sysctls I have seen caught
by my check.

A really good fix would be to remove the binary side and then to
modify brnf_sysctl_call_tables to allocate a temporary ctl_table and
integer on the stack and only set ctl->data after we have normalized
the written value. But since in practice nothing cares about
the race a better fix probably isn't worth it.

Eric
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/