modprobe-small: remove redundant aliases from modules.dep.bb
function old new delta parse_module 309 395 +86 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
5fd3ddfb24
commit
6116cb23cc
@ -212,6 +212,7 @@ static void parse_module(module_info *info, const char *pathname)
|
||||
reset_stringbuf();
|
||||
pos = 0;
|
||||
while (1) {
|
||||
unsigned start = stringbuf_idx;
|
||||
ptr = find_keyword(module_image + pos, len - pos, "alias=");
|
||||
if (!ptr) {
|
||||
ptr = find_keyword(module_image + pos, len - pos, "__ksymtab_");
|
||||
@ -228,6 +229,31 @@ static void parse_module(module_info *info, const char *pathname)
|
||||
}
|
||||
append(ptr);
|
||||
appendc(' ');
|
||||
/*
|
||||
* Don't add redundant aliases, such as:
|
||||
* libcrc32c.ko symbol:crc32c symbol:crc32c
|
||||
*/
|
||||
if (start) { /* "if we aren't the first alias" */
|
||||
char *found, *last;
|
||||
stringbuf[stringbuf_idx] = '\0';
|
||||
last = stringbuf + start;
|
||||
/*
|
||||
* String at last-1 is " symbol:crc32c "
|
||||
* (with both leading and trailing spaces).
|
||||
*/
|
||||
if (strncmp(stringbuf, last, stringbuf_idx - start) == 0)
|
||||
/* First alias matches us */
|
||||
found = stringbuf;
|
||||
else
|
||||
/* Does any other alias match? */
|
||||
found = strstr(stringbuf, last-1);
|
||||
if (found < last-1) {
|
||||
/* There is absolutely the same string before us */
|
||||
dbg2_error_msg("redundant:'%s'", last);
|
||||
stringbuf_idx = start;
|
||||
goto skip;
|
||||
}
|
||||
}
|
||||
skip:
|
||||
pos = (ptr - module_image);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user