* Fwd: [PATCH] char:misc minor is overflowing
@ 2015-12-09 12:51 Nitin Gupta
2015-12-09 13:35 ` One Thousand Gnomes
0 siblings, 1 reply; 2+ messages in thread
From: Nitin Gupta @ 2015-12-09 12:51 UTC (permalink / raw)
To: Arnd Bergmann, Greg Kroah-Hartman
Cc: Shivnandan Kumar, Vidushi Koul, Gaurav Kohli, Rajat Suri,
Shailesh Pandey, shiv.jnumca08@gmail.com,
linux-kernel@vger.kernel.org
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=windows-1252, Size: 2806 bytes --]
Hi,
Is there any modification / improvement needed in this patch ?
------- Original Message -------
Sender : Shivnandan Kumar<shivnandan.k@samsung.com> Engineer/SRI-Noida-Advance Solutions - System 1 R&D Group/Samsung Electronics
Date : Nov 20, 2015 15:35 (GMT+05:30)
Title : [PATCH] char:misc minor is overflowing
When a driver register as a misc driver and
it tries to allocate minor number dynamically.
Then there is a chance of minor number overflow.
The problem is that 64(DYNAMIC_MINORS) is not enough
for dynamic minor number and if kernel defines 0-63
for dynamic minor number, it should be reserved. But,0-10
was used for other devices, for example 1 is reserved for
PSMOUSE. I got the issue that misc_minors is 0x3FFFFFFFFFFFFFFF
and so, value of variable 'i' in function misc_register becomes
62 and so misc_minors become 1.(Which was already reserved
for PSMOUSE). This patch help to avoid the
above problem.
Signed-off-by: shivnandan kumar
---
drivers/char/misc.c | 5 ++---
include/linux/miscdevice.h | 1 +
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/char/misc.c b/drivers/char/misc.c
index 8069b36..1a6a640 100644
--- a/drivers/char/misc.c
+++ b/drivers/char/misc.c
@@ -198,7 +198,7 @@ int misc_register(struct miscdevice * misc)
err = -EBUSY;
goto out;
}
- misc->minor = DYNAMIC_MINORS - i - 1;
+ misc->minor = DYNAMIC_MINORS - i - 1 + DYNAMIC_MINOR_START;
set_bit(i, misc_minors);
} else {
struct miscdevice *c;
@@ -218,8 +218,7 @@ int misc_register(struct miscdevice * misc)
misc, misc->groups, "%s", misc->name);
if (IS_ERR(misc->this_device)) {
if (is_dynamic) {
- int i = DYNAMIC_MINORS - misc->minor - 1;
+ int i = DYNAMIC_MINORS - misc->minor - 1 + DYNAMIC_MINOR_START;
if (i < DYNAMIC_MINORS && i >= 0)
clear_bit(i, misc_minors);
misc->minor = MISC_DYNAMIC_MINOR;
diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h
index 81f6e42..7aa931e 100644
--- a/include/linux/miscdevice.h
+++ b/include/linux/miscdevice.h
@@ -19,6 +19,7 @@
#define APOLLO_MOUSE_MINOR 7 /* unused */
#define PC110PAD_MINOR 9 /* unused */
/*#define ADB_MOUSE_MINOR 10 FIXME OBSOLETE */
+#define DYNAMIC_MINOR_START 11
#define WATCHDOG_MINOR 130 /* Watchdog timer */
#define TEMP_MINOR 131 /* Temperature Sensor */
#define RTC_MINOR 135
--
1.7.9.5
Nitin Gupta
Logix Cyber Park Plot No. C 28-29, Tower D - Ground to 10th Floor, Tower C - 8th to 10th Floor, Sector 62 Noida(U.P.) 201301 INDIA
ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] char:misc minor is overflowing
2015-12-09 12:51 Fwd: [PATCH] char:misc minor is overflowing Nitin Gupta
@ 2015-12-09 13:35 ` One Thousand Gnomes
0 siblings, 0 replies; 2+ messages in thread
From: One Thousand Gnomes @ 2015-12-09 13:35 UTC (permalink / raw)
To: Nitin Gupta
Cc: Arnd Bergmann, Greg Kroah-Hartman, Shivnandan Kumar, Vidushi Koul,
Gaurav Kohli, Rajat Suri, Shailesh Pandey,
shiv.jnumca08@gmail.com, linux-kernel@vger.kernel.org
On Wed, 09 Dec 2015 12:51:33 +0000 (GMT)
Nitin Gupta <nitin.gupta@samsung.com> wrote:
> Hi,
>
> Is there any modification / improvement needed in this patch ?
>
> ------- Original Message -------
> Sender : Shivnandan Kumar<shivnandan.k@samsung.com> Engineer/SRI-Noida-Advance Solutions - System 1 R&D Group/Samsung Electronics
> Date : Nov 20, 2015 15:35 (GMT+05:30)
> Title : [PATCH] char:misc minor is overflowing
>
> When a driver register as a misc driver and
> it tries to allocate minor number dynamically.
> Then there is a chance of minor number overflow.
> The problem is that 64(DYNAMIC_MINORS) is not enough
If you are allocating more than the odd minor number you shouldn't be
using misc devices in the first place but should be using
cdev_init/cdev_add/register_chrdev_region and friends.
So 64 really should never be "not enough". miscdevice is more historical
than useful and really goes back to the days long before all the region
allocators existed.
Alan
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-12-09 13:35 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-09 12:51 Fwd: [PATCH] char:misc minor is overflowing Nitin Gupta
2015-12-09 13:35 ` One Thousand Gnomes
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox