Message ID | 1458392121-23608-1-git-send-email-sven@narfation.org (mailing list archive) |
---|---|
State | Accepted, archived |
Commit | fbb98aa65dbba86c94808204060434393c2ad19e |
Delegated to: | Marek Lindner |
Headers |
Return-Path: <b.a.t.m.a.n-bounces@lists.open-mesh.org> X-Original-To: patchwork@open-mesh.org Delivered-To: patchwork@open-mesh.org Received: from open-mesh.org (localhost [127.0.0.1]) by open-mesh.org (Postfix) with ESMTP id 5B58480727; Sat, 19 Mar 2016 13:55:27 +0100 (CET) Authentication-Results: open-mesh.org; dkim=fail reason="verification failed; unprotected key" header.d=narfation.org header.i=@narfation.org header.b=SN0bkbTE; dkim-adsp=fail (unprotected policy); dkim-atps=neutral Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=79.140.41.39; helo=v3-1039.vlinux.de; envelope-from=sven@narfation.org; receiver=b.a.t.m.a.n@lists.open-mesh.org Authentication-Results: open-mesh.org; dmarc=pass header.from=narfation.org Received: from v3-1039.vlinux.de (narfation.org [79.140.41.39]) by open-mesh.org (Postfix) with ESMTPS id 342A780723 for <b.a.t.m.a.n@lists.open-mesh.org>; Sat, 19 Mar 2016 13:55:26 +0100 (CET) Received: from sven-desktop.home.narfation.org (p200300C593C32DFD0000000000002E16.dip0.t-ipconnect.de [IPv6:2003:c5:93c3:2dfd::2e16]) by v3-1039.vlinux.de (Postfix) with ESMTPSA id 8015B1100A5; Sat, 19 Mar 2016 13:55:25 +0100 (CET) Authentication-Results: v3-1039.vlinux.de; dmarc=none header.from=narfation.org DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=narfation.org; s=20121; t=1458392125; bh=POREz7C2/fGKwuDUNKDp+q30/Ed3w1dYs+GkoxUbheo=; h=From:To:Cc:Subject:Date:From; b=SN0bkbTEqk+x801Nu4rY9JhJpW0VPJw0U6cHsgrZZPj1LxJ65g5+cLdQVrpVsWvbS 7R7yde4B32H/+hLpPtT0n11FT46GIvBVALngMg/Q+jaWrw/b/Ut2BgpN7dG/1LmyIR wVnc9dp3OEexi8pQQqfMunU7ld9eK6OLUlaNvYhI= From: Sven Eckelmann <sven@narfation.org> To: b.a.t.m.a.n@lists.open-mesh.org Date: Sat, 19 Mar 2016 13:55:21 +0100 Message-Id: <1458392121-23608-1-git-send-email-sven@narfation.org> X-Mailer: git-send-email 2.8.0.rc3 Subject: [B.A.T.M.A.N.] [PATCH] batman-adv: Deactive TO_BE_ACTIVATED hardif on shutdown X-BeenThere: b.a.t.m.a.n@lists.open-mesh.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: The list for a Better Approach To Mobile Ad-hoc Networking <b.a.t.m.a.n.lists.open-mesh.org> List-Unsubscribe: <https://lists.open-mesh.org/mm/options/b.a.t.m.a.n>, <mailto:b.a.t.m.a.n-request@lists.open-mesh.org?subject=unsubscribe> List-Archive: <http://lists.open-mesh.org/pipermail/b.a.t.m.a.n/> List-Post: <mailto:b.a.t.m.a.n@lists.open-mesh.org> List-Help: <mailto:b.a.t.m.a.n-request@lists.open-mesh.org?subject=help> List-Subscribe: <https://lists.open-mesh.org/mm/listinfo/b.a.t.m.a.n>, <mailto:b.a.t.m.a.n-request@lists.open-mesh.org?subject=subscribe> Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking <b.a.t.m.a.n@lists.open-mesh.org> Errors-To: b.a.t.m.a.n-bounces@lists.open-mesh.org Sender: "B.A.T.M.A.N" <b.a.t.m.a.n-bounces@lists.open-mesh.org> |
Commit Message
Sven Eckelmann
March 19, 2016, 12:55 p.m. UTC
The shutdown of an batman-adv interface can happen with one of its slave
interfaces still being in the BATADV_IF_TO_BE_ACTIVATED state. A possible
reason for it is that the routing algorithm BATMAN_V was selected and
batadv_schedule_bat_ogm was not yet called for this interface. This slave
interface still has to be set to BATADV_IF_INACTIVE or the batman-adv
interface will never reduce its usage counter and thus never gets shutdown.
This problem can be simulated via:
$ modprobe dummy
$ modprobe batman-adv routing_algo=BATMAN_V
$ ip link add bat0 type batadv
$ ip link set dummy0 master bat0
$ ip link set dummy0 up
$ ip link del bat0
unregister_netdevice: waiting for bat0 to become free. Usage count = 3
Fixes: 88861ea9acb7 ("[batman-adv] replacing if up/down timer with kernel notifications")
Reported-by: Matthias Schiffer <mschiffer@universe-factory.net>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
Please check https://www.open-mesh.org/issues/248 to learn more about the
bug
I have not checked why batadv_schedule_bat_ogm isn't called successfully
(which would mark the interface as active) in this situation.
---
net/batman-adv/hard-interface.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
Comments
On Saturday 19 March 2016 13:55:21 Sven Eckelmann wrote: > The shutdown of an batman-adv interface can happen with one of its slave > interfaces still being in the BATADV_IF_TO_BE_ACTIVATED state. A possible > reason for it is that the routing algorithm BATMAN_V was selected and > batadv_schedule_bat_ogm was not yet called for this interface. This slave > interface still has to be set to BATADV_IF_INACTIVE or the batman-adv > interface will never reduce its usage counter and thus never gets shutdown. > > This problem can be simulated via: > > $ modprobe dummy > $ modprobe batman-adv routing_algo=BATMAN_V > $ ip link add bat0 type batadv > $ ip link set dummy0 master bat0 > $ ip link set dummy0 up > $ ip link del bat0 > unregister_netdevice: waiting for bat0 to become free. Usage count = 3 > > Fixes: 88861ea9acb7 ("[batman-adv] replacing if up/down timer with kernel > notifications") Reported-by: Matthias Schiffer > <mschiffer@universe-factory.net> > Signed-off-by: Sven Eckelmann <sven@narfation.org> > --- > Please check https://www.open-mesh.org/issues/248 to learn more about the > bug I just want to emphasize that this patch doesn't fix the bug behind issue #248 (only its main symptom described in the issue description). Please read the ticket and especially https://www.open-mesh.org/issues/248#note-4 Kind regards, Sven
On Saturday, March 19, 2016 13:55:21 Sven Eckelmann wrote: > The shutdown of an batman-adv interface can happen with one of its slave > interfaces still being in the BATADV_IF_TO_BE_ACTIVATED state. A possible > reason for it is that the routing algorithm BATMAN_V was selected and > batadv_schedule_bat_ogm was not yet called for this interface. This slave > interface still has to be set to BATADV_IF_INACTIVE or the batman-adv > interface will never reduce its usage counter and thus never gets shutdown. > > This problem can be simulated via: > > $ modprobe dummy > $ modprobe batman-adv routing_algo=BATMAN_V > $ ip link add bat0 type batadv > $ ip link set dummy0 master bat0 > $ ip link set dummy0 up > $ ip link del bat0 > unregister_netdevice: waiting for bat0 to become free. Usage count = 3 > > Fixes: 88861ea9acb7 ("[batman-adv] replacing if up/down timer with kernel > notifications") Reported-by: Matthias Schiffer > <mschiffer@universe-factory.net> > Signed-off-by: Sven Eckelmann <sven@narfation.org> Applied in revision fbb98aa. Thanks, Marek
diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c index 3240a67..f41b472 100644 --- a/net/batman-adv/hard-interface.c +++ b/net/batman-adv/hard-interface.c @@ -572,8 +572,7 @@ void batadv_hardif_disable_interface(struct batadv_hard_iface *hard_iface, struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); struct batadv_hard_iface *primary_if = NULL; - if (hard_iface->if_status == BATADV_IF_ACTIVE) - batadv_hardif_deactivate_interface(hard_iface); + batadv_hardif_deactivate_interface(hard_iface); if (hard_iface->if_status != BATADV_IF_INACTIVE) goto out;