diff options
author | Andrew Morton <akpm@linux-foundation.org> | 2007-02-20 16:57:48 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-20 20:10:13 -0500 |
commit | b446b60e4eb5e5457120c4728ada871b1209c1d0 (patch) | |
tree | 1fcff840a5cfb61399b9eac843d5b74e9e6b45e0 /drivers/base | |
parent | f4fa27c16ba9b6910c5b815e5c13a7e8249277f0 (diff) |
[PATCH] rework reserved major handling
Several people have reported failures in dynamic major device number handling
due to the recent changes in there to avoid handing out the local/experimental
majors.
Rolf reports that this is due to a gcc-4.1.0 bug.
The patch refactors that code a lot in an attempt to provoke the compiler into
behaving.
Cc: Rolf Eike Beer <eike-kernel@sf-tec.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/base')
-rw-r--r-- | drivers/base/core.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c index a8ac34ba610..d04fd33dcd9 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c | |||
@@ -28,6 +28,20 @@ int (*platform_notify)(struct device * dev) = NULL; | |||
28 | int (*platform_notify_remove)(struct device * dev) = NULL; | 28 | int (*platform_notify_remove)(struct device * dev) = NULL; |
29 | 29 | ||
30 | /* | 30 | /* |
31 | * Detect the LANANA-assigned LOCAL/EXPERIMENTAL majors | ||
32 | */ | ||
33 | bool is_lanana_major(unsigned int major) | ||
34 | { | ||
35 | if (major >= 60 && major <= 63) | ||
36 | return 1; | ||
37 | if (major >= 120 && major <= 127) | ||
38 | return 1; | ||
39 | if (major >= 240 && major <= 254) | ||
40 | return 1; | ||
41 | return 0; | ||
42 | } | ||
43 | |||
44 | /* | ||
31 | * sysfs bindings for devices. | 45 | * sysfs bindings for devices. |
32 | */ | 46 | */ |
33 | 47 | ||