kmodloader is using slightly different criteria for ordering the AVL tree versus what it uses to traverse it. This sometimes results in not being able to find some modules.
Reference: https://bugs.lede-project.org/index.php?do=details&task_id=443 Signed-off-by: Nathan Hintz <nlhi...@hotmail.com> --- kmodloader.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/kmodloader.c b/kmodloader.c index 465d3de..8343836 100644 --- a/kmodloader.c +++ b/kmodloader.c @@ -985,20 +985,23 @@ out: return 0; } +inline char weight(char c) +{ + return c == '_' ? '-' : c; +} + static int avl_modcmp(const void *k1, const void *k2, void *ptr) { const char *s1 = k1; const char *s2 = k2; - while (*s1 && ((*s1 == *s2) || - ((*s1 == '_') && (*s2 == '-')) || - ((*s1 == '-') && (*s2 == '_')))) + while (*s1 && (weight(*s1) == weight(*s2))) { s1++; s2++; } - return *(const unsigned char *)s1 - *(const unsigned char *)s2; + return (unsigned char)weight(*s1) - (unsigned char)weight(*s2); } int main(int argc, char **argv) -- 2.9.3 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev