public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] misc: clear allocation bit in minor bitmap when device register fails
@ 2009-11-10  0:30 Thadeu Lima de Souza Cascardo
  2009-11-10  0:30 ` [PATCH 2/3] misc: use bitmap/bitops functions for dynamic minor number allocation Thadeu Lima de Souza Cascardo
  0 siblings, 1 reply; 19+ messages in thread
From: Thadeu Lima de Souza Cascardo @ 2009-11-10  0:30 UTC (permalink / raw)
  To: linux-kernel
  Cc: device, akpm, rubini, gregkh, hpa, Thadeu Lima de Souza Cascardo

If there's a failure creating the device (because there's already one
with the same name, for example), the current implementation does not
clear the bit for the allocated minor and that number is lost for future
allocations.

Second, the test currently in misc_deregister is broken, since it does
not test for the 0 minor.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
---
 drivers/char/misc.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/char/misc.c b/drivers/char/misc.c
index 07fa612..95d1282 100644
--- a/drivers/char/misc.c
+++ b/drivers/char/misc.c
@@ -219,6 +219,9 @@ int misc_register(struct miscdevice * misc)
 	misc->this_device = device_create(misc_class, misc->parent, dev,
 					  misc, "%s", misc->name);
 	if (IS_ERR(misc->this_device)) {
+		int i = misc->minor;
+		if (i < DYNAMIC_MINORS && i >= 0)
+			misc_minors[i>>3] &= ~(1 << (i & 7));
 		err = PTR_ERR(misc->this_device);
 		goto out;
 	}
@@ -253,9 +256,8 @@ int misc_deregister(struct miscdevice *misc)
 	mutex_lock(&misc_mtx);
 	list_del(&misc->list);
 	device_destroy(misc_class, MKDEV(MISC_MAJOR, misc->minor));
-	if (i < DYNAMIC_MINORS && i>0) {
-		misc_minors[i>>3] &= ~(1 << (misc->minor & 7));
-	}
+	if (i < DYNAMIC_MINORS && i >= 0)
+		misc_minors[i>>3] &= ~(1 << (i & 7));
 	mutex_unlock(&misc_mtx);
 	return 0;
 }
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2009-12-16 23:22 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-10  0:30 [PATCH 1/3] misc: clear allocation bit in minor bitmap when device register fails Thadeu Lima de Souza Cascardo
2009-11-10  0:30 ` [PATCH 2/3] misc: use bitmap/bitops functions for dynamic minor number allocation Thadeu Lima de Souza Cascardo
2009-11-10  0:30   ` [PATCH 3/3] misc: use a proper range for minor number dynamic allocation Thadeu Lima de Souza Cascardo
2009-11-10  0:34     ` H. Peter Anvin
2009-11-10 10:19       ` Alan Cox
2009-11-10 16:45       ` Thadeu Lima de Souza Cascardo
2009-11-11 23:36       ` Andrew Morton
2009-12-15 22:34         ` Andrew Morton
2009-12-15 22:42           ` H. Peter Anvin
2009-12-15 22:56             ` Greg KH
2009-12-15 23:56               ` Alan Cox
2009-12-16 23:14                 ` cascardo
2009-12-16 22:51             ` cascardo
2009-12-15 23:37           ` Alan Cox
2009-12-15 23:41             ` Andrew Morton
2009-12-16 18:01             ` David Teigland
2009-12-16 17:10               ` H. Peter Anvin
2009-12-16 23:21               ` cascardo
2009-12-16 23:05             ` cascardo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox