Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp528994img; Wed, 20 Mar 2019 05:51:13 -0700 (PDT) X-Google-Smtp-Source: APXvYqyUzDoOs7nSG/yjU5nD9GURH55FDNIzBZMHcqjEbvCtrmPo4HqKc0SnbO4H8EHW4kPGV9Xr X-Received: by 2002:a17:902:2d01:: with SMTP id o1mr8369744plb.155.1553086273113; Wed, 20 Mar 2019 05:51:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553086273; cv=none; d=google.com; s=arc-20160816; b=sCOx8xc90RcqR1hoKcxkTt9iCcJcPi9dvkapjl1WXOuNSxyYwHPoiWKD6NVM21S9mp 2ji2b/qpUvWQnjjps3OCBhDFFCLryTgq47sWPp9LSgkRQuU4ZKMauBiVZI5AkBifTK2Z IvGx4gmCSFU/g3OTQwpbzrj8+4urmPm8wKKyeg6OMRF92OfEEp3tzoH8RMw84dfefPjT 8KTr7wxQrDacHVGPQpRDNDLaWNCczZf3lz0UilreGsQFxe0VNOdxiKzZDa6K92v9fZD8 NS27PNliGrD5De+5x9U/RlMd/wai/EpnMP1KXmf5YGowa8o6CUi6IWR3dyjv+xhgElmJ ogNw== 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:date:cc:to:from:subject:message-id; bh=EF+fWvDkRk8tXV7HIiwtRp1RYJehfsOG6PmBC+t+j90=; b=x+ueINerOZbVqDAY7LuU/DwPHE1Fep2+aI7hEUZ2xI19ekCyfppmO8RUhbqEHo8VNK nRX7TQdKMpK45CTWQeCCIMBACwcuGTM0MMB4tOINFRMsvUKKH/9/maiZFj+4UAWNJT6M mqix5780PiGmQxX54fNeL3wzie6waf4+ABRTIM+Gcd9hD/DlL1VSe3DxTx3Hf2WXyEux dbc7xdQy/FIBEAy6UW+kaykaL+zcC6p4M4jAFOq8pbAwur5Xl7aLfSNmMuan6vcjkBEj kCXIlK17QXS8u1ra01h4W3sMYq+bqz7dYPPVcMc0XmyYQgU9APFthsWJDXRewwKV4Huc Q2xg== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w4si1641148pgp.171.2019.03.20.05.50.57; Wed, 20 Mar 2019 05:51:13 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727618AbfCTMuT (ORCPT + 99 others); Wed, 20 Mar 2019 08:50:19 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53414 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726239AbfCTMuT (ORCPT ); Wed, 20 Mar 2019 08:50:19 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3364F308792D; Wed, 20 Mar 2019 12:50:18 +0000 (UTC) Received: from maximlenovopc.usersys.redhat.com (unknown [10.35.206.58]) by smtp.corp.redhat.com (Postfix) with ESMTP id 61E855D788; Wed, 20 Mar 2019 12:50:04 +0000 (UTC) Message-ID: Subject: Re: [PATCH 7/9] nvme/core: add mdev interfaces From: Maxim Levitsky To: Stefan Hajnoczi Cc: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Jens Axboe , Alex Williamson , Keith Busch , Christoph Hellwig , Sagi Grimberg , Kirti Wankhede , "David S . Miller" , Mauro Carvalho Chehab , Greg Kroah-Hartman , Wolfram Sang , Nicolas Ferre , "Paul E . McKenney" , Paolo Bonzini , Liang Cunming , Liu Changpeng , Fam Zheng , Amnon Ilan , John Ferlan Date: Wed, 20 Mar 2019 14:50:04 +0200 In-Reply-To: <20190320114621.GC5542@stefanha-x1.localdomain> References: <20190319144116.400-1-mlevitsk@redhat.com> <20190319144116.400-8-mlevitsk@redhat.com> <20190320114621.GC5542@stefanha-x1.localdomain> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.45]); Wed, 20 Mar 2019 12:50:18 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2019-03-20 at 11:46 +0000, Stefan Hajnoczi wrote: > On Tue, Mar 19, 2019 at 04:41:14PM +0200, Maxim Levitsky wrote: > > +int nvme_core_register_mdev_driver(struct nvme_mdev_driver *driver_ops) > > +{ > > + struct nvme_ctrl *ctrl; > > + > > + if (mdev_driver_interface) > > + return -EEXIST; > > + > > + mdev_driver_interface = driver_ops; > > Can mdev_driver_interface be accessed from two CPUs at the same time? > mdev_driver_interface isn't protected by the mutex. The state_changed > functions below also don't protect mdev_driver_interface. It can be for sure. However the only time it is updated is when the mdev core module load/unload routines. On module load the interface flips from NULL to a pointer to inside of the module, so this should be safe, and when mdev module unloads, its reference counter is 0, and all the callers first try to increase it and fail, they don't call using this interface. I might still be wrong with this reasoning though. Best regards, Maxim Levitsky