From: Zijun Hu <zijun_hu@icloud.com>
To: Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jean Delvare <jdelvare@suse.com>,
Guenter Roeck <linux@roeck-us.net>,
Rudolf Marek <r.marek@assembler.cz>,
Wim Van Sebroeck <wim@linux-watchdog.org>,
"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>,
Helge Deller <deller@gmx.de>,
"David S. Miller" <davem@davemloft.net>,
Andreas Larsson <andreas@gaisler.com>
Cc: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>,
Zijun Hu <zijun_hu@icloud.com>,
linux-kernel@vger.kernel.org, linux-hwmon@vger.kernel.org,
linux-watchdog@vger.kernel.org, linux-parisc@vger.kernel.org,
sparclinux@vger.kernel.org, Zijun Hu <zijun.hu@oss.qualcomm.com>
Subject: [PATCH v2 3/9] char: misc: Disallow registering miscdevice whose minor > MISC_DYNAMIC_MINOR
Date: Tue, 01 Jul 2025 23:24:41 +0800 [thread overview]
Message-ID: <20250701-rfc_miscdev-v2-3-3eb22bf533be@oss.qualcomm.com> (raw)
In-Reply-To: <20250701-rfc_miscdev-v2-0-3eb22bf533be@oss.qualcomm.com>
From: Zijun Hu <zijun.hu@oss.qualcomm.com>
Currently, It is allowed to register miscdevice with minor > 255
which is defined by macro MISC_DYNAMIC_MINOR, and cause:
- Chaos regarding divison and management of minor codes.
- Registering failure if the minor was allocated to other dynamic request.
Fortunately, in-kernel users have not had such usage yet.
Fix by explicitly refusing to register miscdev whose minor > 255.
Also bring in very simple minor code space division and management:
|< 255 : Fixed minor code
|== 255 : Indicator to request dynamic minor code
|> 255 : Dynamic minor code requested, 1048320 minor codes totally
And all fixed minors allocated should be registered in 'linux/miscdevice.h'
Signed-off-by: Zijun Hu <zijun.hu@oss.qualcomm.com>
---
drivers/char/misc.c | 6 ++++++
include/linux/miscdevice.h | 8 ++++++++
2 files changed, 14 insertions(+)
diff --git a/drivers/char/misc.c b/drivers/char/misc.c
index 558302a64dd908aee30341547a5413df1af71459..b8e66466184fa21fb66d968db7950e0b5669ac43 100644
--- a/drivers/char/misc.c
+++ b/drivers/char/misc.c
@@ -210,6 +210,12 @@ int misc_register(struct miscdevice *misc)
int err = 0;
bool is_dynamic = (misc->minor == MISC_DYNAMIC_MINOR);
+ if (misc->minor > MISC_DYNAMIC_MINOR) {
+ pr_err("Invalid fixed minor %d for miscdevice '%s'\n",
+ misc->minor, misc->name);
+ return -EINVAL;
+ }
+
INIT_LIST_HEAD(&misc->list);
mutex_lock(&misc_mtx);
diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h
index 3e6deb00fc8535a7571f85489c74979e18385bad..565b88efeb23d02b7d91df1cd7df4bdcf2898224 100644
--- a/include/linux/miscdevice.h
+++ b/include/linux/miscdevice.h
@@ -71,6 +71,14 @@
#define USERIO_MINOR 240
#define VHOST_VSOCK_MINOR 241
#define RFKILL_MINOR 242
+
+/*
+ * Misc char device minor code space division related to below macro:
+ *
+ * < 255 : Fixed minor code
+ * == 255 : Indicator to request dynamic minor code
+ * > 255 : Dynamic minor code requested, 1048320 minor codes totally.
+ */
#define MISC_DYNAMIC_MINOR 255
struct miscdevice {
--
2.34.1
next prev parent reply other threads:[~2025-07-01 15:25 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-01 15:24 [PATCH v2 0/9] char: misc: Various cleanup for miscdevice Zijun Hu
2025-07-01 15:24 ` [PATCH v2 1/9] char: misc: Move drivers/misc/misc_minor_kunit.c to drivers/char/ Zijun Hu
2025-07-01 15:24 ` [PATCH v2 2/9] char: misc: Adapt and add test cases for simple minor space division Zijun Hu
2025-07-01 15:24 ` Zijun Hu [this message]
2025-07-01 15:24 ` [PATCH v2 4/9] char: misc: Add a reentry test case for dynamic minor request Zijun Hu
2025-07-01 15:24 ` [PATCH v2 5/9] char: misc: Make registering dynamic device reentry Zijun Hu
2025-07-01 15:24 ` [PATCH v2 6/9] char: misc: Does not request module for miscdevice with dynamic minor Zijun Hu
2025-07-01 15:24 ` [PATCH v2 7/9] char: misc: Allocate 4 more fixed minors for watchdog Zijun Hu
2025-07-01 18:45 ` Arnd Bergmann
2025-07-02 12:13 ` Zijun Hu
2025-07-01 15:24 ` [PATCH v2 8/9] char: misc: Define fixed minor EISA_EEPROM_MINOR in linux/miscdevice.h Zijun Hu
2025-07-01 15:24 ` [PATCH v2 9/9] sparc: kernel: apc: Remove macro APC_MINOR defination Zijun Hu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250701-rfc_miscdev-v2-3-3eb22bf533be@oss.qualcomm.com \
--to=zijun_hu@icloud.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=andreas@gaisler.com \
--cc=arnd@arndb.de \
--cc=cascardo@igalia.com \
--cc=davem@davemloft.net \
--cc=deller@gmx.de \
--cc=gregkh@linuxfoundation.org \
--cc=jdelvare@suse.com \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-parisc@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=r.marek@assembler.cz \
--cc=sparclinux@vger.kernel.org \
--cc=wim@linux-watchdog.org \
--cc=zijun.hu@oss.qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.