From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752733AbbLIMvh (ORCPT ); Wed, 9 Dec 2015 07:51:37 -0500 Received: from mailout3.samsung.com ([203.254.224.33]:56560 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750808AbbLIMvf (ORCPT ); Wed, 9 Dec 2015 07:51:35 -0500 X-AuditID: cbfee6a3-f79776d000001430-25-566823d530c0 Date: Wed, 09 Dec 2015 12:51:33 +0000 (GMT) From: Nitin Gupta Subject: Fwd: [PATCH] char:misc minor is overflowing 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" Reply-to: nitin.gupta@samsung.com MIME-version: 1.0 X-MTR: 20151209124553821@nitin.gupta Msgkey: 20151209124553821@nitin.gupta X-EPLocale: en_US.windows-1252 X-Priority: 3 X-EPWebmail-Msg-Type: personal X-EPWebmail-Reply-Demand: 0 X-EPApproval-Locale: X-EPHeader: ML X-MLAttribute: X-RootMTR: 20151209124553821@nitin.gupta X-ParentMTR: X-ArchiveUser: X-CPGSPASS: N X-ConfirmMail: N,general Content-type: text/plain; charset=windows-1252 MIME-version: 1.0 Message-id: <1925385281.482851449665491986.JavaMail.weblogic@epmlwas08d> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrAIsWRmVeSWpSXmKPExsVy+t/tXt2ryhlhBu+/KVtc3jWHzYHR4/Mm uQDGKC6blNSczLLUIn27BK6M7h+NjAU9shXff3I1MK6Q6WLk5BASUJN4tGUqE4gtIWAi0f69 gxHCFpO4cG89WxcjF1DNHEaJm2e2s3cxcnCwCKhILGyKAalhE9CRmLPmIhuILQzUu/xrO5gt IhAhcfL0OrBeZoHrTBJbFzUxQyxTlGg5dxqsiFdAUOLkzCcsEMtUJDa93gcVV5U4O+UPVFxO YsnUy1DH8UrMaH8KF5/2dQ0zhC0tcX7WBrijF39/DBXnlzh2ewdUr4DE1DMHoWo0JbpP7meD sPkk1ix8ywJTv+vUcmaYXfe3zIXqlZDY2vKEFcRmBrp/SvdDdgjbQOLIojms6H7hFfCQePLs CesERtlZSFKzkLTPQtKOrGYBI8sqRtHUguSC4qT0CmO94sTc4tK8dL3k/NxNjOB4frZ4B+P/ 89aHGAU4GJV4eC+4pIcJsSaWFVfmHmKU4GBWEuEVlMkIE+JNSaysSi3Kjy8qzUktPsQozcGi JM57e59fmJBAemJJanZqakFqEUyWiYNTqoEx7rX8pcDzcdJLWVMMuns5V6mdv/2t58hUXaFr sXuXmltJrP7oqXn0wF4xS2W3jsZ1cuWlkZbt3in8C5fM2cz3aW37wbXv2t6ePOfVVrDg0Gvd /B0NH4zZZ13SSp7neuGy3mJX+5pz3+L6lNP/bHirJx077+occxaTw7d7D6UYbRK6Mvu6kupe JZbijERDLeai4kQAQQ4YfOMCAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id tB9CpfCB025877 Hi, Is there any modification / improvement needed in this patch ? ------- Original Message ------- Sender : Shivnandan Kumar 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++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I