Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp4245793ybh; Tue, 17 Mar 2020 15:16:21 -0700 (PDT) X-Google-Smtp-Source: ADFU+vtO/vDO5+Wvh/N3a5SFuPSTrXJYxU8q6JeVkfG4Xu7ebUj1i7Wp+001ssRvvLMpsf/JMo1W X-Received: by 2002:aca:af93:: with SMTP id y141mr855454oie.144.1584483381666; Tue, 17 Mar 2020 15:16:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584483381; cv=none; d=google.com; s=arc-20160816; b=EWuZplkW6zXFu8w4dfTFihbK/1DJknmQMvcfH2kuuXktASrDVrZ9mw6mqJyAqqYLRM GNxM3WjEfuy16ybPxtXjdn4gG5j59SDzLHw4dmpdPvUZU3xXnCJnD4hvQ8We0rJro67F NQJQ5SC64VQ9ykbLm5R9/CPnu3o/AdMQLEuaoNtko+Yxsa677rWoe4vn4ONOsS4W8LVD CWTD+Z+g4nRdcXr2TP5R1TedK1mzlKqaPw0Lcd7ksNC1P7bhGZiTchx93HakZAyblV/o 4ahixVXmYP+UoYMHGQJtLdQk5reBQQPYI3HK7jXf3S2T7tsbRjZKbfoyWFqeNJqk+QB2 K6Tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :ironport-sdr:ironport-sdr; bh=np72CeJkmscrwJQ7IM3pJWSusDMa6J6t8U4jvHPSO64=; b=QiUSaeqdrmOuQVAvVNaslJ7HhadcW/iIJBkPwlq5VFFsjsLE3UAI8gHF2scYf8zsMx 3vkumtYwchWXyjz/hQcNAq0pJCJ5usWPvW8epgWGUjvrFIn0GIBK1bNS4kAFgSVlJGSw /bRj2bycmcyAvsnL2e58+UHxjQBNMRqFAo0bKEbixe3iGsmrDIO7GfhX2Z9yw4dAyxGM AMzGTkb/ZfspFb2+bJ+wsJ9gDmZ/csStVNv5lrY5fUTQGpG8T/4a6mYXXrrKYCY0w+YH mvNabra/1rD/YDa5mS7BBec8eOdRTxJSbf/kJoaD84g12P3Cadz7uwQosvKS+xPPl1/3 520Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x7si2382658oto.262.2020.03.17.15.15.55; Tue, 17 Mar 2020 15:16:21 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726871AbgCQWPt (ORCPT + 99 others); Tue, 17 Mar 2020 18:15:49 -0400 Received: from mga17.intel.com ([192.55.52.151]:25747 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726476AbgCQWPs (ORCPT ); Tue, 17 Mar 2020 18:15:48 -0400 IronPort-SDR: jZeE3IXnPh5H58S6TBF6C41o2A7RrFza7UbGWckF2aqxnmhtQJPAXI3eW54h2ulzN5PpCi7lvP b2+RcSIdYI6g== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2020 15:15:48 -0700 IronPort-SDR: hPbHt4VgGXzOdKvfrh83K07cizsltCF09tc+ul0j09btMr4zRlcqRGRv8KfzisPwoXWkm8yWqV Z6LIm3jzrM6Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,565,1574150400"; d="scan'208";a="417711494" Received: from ingas-nuc1.sea.intel.com ([10.255.228.139]) by orsmga005.jf.intel.com with ESMTP; 17 Mar 2020 15:15:48 -0700 From: Inga Stotland To: linux-bluetooth@vger.kernel.org Cc: brian.gix@intel.com, Inga Stotland Subject: [PATCH BlueZ v2 2/2] mesh: Fix processing of Config Node Reset message Date: Tue, 17 Mar 2020 15:15:46 -0700 Message-Id: <20200317221546.22440-2-inga.stotland@intel.com> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200317221546.22440-1-inga.stotland@intel.com> References: <20200317221546.22440-1-inga.stotland@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org This fixes a condition when a node continues processing messages after it has been reset by a remote configuration client. Upon receiving Config Node Reset message, node removal happens after a grace interval to allow sending of Config Node Reset Status reply. --- mesh/cfgmod-server.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/mesh/cfgmod-server.c b/mesh/cfgmod-server.c index a1f682765..8db2ef43c 100644 --- a/mesh/cfgmod-server.c +++ b/mesh/cfgmod-server.c @@ -695,12 +695,11 @@ static int hb_subscription_set(struct mesh_net *net, uint16_t src, return MESH_STATUS_SUCCESS; } -static void node_reset(struct l_timeout *timeout, void *user_data) +static void node_reset(void *user_data) { struct mesh_node *node = user_data; l_debug("Node Reset"); - l_timeout_remove(timeout); node_remove(node); } @@ -1223,20 +1222,17 @@ static bool cfg_srv_pkt(uint16_t src, uint16_t dst, uint16_t app_idx, case OP_NODE_RESET: n = mesh_model_opcode_set(OP_NODE_RESET_STATUS, msg); - /* - * Delay node removal to give it a chance to send back the - * status - */ - l_timeout_create(1, node_reset, node, NULL); + + /* Delay node removal to give it a chance to send the status */ + l_idle_oneshot(node_reset, node, NULL); break; } - if (n) { - /* print_packet("App Tx", long_msg ? long_msg : msg, n); */ + if (n) mesh_model_send(node, dst, src, APP_IDX_DEV_LOCAL, net_idx, DEFAULT_TTL, long_msg ? long_msg : msg, n); - } + l_free(long_msg); return true; -- 2.21.1