From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from thoth.sbs.de (thoth.sbs.de [192.35.17.2]) by dpdk.org (Postfix) with ESMTP id DFF4D5682 for ; Fri, 7 Aug 2015 19:20:36 +0200 (CEST) Received: from mail3.siemens.de (mail3.siemens.de [139.25.208.14]) by thoth.sbs.de (8.15.1/8.15.1) with ESMTPS id t77HKZSs003269 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 7 Aug 2015 19:20:36 +0200 Received: from md1f2u6c.ww002.siemens.net ([139.25.68.37]) by mail3.siemens.de (8.15.1/8.15.1) with ESMTP id t77HKYkU027038; Fri, 7 Aug 2015 19:20:34 +0200 X-Mozilla-News-Host: news://news.gmane.org:119 To: dev@dpdk.org From: Jan Kiszka Message-ID: <55C4E8E1.9090406@siemens.com> Date: Fri, 7 Aug 2015 19:20:33 +0200 User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 7bit Subject: [dpdk-dev] [PATCH] vchost: Notify application of ownership change X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Aug 2015 17:20:37 -0000 On VHOST_*_RESET_OWNER, we reinitialize the device but without telling the application. That will cause crashes when it continues to invoke vhost services on the device. Fix it by calling the destruction hook if the device is still in use. Signed-off-by: Jan Kiszka --- This is the surprisingly simple answer to my questions in http://thread.gmane.org/gmane.comp.networking.dpdk.devel/22661. lib/librte_vhost/virtio-net.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/librte_vhost/virtio-net.c b/lib/librte_vhost/virtio-net.c index b520ec5..3c5b5b2 100644 --- a/lib/librte_vhost/virtio-net.c +++ b/lib/librte_vhost/virtio-net.c @@ -402,6 +402,9 @@ reset_owner(struct vhost_device_ctx ctx) ll_dev = get_config_ll_entry(ctx); + if ((ll_dev->dev.flags & VIRTIO_DEV_RUNNING)) + notify_ops->destroy_device(&ll_dev->dev); + cleanup_device(&ll_dev->dev); init_device(&ll_dev->dev); -- 2.1.4