From: Andrew Morton <akpm@linux-foundation.org>
To: "H. Peter Anvin" <hpa@zytor.com>,
Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>,
linux-kernel@vger.kernel.org, rubini@gnudd.com, gregkh@suse.de
Subject: Re: [PATCH 3/3] misc: use a proper range for minor number dynamic allocation
Date: Tue, 15 Dec 2009 14:34:46 -0800 [thread overview]
Message-ID: <20091215143446.8b6a7e57.akpm@linux-foundation.org> (raw)
In-Reply-To: <20091111153632.944a255c.akpm@linux-foundation.org>
On Wed, 11 Nov 2009 15:36:32 -0800
Andrew Morton <akpm@linux-foundation.org> wrote:
> On Mon, 09 Nov 2009 16:34:07 -0800
> "H. Peter Anvin" <hpa@zytor.com> wrote:
>
> > On 11/09/2009 04:30 PM, Thadeu Lima de Souza Cascardo wrote:
> > > The current dynamic allocation of minor number for misc devices has some
> > > drawbacks.
> > >
> > > First of all, the range for dynamic numbers include some statically
> > > allocated numbers. It goes from 63 to 0, and we have numbers in the
> > > range from 1 to 15 already allocated. Although, it gives priority to the
> > > higher and not allocated numbers, we may end up in a situation where we
> > > must reject registering a driver which got a static number because a
> > > driver got its number with dynamic allocation. Considering fs/dlm/user.c
> > > allocates as many misc devices as lockspaces are created, and that we
> > > have more than 50 users around, it's not unreasonable to reach that
> > > situation.
> > >
> > > The proposed solution uses the not yet reserved range from 64 to 127. If
> > > more devices are needed, we may push 64 to 16.
> > >
> >
> > Again, why not push these up above 256?
> >
>
> I merged this patch, but made a note-to-self that there are remaining
> open issues..
And nothing else happened. Can we revisit this please?
From: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
The current dynamic allocation of minor number for misc devices has some
drawbacks.
First of all, the range for dynamic numbers include some statically
allocated numbers. It goes from 63 to 0, and we have numbers in the range
from 1 to 15 already allocated. Although, it gives priority to the higher
and not allocated numbers, we may end up in a situation where we must
reject registering a driver which got a static number because a driver got
its number with dynamic allocation. Considering fs/dlm/user.c allocates
as many misc devices as lockspaces are created, and that we have more than
50 users around, it's not unreasonable to reach that situation.
The proposed solution uses the not yet reserved range from 64 to 127. If
more devices are needed, we may push 64 to 16.
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
drivers/char/misc.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff -puN drivers/char/misc.c~drivers-char-miscc-use-a-proper-range-for-minor-number-dynamic-allocation drivers/char/misc.c
--- a/drivers/char/misc.c~drivers-char-miscc-use-a-proper-range-for-minor-number-dynamic-allocation
+++ a/drivers/char/misc.c
@@ -59,6 +59,7 @@ static DEFINE_MUTEX(misc_mtx);
/*
* Assigned numbers, used for dynamic minors
*/
+#define DYNAMIC_MINOR_BASE 64
#define DYNAMIC_MINORS 64 /* like dynamic majors */
static DECLARE_BITMAP(misc_minors, DYNAMIC_MINORS);
@@ -201,7 +202,7 @@ int misc_register(struct miscdevice * mi
mutex_unlock(&misc_mtx);
return -EBUSY;
}
- misc->minor = DYNAMIC_MINORS - i - 1;
+ misc->minor = DYNAMIC_MINOR_BASE + i;
set_bit(i, misc_minors);
}
@@ -210,7 +211,7 @@ int misc_register(struct miscdevice * mi
misc->this_device = device_create(misc_class, misc->parent, dev,
misc, "%s", misc->name);
if (IS_ERR(misc->this_device)) {
- int i = DYNAMIC_MINORS - misc->minor - 1;
+ int i = misc->minor - DYNAMIC_MINOR_BASE;
if (i < DYNAMIC_MINORS && i >= 0)
clear_bit(i, misc_minors);
err = PTR_ERR(misc->this_device);
@@ -239,7 +240,7 @@ int misc_register(struct miscdevice * mi
int misc_deregister(struct miscdevice *misc)
{
- int i = DYNAMIC_MINORS - misc->minor - 1;
+ int i = misc->minor - DYNAMIC_MINOR_BASE;
if (list_empty(&misc->list))
return -EINVAL;
_
next prev parent reply other threads:[~2009-12-15 22:35 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091215143446.8b6a7e57.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=cascardo@holoscopio.com \
--cc=gregkh@suse.de \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rubini@gnudd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox