public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* 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

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