The current code assumes "foo-bar" must always be compatible with a node compatible with "foo", which breaks device trees where this is not so.
The "case" part is also wrong according to Open Firmware, but it's more likely to have drivers and/or device trees depending on it, and thus needs to be handled more carefully. Signed-off-by: Scott Wood <[EMAIL PROTECTED]> --- arch/powerpc/kernel/prom.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index 37ff99b..0b136a5 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c @@ -218,7 +218,7 @@ int __init of_flat_dt_is_compatible(unsigned long node, const char *compat) if (cp == NULL) return 0; while (cplen > 0) { - if (strncasecmp(cp, compat, strlen(compat)) == 0) + if (strcasecmp(cp, compat) == 0) return 1; l = strlen(cp) + 1; cp += l; @@ -1099,7 +1099,7 @@ int of_device_is_compatible(const struct device_node *device, if (cp == NULL) return 0; while (cplen > 0) { - if (strncasecmp(cp, compat, strlen(compat)) == 0) + if (strcasecmp(cp, compat) == 0) return 1; l = strlen(cp) + 1; cp += l; -- 1.5.0.3 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev