Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1819637imm; Thu, 2 Aug 2018 01:20:47 -0700 (PDT) X-Google-Smtp-Source: AAOMgpf4A5g9EnehOrdCyeqvZnd0+1aAvaZQHmliAd32mNa3ED1gAILZ3Giv/hgPEvhSXZmAb/PQ X-Received: by 2002:a63:fe02:: with SMTP id p2-v6mr1767150pgh.148.1533198047669; Thu, 02 Aug 2018 01:20:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533198047; cv=none; d=google.com; s=arc-20160816; b=S+X3C8iWnYVdu196yLE6WOFCx89pwDffxozKJbAbAqkUlxTSBCK+2tuL/wXUDWvJZl /0NMNDbucGpFywZEW6pzEVVlACJwPPmKB0+AG5LNlOU1i8H9ASVKdSTAv39rdedcEiSK 3BFdcBvxYFieUgE7iEgE+Yfn4v6zg4LAe6K264HOq/t8Gu/e/7dTy3fB8W3eB51olIGk eGpWMdsSdXiP2WkV2VvWpeNhePxup+F/TeOI/8l4Zy+FBqN8MmbBVIhPZHEGRQAXwiu8 GJrN0cgL3KdQFFUggTXBjOvoe8p8qWXDZ0sADDd/S6VjgRtj1wAoPwXygtMpiQGLShac xX2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=iSHmmsrP2UzF9IriGZ+wHxpwzZjGFujQLxtf7uuAt8Y=; b=nFeA08NVRoii7L3JP/T//rIRXbct7GJFZ6A1LRds7f8FPMkl0CBn4H+kJ17/1kH6r3 2E04dhiRrVvtjh4Oce11XkW9TaH/ZlZRidf5919qw+bdfXgNFncBttu4wBMZc1dfW/zf fKdPnQmPOb8e5tP+MBP2PHyTQDF3h7MIjhxXOpIwQnSWsLPY7/+mEKLGXRfMAZficR+1 Wiy5UMGk4NnRjfPP6V3q3rP0c4/k7pTdKKQPYeejsUkw4dx8KsmYNUE3bcNiDs0md12v nlo+jljAN0QzhTY2Hl/P0/AK4lAJvUsLjaLdppUBXRsd56yt5O2OS1jqVUIX1y3bc+eb OOcg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=q+E6o4tp; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e36-v6si1281981pge.507.2018.08.02.01.20.33; Thu, 02 Aug 2018 01:20:47 -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=@gmail.com header.s=20161025 header.b=q+E6o4tp; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731423AbeHBKJs (ORCPT + 99 others); Thu, 2 Aug 2018 06:09:48 -0400 Received: from mail-qt0-f195.google.com ([209.85.216.195]:44297 "EHLO mail-qt0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726849AbeHBKJs (ORCPT ); Thu, 2 Aug 2018 06:09:48 -0400 Received: by mail-qt0-f195.google.com with SMTP id b15-v6so1338216qtp.11 for ; Thu, 02 Aug 2018 01:19:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=iSHmmsrP2UzF9IriGZ+wHxpwzZjGFujQLxtf7uuAt8Y=; b=q+E6o4tp6TEA8kghz4/Ry4GwC+DH+9+xvbP94P9xJM0PSzePCLRMqcvUDrwkgqMros 1xU9mWt2x8sc6tXz+xIU0hxUcjwhcJi6tjOApSu0zsHKYmC6JZi7xQaBGGNv9QyOiMrq fICJoqcQXrICaNrfIGOtbyZCoaOIL5O7o82Iuhns83TIH+5vwpLCo9nG5t3kcs3vNG4E x85NkM3Yh2SyPoCICX8Z8Q6RHiRkGi4KXVgqIhmYxVPMnNMkqPVebMMhHqvQrA0LA6g5 JkUxXGgovb4UjtKhIN31JZ/en1oDpTocCv5eOxtJGz9eyM1dl2Tzh43qqIA2E6v8pERy howw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=iSHmmsrP2UzF9IriGZ+wHxpwzZjGFujQLxtf7uuAt8Y=; b=dp+M/ETSp1gbjxpzeT2K/bJuQX72v94p2n2gHlcZIq234Ueznxg6fb6N1KJZ9968xn blgzbGUbKAVKXNcedTDdHNvszToJBhzlEpNy4fQWyDhI9ECRwcNpee8lrW0+kjYy+1Jp w3y+hE2dTS/rrt7MGNuP3hTQZHMyQvOfqjZjFjhxCmdHGT8VyBN8+WbtDnaG9qu3szc2 IF5UuozYIEEnFGF+2DZHt59nG0IKvYl0Jd04J/N1p9ifmzlHuwM5o8WOE1iQPpDe5cmM 9qYQkOriX2q2TQkidrlE+dOeDE7sUN3U3Tc4mugtva5gPPDXCS2YlY3+5nD3BaU3d5y5 oKvQ== X-Gm-Message-State: AOUpUlEpnq9F1VQJ8Y4jLm93At/zXz4Z+wE1GognPglUmdet6gHnrC7G YOFHlrEHg6byq+hCm5CCebY= X-Received: by 2002:ac8:1a46:: with SMTP id q6-v6mr1637498qtk.5.1533197984770; Thu, 02 Aug 2018 01:19:44 -0700 (PDT) Received: from localhost.localdomain ([104.237.86.58]) by smtp.gmail.com with ESMTPSA id c93-v6sm1441078qkh.90.2018.08.02.01.19.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 02 Aug 2018 01:19:44 -0700 (PDT) From: oceanhehy@gmail.com To: dan.j.williams@intel.com, zwisler@kernel.org, vishal.l.verma@intel.com, dave.jiang@intel.com Cc: linux-nvdimm@lists.01.org, linux-kernel@vger.kernel.org, Ocean He Subject: [PATCH v2] libnvdimm, bus: check if type of nd_device_driver within valid scope Date: Thu, 2 Aug 2018 04:19:36 -0400 Message-Id: <1533197976-27391-1-git-send-email-oceanhehy@gmail.com> X-Mailer: git-send-email 1.8.3.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ocean He According to enum nd_driver_flags, the valid type of nd_device_driver start from 0x02 and end up with 0x80. Both 0x00 and 0x01 are invalid, and the value larger than 0x80 is invalid. To filter valid type, ND_DRIVER_FLAGS_MASK is defined as (((ND_DRIVER_FLAGS_MAX) << 1) - 2). For example, when ND_DRIVER_FLAGS_MAX equals to ND_DRIVER_DAX_PMEM(0x80), then ND_DRIVER_FLAGS_MASK equals to 0xFE. Signed-off-by: Ocean He --- v1: https://www.spinics.net/lists/kernel/msg2869760.html v2: Sorry for noise. I got an email problem, so I have to resend to loop linux-nvdimm@lists.01.org. drivers/nvdimm/bus.c | 2 +- include/uapi/linux/ndctl.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c index 27902a8..ec8cf4b 100644 --- a/drivers/nvdimm/bus.c +++ b/drivers/nvdimm/bus.c @@ -546,7 +546,7 @@ int __nd_driver_register(struct nd_device_driver *nd_drv, struct module *owner, { struct device_driver *drv = &nd_drv->drv; - if (!nd_drv->type) { + if (!(nd_drv->type & ND_DRIVER_FLAGS_MASK)) { pr_debug("driver type bitmask not set (%pf)\n", __builtin_return_address(0)); return -EINVAL; diff --git a/include/uapi/linux/ndctl.h b/include/uapi/linux/ndctl.h index 7e27070..2a1ce06 100644 --- a/include/uapi/linux/ndctl.h +++ b/include/uapi/linux/ndctl.h @@ -207,6 +207,8 @@ enum nd_driver_flags { ND_DRIVER_NAMESPACE_BLK = 1 << ND_DEVICE_NAMESPACE_BLK, ND_DRIVER_DAX_PMEM = 1 << ND_DEVICE_DAX_PMEM, }; +#define ND_DRIVER_FLAGS_MAX ND_DRIVER_DAX_PMEM +#define ND_DRIVER_FLAGS_MASK (((ND_DRIVER_FLAGS_MAX) << 1) - 2) enum { ND_MIN_NAMESPACE_SIZE = PAGE_SIZE, -- 1.8.3.1