Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp1622173pxb; Fri, 6 Nov 2020 14:49:48 -0800 (PST) X-Google-Smtp-Source: ABdhPJzCSUbZx6AMhWqVa9F0T4yrzCuyfcrqR+tRr9XsiqSZ7fUrhN6ag3Q77VOpjW9dSjw58o3X X-Received: by 2002:a05:6402:3d9:: with SMTP id t25mr4537989edw.338.1604702988019; Fri, 06 Nov 2020 14:49:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1604702988; cv=none; d=google.com; s=arc-20160816; b=b1FG9fjufwo6mE8nfCmgdCiow8YSVkK07gGCHIi5/QZFDZPvj1GzTOdLCQXEM1Gk8E hT/K5H2pcZ717X/269rQtxBdwMbYIWFaTDH4j2hm9uNwmvp+cUmIgBDLAXu/gIndGR+e sJhNX7TxB3LqvQ8CY22SPNxICg1FW1RtoxrGgfDJIduis6vPFaxDT0QxzmOcjY8lzmHd 7emHXD7yE3cuPLWO7ZM5y0q1o+iKT/+mJ3Ov6xmOEMvvou0lpY3bAVq4gIbyDHZ3JGNc XwAy4SW/B4nDz6c5+TXOkHPSiYT4QDAFwuZIqf0dUV2AT+L4N93oR3225p7g3IFH6ouX qX7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=d4HLPJGQAzTb6ksNOp07ajZuhlA0Te+SVjLMNH2grBk=; b=eps9NAr1EgGTjyH0yDhFk+res3iQYC6O+S0DwNuoerYQnWBJfs0dnLz7MoCrOVLLJ+ xT8aF4tQaDXhykMkyvpIiajCX8CRUtJZHFfaOHz2WXpWCYqmRhmxArOoIe/F55kaEs9i XLej53pGi5kXv+VVJAG/pFu+npA1PPqc54uBZM9jZn945aBG4A3RVhONqZFrnoP+ecb1 oMYuFfrap+Pw6QaLKGAJhXReOKIBVVMvRCD8FEpKwKAvuFKUEn0hh308s3Ao7aCHdFvM XOq/2SXJDOp+OXD+2LlpSrjzVvBUdd19XqcrtREOFlh47Xk9z639FJo4d4uMbzOiPkeo SpWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mnmoran.org header.s=dkim header.b=TNUW3qbB; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c21si2010557ejr.483.2020.11.06.14.49.24; Fri, 06 Nov 2020 14:49:48 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mnmoran.org header.s=dkim header.b=TNUW3qbB; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728575AbgKFWtS (ORCPT + 99 others); Fri, 6 Nov 2020 17:49:18 -0500 Received: from hoster906.com ([192.252.156.27]:37536 "EHLO hoster906.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728390AbgKFWtS (ORCPT ); Fri, 6 Nov 2020 17:49:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=mnmoran.org; h=from:to :cc:subject:date:message-id:mime-version :content-transfer-encoding; s=dkim; bh=L7QXUo90D/In1WQ6QhkeRV1p5 RphLbtmekUbbrTBuPs=; b=TNUW3qbB8RnSJstJ8+tGtl3Uhh3ottKPAuV3scoUP EPmpzsE+r4kylQL1iOmd8hHKSIvzGVBidqPbngJEmxPOU71w7CHnbiLIJaJBJ2MO dj679dCLdUFi77Zzqc6wvmvMLpMTyWrn2CBtKl5EbRQDTMOJPvwVYNVPV7NHhfqg Wk= Received: (qmail 35434 invoked by uid 503); 6 Nov 2020 22:49:17 -0000 Received: from unknown (HELO knuckle.Home) (mike@mnmoran.org@40.134.89.129) by hoster906.com with ESMTPA; 6 Nov 2020 22:49:17 -0000 From: "Michael N. Moran" To: linux-bluetooth@vger.kernel.org Cc: brian.gix@intel.com, inga.stotland@intel.com, "Michael N. Moran" Subject: [PATCH BlueZ] mesh: Only deregister io for the last network detached Date: Fri, 6 Nov 2020 17:48:11 -0500 Message-Id: <20201106224811.1987610-1-mike@mnmoran.org> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org When multiple mesh networks are active and one is detached using Leave(), the I/O to all networks is halted. This patch prevents that by only deregistering the I/O if all networks have been detached. --- mesh/net.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mesh/net.c b/mesh/net.c index 01a475d74..9e0ea860f 100644 --- a/mesh/net.c +++ b/mesh/net.c @@ -2899,8 +2899,12 @@ struct mesh_io *mesh_net_detach(struct mesh_net *net) io = net->io; mesh_io_send_cancel(net->io, &type, 1); - mesh_io_deregister_recv_cb(io, snb, sizeof(snb)); - mesh_io_deregister_recv_cb(io, pkt, sizeof(pkt)); + + /* Only deregister io if this is the last network detached.*/ + if (l_queue_length(nets) < 2) { + mesh_io_deregister_recv_cb(io, snb, sizeof(snb)); + mesh_io_deregister_recv_cb(io, pkt, sizeof(pkt)); + } net->io = NULL; l_queue_remove(nets, net); -- 2.26.2