From a7c787f9b9308cbc661c15b9d0a37fb66f112d39 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Mon, 14 Dec 2009 18:00:30 -0800 Subject: [PATCH] --- yaml --- r: 176345 b: refs/heads/master c: 4ae717da8d18839487485f6ae608b8542790fdd3 h: refs/heads/master i: 176343: 69a2cdd05211e20ca829e66e0a70f1f9262e941a v: v3 --- [refs] | 2 +- trunk/drivers/char/misc.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index b94bda737223..fc52323b723c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 603c4ba96be998a8dd7a6f9b23681c49acdf4b64 +refs/heads/master: 4ae717da8d18839487485f6ae608b8542790fdd3 diff --git a/trunk/drivers/char/misc.c b/trunk/drivers/char/misc.c index 281edefffa0b..a3a02f6303c8 100644 --- a/trunk/drivers/char/misc.c +++ b/trunk/drivers/char/misc.c @@ -214,6 +214,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; } @@ -248,9 +251,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; }