Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1234916imm; Wed, 25 Jul 2018 14:08:40 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfGxKctqcBcDR9iWslWfza0TLCasK2Cmp/URIyxQdpjovSAorg75H0+MRSqo6TN+H1WEJV7 X-Received: by 2002:a17:902:9302:: with SMTP id bc2-v6mr22484460plb.280.1532552920462; Wed, 25 Jul 2018 14:08:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532552920; cv=none; d=google.com; s=arc-20160816; b=PNaGHAmG0OR36uUlqQo2dmQxKhPc54epeOdeVmigA4A3o9l8B+1h4dLXi2xowlroAD GUaUdqcEcRQfTMNzu9yY4GKgoRJaKBu9Rq/bFGWcpH4hAy7r1fYzrPDyBPudPfM6um26 orqYFiYbn+KOQS3BpdLkdl2Doxr6e5aEYP2u/k7cr1OMGkeOt/Ggj7MkPxwO/mCO3Akb ELcYNsdcLYbI+/FwkJbBs4xfgzpdGojHIIDu1ZwG7qzZggmnchWdIX8CGrHKkQgBJ8et ljCgHVWvzWVRezH9z4ft+BK1GTisoB19WQD1XIBeqBJ/zZG0HfrS6OSY67WejHKyTaz8 J+KQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from:arc-authentication-results; bh=dQtJIkr7aFiiPcdUE0ACA1c9kO9/hmFpKp6uvH+AyIw=; b=yXQ/bMmH86FyNViLZOJrtjJ30C3bf0SgQUCELP+qmVBSwxgGo341u2E5UHO6apkgJ2 dFATcURpr4xJglqt5jmO8ORIujODw4Wfa6OvvoAxWxNg6WEIlYhUjBYtoi6slwLxnpwM iecye/9twKghDgli6x04wmPvu4+WCMG+ySv/EQiBtjygFhOHQMhCWIP+XTwVu8wPbQ+d B7ydaFdvbj/HOGkuocpm1EeT9wXoFsFVl1DLEzRe4P4qrtXOWTqTQ7wikeiSUG/GgImz 09oVCL+c51oDrMdzF77nwrfodX/sK76HlU9kJJKZu9pZyq7xVbxTrQIhiSTVz0zxIGxC s3CA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u1-v6si14356656pga.71.2018.07.25.14.08.24; Wed, 25 Jul 2018 14:08:40 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731174AbeGYWVB (ORCPT + 99 others); Wed, 25 Jul 2018 18:21:01 -0400 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:35338 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730014AbeGYWVB (ORCPT ); Wed, 25 Jul 2018 18:21:01 -0400 Received: from pps.filterd (m0046660.ppops.net [127.0.0.1]) by mx08-.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id w6PL408T008426; Wed, 25 Jul 2018 23:07:31 +0200 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx08-00178001.pphosted.com with ESMTP id 2kegc2m4tv-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 25 Jul 2018 23:07:31 +0200 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id B467031; Wed, 25 Jul 2018 21:07:30 +0000 (GMT) Received: from Webmail-eu.st.com (sfhdag7node2.st.com [10.75.127.20]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 9E0EBB08E; Wed, 25 Jul 2018 21:07:30 +0000 (GMT) Received: from localhost (10.75.127.44) by SFHDAG7NODE2.st.com (10.75.127.20) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Wed, 25 Jul 2018 23:07:30 +0200 From: Loic Pallardy To: , CC: , , , , Loic Pallardy Subject: [PATCH 1/1] rpmsg: virtio_rpmsg_bus: Fix rpmsg_remove() release order Date: Wed, 25 Jul 2018 23:07:06 +0200 Message-ID: <1532552826-30003-1-git-send-email-loic.pallardy@st.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.75.127.44] X-ClientProxiedBy: SFHDAG4NODE2.st.com (10.75.127.11) To SFHDAG7NODE2.st.com (10.75.127.20) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-07-25_04:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. 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); -- 1.9.1