From patchwork Fri Jul 3 16:29:57 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Linus_L=C3=BCssing?= X-Patchwork-Id: 4554 Return-Path: Received-SPF: None (no SPF record) identity=mailfrom; client-ip=188.40.49.9; helo=mail.passe0815.de; envelope-from=linus.luessing@c0d3.blue; receiver=b.a.t.m.a.n@lists.open-mesh.org Received: from mail.passe0815.de (mail.passe0815.de [188.40.49.9]) by open-mesh.org (Postfix) with ESMTPS id 4F71F60103C for ; Fri, 3 Jul 2015 18:30:04 +0200 (CEST) Received: from mail.passe0815.de (localhost [127.0.0.1]) by mail.passe0815.de (Postfix) with ESMTP id 5EBF558689D for ; Fri, 3 Jul 2015 18:30:03 +0200 (CEST) Received: from localhost (unknown [IPv6:2a01:170:1112:0:25ba:497d:c476:d561]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by mail.passe0815.de (Postfix) with ESMTPSA id 2723E586897; Fri, 3 Jul 2015 18:30:03 +0200 (CEST) From: =?UTF-8?q?Linus=20L=C3=BCssing?= To: b.a.t.m.a.n@lists.open-mesh.org Date: Fri, 3 Jul 2015 18:29:57 +0200 Message-Id: <1435940999-3829-3-git-send-email-linus.luessing@c0d3.blue> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1435940999-3829-1-git-send-email-linus.luessing@c0d3.blue> References: <1435940999-3829-1-git-send-email-linus.luessing@c0d3.blue> MIME-Version: 1.0 X-GPG-Mailgate: Not encrypted, public key not found Subject: [B.A.T.M.A.N.] [PATCHv2 maint 2/4] batman-adv: Fix broken NC capability check X-BeenThere: b.a.t.m.a.n@lists.open-mesh.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Jul 2015 16:30:04 -0000 The introduction of set_bit() and clear_bit() calls in batman-adv wrongly passed bitmasks and not the bit numbers to these functions. This leads to broken capability checks. Fixing this by making the capability enum a non-bitmasked one and by that passing non-masked values to set_bit()/clear_bit(). Fixes: 586df9e2537b ("batman-adv: Make NC capability changes atomic") Reported-by: Def Signed-off-by: Linus Lüssing --- network-coding.c | 2 +- types.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/network-coding.c b/network-coding.c index 3ce493e..0309c2c 100644 --- a/network-coding.c +++ b/network-coding.c @@ -871,7 +871,7 @@ void batadv_nc_update_nc_node(struct batadv_priv *bat_priv, goto out; /* check if orig node is network coding enabled */ - if (!(orig_node->capabilities & BATADV_ORIG_CAPA_HAS_NC)) + if (!(test_bit(BATADV_ORIG_CAPA_HAS_NC, &orig_node->capabilities))) goto out; /* accept ogms from 'good' neighbors and single hop neighbors */ diff --git a/types.h b/types.h index 08a6343..cb7ccb1 100644 --- a/types.h +++ b/types.h @@ -300,7 +300,7 @@ struct batadv_orig_node { */ enum batadv_orig_capabilities { BATADV_ORIG_CAPA_HAS_DAT, - BATADV_ORIG_CAPA_HAS_NC = BIT(1), + BATADV_ORIG_CAPA_HAS_NC, BATADV_ORIG_CAPA_HAS_TT = BIT(2), BATADV_ORIG_CAPA_HAS_MCAST = BIT(3), };