lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 5 Jun 2014 12:55:59 +0000 From: David Laight <David.Laight@...LAB.COM> To: 'Toshiaki Makita' <makita.toshiaki@....ntt.co.jp>, "David S . Miller" <davem@...emloft.net>, Stephen Hemminger <stephen@...workplumber.org> CC: Vlad Yasevich <vyasevic@...hat.com>, "netdev@...r.kernel.org" <netdev@...r.kernel.org>, "bridge@...ts.linux-foundation.org" <bridge@...ts.linux-foundation.org> Subject: RE: [PATCH net-next] bridge: Fix incorrect judgment of promisc From: Toshiaki Makita > (2014/06/05 20:03), David Laight wrote: > > From: Toshiaki Makita > >> br_manage_promisc() incorrectly expects br_auto_port() to return only 0 > >> or 1, while it actually returns flags, i.e., a subset of BR_AUTO_MASK. > >> > >> Signed-off-by: Toshiaki Makita <makita.toshiaki@....ntt.co.jp> > >> --- > >> net/bridge/br_if.c | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c > >> index a08d2b8..6a07a40 100644 > >> --- a/net/bridge/br_if.c > >> +++ b/net/bridge/br_if.c > >> @@ -153,7 +153,7 @@ void br_manage_promisc(struct net_bridge *br) > >> * This lets us disable promiscuous mode and write > >> * this config to hw. > >> */ > >> - if (br->auto_cnt <= br_auto_port(p)) > >> + if (br->auto_cnt <= !!br_auto_port(p)) > >> br_port_clear_promisc(p); > >> else > >> br_port_set_promisc(p); > > > > Why not the less confusing: > > if (br->auto_cnt || br_auto_port(p)) > > and reverse the then/else lines? > > I'm respecting the original style, but I'm not particular about this style. > I'll make less confusing one, thanks :) > > (Your suggested condition is not exactly the same as current one, even > if reversing if/else. v2 will be different than it. Anyway, thanks.) A quick truth table: auto_cnt auto_port set/clear 0 0 clear 0 1 clear 1 0 set 1 1 clear 2+ 0/1 clear So you want: if (br->auto_cnt && !br_auto_port(p)) br_port_set_promisc(p); else br_port_clear_promisc(p); Does seem like a strange condition. David -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists