Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp241460pxj; Thu, 13 May 2021 03:58:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz7t/N211Y7QDge4E+y5bkjtA/TM3kIHhtqvej+LC7IxVuravHavafg97AFWoR793wOqqs9 X-Received: by 2002:a92:c085:: with SMTP id h5mr31414255ile.37.1620903539473; Thu, 13 May 2021 03:58:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620903539; cv=none; d=google.com; s=arc-20160816; b=zmTYCfe70JWMWb4GO+sNPL+C+z7Ql7C2zug0YIldiKnucyi569MS6qXpU14LbfGe6/ 4cSBUxhC5D6WmLFsTe09jjBLpvra7H2vS73W1i4tWeVmeNmXiJZmdVEA7f94lstkEyd7 Oqg8KKYrQrd9NC1rvkOEJZxbM1O7ykIR7srUqeZkNT5LyMLSe3P/gISQqCqDAbUEC4mo yiSgVyecJjlr6SyVgRzxKhFH4lTQ/xnEL16rDcE2Z2oUIapnNq0hRzCaoa3Sc3GxaDLJ T7fJTyImo8FcINb81x2gFs/7KMx+1JdTMrfh7jyrvuEmLnmqsEoHceEc2qeQJWJHyCK8 Ax8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:organization :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:ironport-sdr:ironport-sdr; bh=2TYQwmgd81uxwvwBDGu2QMsRPjxMPrkYdPwp3IW09Yo=; b=Lb76MMhLu0yXX4dUVCQJa1IfT4ja4vhbsAAMBWUhICQGmDrqqjRT6c42DOOO/3DF7B q9I3BL1cw1LSbHeFiA7GoxZT8necmtH5aRn0UlH2DAjELTqKf3Ndy434/uWn5O4qbZXS +onoefMwztj+v47tgfgBgb312qgWQKAuciiUxF2pbc8ImP25JpYrDV4LQ0y26eXh6ldL bOdNf05fdQJx4gD4ZSAzJVTgfQzf+BdeTb84AfA1bjcytkbQxd0pNCPUb5f7sy4QIPAW 1/FIDi0VthaKhgWE0Wkj4vnOuGOkanXRZ7oG0rL6IR2wcwUzU0jN0DAIqfYquY5AqlNf bRxQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-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. [23.128.96.18]) by mx.google.com with ESMTP id b11si3620338jat.114.2021.05.13.03.58.46; Thu, 13 May 2021 03:58:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-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 S232424AbhEMJAX (ORCPT + 99 others); Thu, 13 May 2021 05:00:23 -0400 Received: from mga02.intel.com ([134.134.136.20]:47049 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232316AbhEMI7k (ORCPT ); Thu, 13 May 2021 04:59:40 -0400 IronPort-SDR: 6mOf+j7CA5/2p8+RPdAFXB1fBkyui7JebkMGKjStEPsZHXEdGM8x5tdakpj0Tsf9vpgyuVFdra wHFAeJQAk9LQ== X-IronPort-AV: E=McAfee;i="6200,9189,9982"; a="187032274" X-IronPort-AV: E=Sophos;i="5.82,296,1613462400"; d="scan'208";a="187032274" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 May 2021 01:58:16 -0700 IronPort-SDR: lRWXZKGXPRgDn15qhlNfjzD1Bzgih4ObhjuUsqu8rfo5JOkAu+SW9cw0Djtz8chtNO67vkwt/y Ln4c5pFt8JrQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,296,1613462400"; d="scan'208";a="625928300" Received: from aipg-stp-03.iil.intel.com ([143.185.92.28]) by fmsmga005.fm.intel.com with ESMTP; 13 May 2021 01:58:15 -0700 From: Guy Zadicario To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org Cc: olof@lixom.net, alexander.shishkin@linux.intel.com, andriy.shevchenko@intel.com, yochai.shefi-simchon@intel.com, guy.zadicario@intel.com Subject: [PATCH v2 07/15] misc: nnpi: Disallow host memory resource access if no NNP-I devices exist Date: Thu, 13 May 2021 11:57:17 +0300 Message-Id: <20210513085725.45528-8-guy.zadicario@intel.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20210513085725.45528-1-guy.zadicario@intel.com> References: <20210513085725.45528-1-guy.zadicario@intel.com> MIME-Version: 1.0 Organization: Intel Israel (74) Limited Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There is no point allowing a user application to create host resources on a system that does not equipped with any NNP-I devices. Fail openning the nnpi_host character device when no NNP-I devices are attached. It is OK to do that check without any synchronization as a race would not be an issue. Signed-off-by: Guy Zadicario Reviewed-by: Alexander Shishkin --- drivers/misc/intel-nnpi/device.c | 5 +++++ drivers/misc/intel-nnpi/device.h | 2 ++ drivers/misc/intel-nnpi/host_chardev.c | 7 +++++++ 3 files changed, 14 insertions(+) diff --git a/drivers/misc/intel-nnpi/device.c b/drivers/misc/intel-nnpi/device.c index 0f98398..a3c6a1d 100644 --- a/drivers/misc/intel-nnpi/device.c +++ b/drivers/misc/intel-nnpi/device.c @@ -13,6 +13,11 @@ static DEFINE_IDA(dev_ida); +bool nnpdev_no_devices(void) +{ + return ida_is_empty(&dev_ida); +} + /** * nnpdev_init() - initialize NNP-I device structure. * @nnpdev: device to be initialized diff --git a/drivers/misc/intel-nnpi/device.h b/drivers/misc/intel-nnpi/device.h index 7d7ef60..562bbc4 100644 --- a/drivers/misc/intel-nnpi/device.h +++ b/drivers/misc/intel-nnpi/device.h @@ -36,6 +36,8 @@ struct nnp_device_ops { int (*cmdq_write_mesg)(struct nnp_device *nnpdev, u64 *msg, u32 size); }; +bool nnpdev_no_devices(void); + /* * Functions exported by the device framework module which are * called by the lower layer NNP-I device driver module diff --git a/drivers/misc/intel-nnpi/host_chardev.c b/drivers/misc/intel-nnpi/host_chardev.c index 6048fda..fad5954 100644 --- a/drivers/misc/intel-nnpi/host_chardev.c +++ b/drivers/misc/intel-nnpi/host_chardev.c @@ -217,6 +217,13 @@ static int host_open(struct inode *inode, struct file *f) if (!is_host_file(f)) return -EINVAL; + /* + * No point to serve host resource creation while no + * NNP-I devices exist in the system. + */ + if (nnpdev_no_devices()) + return -ENODEV; + user_info = kzalloc(sizeof(*user_info), GFP_KERNEL); if (!user_info) return -ENOMEM; -- 1.8.3.1