Takes advantage of the order and locates symbols using binary search. This work was supported by a hardware donation from the CE Linux Forum. Signed-off-by: Alessio Igor Bogani <abogani@xxxxxxxxxx> --- kernel/module.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-) diff --git a/kernel/module.c b/kernel/module.c index 8845a0b..731173c 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -57,6 +57,7 @@ #include <linux/kmemleak.h> #include <linux/jump_label.h> #include <linux/pfn.h> +#include <linux/bsearch.h> #define CREATE_TRACE_POINTS #include <trace/events/module.h> @@ -244,12 +245,15 @@ static bool each_symbol_in_section(const struct symsearch *arr, unsigned int symnum, void *data), void *data) { - unsigned int i, j; + unsigned int j; + const struct kernel_symbol *sym, *start; + size_t size = sizeof(struct kernel_symbol); for (j = 0; j < arrsize; j++) { - for (i = 0; i < arr[j].stop - arr[j].start; i++) - if (cmp(data, &arr[j].start[i]) == 0) - return fn(&arr[j], owner, i, data); + start = arr[j].start; + sym = bsearch(data, start, arr[j].stop - arr[j].start, size, cmp); + if (sym != NULL) + return fn(&arr[j], owner, sym - start, data); } return false; -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-embedded" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html