diff options
author | Andrew Morton <akpm@osdl.org> | 2007-02-12 00:51:43 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-12 09:48:27 -0800 |
commit | 215122e1110f97a3f478829049b9840cf8fdde57 (patch) | |
tree | d0da44b5e8fc9836dc4e3e5745234fa01f6a87d8 /fs/char_dev.c | |
parent | 6ab8eb1cffcc5640ca5b07c2a0ddfaa8fbbcc754 (diff) | |
download | lwn-215122e1110f97a3f478829049b9840cf8fdde57.tar.gz lwn-215122e1110f97a3f478829049b9840cf8fdde57.zip |
[PATCH] register_chrdev_region() don't hand out the LOCAL/EXPERIMENTAL majors
As pointed out in http://bugzilla.kernel.org/show_bug.cgi?id=7922, dynamic
chardev major allocation can hand out majors which LANANA has defined as being
for local/experimental use.
Cc: Torben Mathiasen <device@lanana.org>
Cc: Greg KH <greg@kroah.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Tomas Klas <tomas.klas@mepatek.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/char_dev.c')
-rw-r--r-- | fs/char_dev.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/char_dev.c b/fs/char_dev.c index a885f46ca001..e6194e2b9bb9 100644 --- a/fs/char_dev.c +++ b/fs/char_dev.c @@ -108,6 +108,13 @@ __register_chrdev_region(unsigned int major, unsigned int baseminor, /* temporary */ if (major == 0) { for (i = ARRAY_SIZE(chrdevs)-1; i > 0; i--) { + /* + * Disallow the LANANA-assigned LOCAL/EXPERIMENTAL + * majors + */ + if ((60 <= i && i <= 63) || (120 <= i && i <= 127) || + (240 <= i && i <= 254)) + continue; if (chrdevs[i] == NULL) break; } |