Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1300200imm; Wed, 25 Jul 2018 15:34:00 -0700 (PDT) X-Google-Smtp-Source: AAOMgpeC3LE7uvSUzzeZaSVep0g/fGPYDsukdUntvgQk/4xCl+KLlYmb9sT8slhKtTnFZJHJRuG5 X-Received: by 2002:a63:f756:: with SMTP id f22-v6mr21882832pgk.289.1532558040580; Wed, 25 Jul 2018 15:34:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532558040; cv=none; d=google.com; s=arc-20160816; b=WRXR+4ZYl7K5Uo1SWJfqprU/kKGJPZcgLZxPKuSMkQRcfhsbmCaZ5YR6O8B786L1hL M4iJezbr+9pn2tSG9u6pf1kuv/gJriPGlzb054TiFrNIATsxC2f4bbrXxl6EDb3nx0wI BPXrqjGLa62d0mqsoS4htBAGpQIHM6THP1R55mitFykoq5o5QIdJ47Ui+BKXSZa6CZ9J E5WtWCy9jQm4ml1IF14C59ACFuqn79ZeToyjaGuWcN1hZbmXd2PQtTVF32a/ED+723uX mCJdWLWmJeo7Xl1/pZ+4IliFxYi+k3wsyDPPMnD/KSKrxSlPunW6+fFH0Au/zI5DQWPa dZOg== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=WP2+soeYI/gcryaOB2EXC4K7qCoDg2lFJEeGWfNJSO0=; b=qnm1MRVPFcCr1weF+tcAevLtdccvn5fabr7lB6/hYYiPUu6x1uLuhjDjbbX7S4EJ/M byNDiDiOe7bb/EFrw1nbeglRkr/NydGjHmq1/Da5IJX20e8xAZhDFGFVS2zanEsYVd7l GHpHX+TdrD2C4L+xzpnUHdFV2E38Ew1qiB/gIfF31JWugqqWiSljvA83UeaqqEnk2x0r BkXT/jtv3QmAFdw/mvG9xaGiS+Xv/vCwdU9KVW66rUz0W6TBI9wNaIuLIVBrccKrY7mW U9hLPdfzfR7v5MpUP1XayKNBF9hwvjZ09B+ezcIA+86odXoheNrqjofEFd0+skTF7B3o r8RA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=diCrkIN8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t19-v6si15627817pgb.196.2018.07.25.15.33.45; Wed, 25 Jul 2018 15:34:00 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=diCrkIN8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731650AbeGYXpz (ORCPT + 99 others); Wed, 25 Jul 2018 19:45:55 -0400 Received: from fllv0015.ext.ti.com ([198.47.19.141]:39242 "EHLO fllv0015.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731605AbeGYXpz (ORCPT ); Wed, 25 Jul 2018 19:45:55 -0400 Received: from dlelxv90.itg.ti.com ([172.17.2.17]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id w6PMW6RS039157; Wed, 25 Jul 2018 17:32:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1532557926; bh=WP2+soeYI/gcryaOB2EXC4K7qCoDg2lFJEeGWfNJSO0=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=diCrkIN8o+wEplrlSudqEDFdqMNHGrubEG2QQK366zzckp5ZxkhG7r5gYdZPHe6OE RzFTf+jqyyGVt6kOrYOnwbuKR/XlMrWBrksQKFDM3uT9NGpA9lH2We63WalBjQnX7g adtIHi/FdmyKuhRqX0drQU1umiu8dAqZPnoBgFC8= Received: from DFLE115.ent.ti.com (dfle115.ent.ti.com [10.64.6.36]) by dlelxv90.itg.ti.com (8.14.3/8.13.8) with ESMTP id w6PMW6Nr008864; Wed, 25 Jul 2018 17:32:06 -0500 Received: from DFLE109.ent.ti.com (10.64.6.30) by DFLE115.ent.ti.com (10.64.6.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1466.3; Wed, 25 Jul 2018 17:32:06 -0500 Received: from dflp32.itg.ti.com (10.64.6.15) by DFLE109.ent.ti.com (10.64.6.30) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1466.3 via Frontend Transport; Wed, 25 Jul 2018 17:32:06 -0500 Received: from [128.247.58.153] (ileax41-snat.itg.ti.com [10.172.224.153]) by dflp32.itg.ti.com (8.14.3/8.13.8) with ESMTP id w6PMW6dm005490; Wed, 25 Jul 2018 17:32:06 -0500 Subject: Re: [PATCH 1/1] rpmsg: virtio_rpmsg_bus: Fix rpmsg_remove() release order To: Loic Pallardy , , CC: , , , References: <1532552826-30003-1-git-send-email-loic.pallardy@st.com> From: Suman Anna Message-ID: Date: Wed, 25 Jul 2018 17:32:06 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <1532552826-30003-1-git-send-email-loic.pallardy@st.com> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Loic, On 07/25/2018 04:07 PM, Loic Pallardy wrote: > In rpmsg_remove() procedure, children are removed then Name > Service announcement endpoint is destroyed and device released. > > Issue with current implementation is if a NS announcement > creation request is ongoing (received before virtio reset), > child device could be created after children removing. > In that case rpmsg_remove() is freeing rpmsg_virtio_bus, > leading to an inconsistent state. > > This patch is destroying NS announcement service endpoint before > removing children to guarantee that list of child devices is > fixed and all of them will be correctly removed before cleaning > resources. I do not think this is the right fix for the problem you explained. The removal of rpmsg devices can actually invoke the announce_destroy in the rpmsg_dev_remove(). regards Suman > > fixes: bcabbccabffe ("rpmsg: Split off generic tail of create_channel()") > > Signed-off-by: Loic Pallardy > --- > drivers/rpmsg/virtio_rpmsg_bus.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c > index 664f957..f5d481f 100644 > --- a/drivers/rpmsg/virtio_rpmsg_bus.c > +++ b/drivers/rpmsg/virtio_rpmsg_bus.c > @@ -1004,13 +1004,13 @@ static void rpmsg_remove(struct virtio_device *vdev) > > vdev->config->reset(vdev); > > + if (vrp->ns_ept) > + __rpmsg_destroy_ept(vrp, vrp->ns_ept); > + > ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device); > if (ret) > dev_warn(&vdev->dev, "can't remove rpmsg device: %d\n", ret); > > - if (vrp->ns_ept) > - __rpmsg_destroy_ept(vrp, vrp->ns_ept); > - > idr_destroy(&vrp->endpoints); > > vdev->config->del_vqs(vrp->vdev); >