aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/misc.c')
-rw-r--r--drivers/char/misc.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/char/misc.c b/drivers/char/misc.c
index 281edefffa0b..a3a02f6303c8 100644
--- a/drivers/char/misc.c
+++ b/drivers/char/misc.c
@@ -214,6 +214,9 @@ int misc_register(struct miscdevice * misc)
214 misc->this_device = device_create(misc_class, misc->parent, dev, 214 misc->this_device = device_create(misc_class, misc->parent, dev,
215 misc, "%s", misc->name); 215 misc, "%s", misc->name);
216 if (IS_ERR(misc->this_device)) { 216 if (IS_ERR(misc->this_device)) {
217 int i = misc->minor;
218 if (i < DYNAMIC_MINORS && i >= 0)
219 misc_minors[i>>3] &= ~(1 << (i & 7));
217 err = PTR_ERR(misc->this_device); 220 err = PTR_ERR(misc->this_device);
218 goto out; 221 goto out;
219 } 222 }
@@ -248,9 +251,8 @@ int misc_deregister(struct miscdevice *misc)
248 mutex_lock(&misc_mtx); 251 mutex_lock(&misc_mtx);
249 list_del(&misc->list); 252 list_del(&misc->list);
250 device_destroy(misc_class, MKDEV(MISC_MAJOR, misc->minor)); 253 device_destroy(misc_class, MKDEV(MISC_MAJOR, misc->minor));
251 if (i < DYNAMIC_MINORS && i>0) { 254 if (i < DYNAMIC_MINORS && i >= 0)
252 misc_minors[i>>3] &= ~(1 << (misc->minor & 7)); 255 misc_minors[i>>3] &= ~(1 << (i & 7));
253 }
254 mutex_unlock(&misc_mtx); 256 mutex_unlock(&misc_mtx);
255 return 0; 257 return 0;
256} 258}