summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYauheni Kaliuta <yauheni.kaliuta@redhat.com>2017-12-07 21:16:08 +0200
committerLucas De Marchi <lucas.demarchi@intel.com>2017-12-07 13:08:23 -0800
commitbb83f6ac68fe66c6e17afcab2cd6c2712e5c570e (patch)
treed676b4d45013ab0c0aa3fe0e5cda815cb4ede6e7
parent809b9fb6cf6b1f5cd665a1da3fa296d705c2af2b (diff)
downloadkmod-bb83f6ac68fe66c6e17afcab2cd6c2712e5c570e.tar.gz
kmod-bb83f6ac68fe66c6e17afcab2cd6c2712e5c570e.tar.bz2
kmod-bb83f6ac68fe66c6e17afcab2cd6c2712e5c570e.zip
depmod: module_is_higher_priority: fix modname length calculation
depmod_module_is_higher_priority checks module's path if it is under module root directory and if so uses relative to the root path to lookup the module in override and search lists. Originally only relative path was used in the function, so the variables with full path and and path length were changed: newpath += cfg->dirnamelen + 1; newlen -= cfg->dirnamelen + 1; oldpath += cfg->dirnamelen + 1; oldlen -= cfg->dirnamelen + 1; Commit 7da6884e7357ac05772e90f6d7e63b1948103fc4 (depmod: implement external directories support) changed the logic since it need the full path to the module for comparations as well. Unfortunately, it introduce a mistake in calculation of the relative paths replacing '-=' with assignment to a new variable -- the 'cfg->dirnamelen + 1' value must be substracted all together. It breaks, for example, overrides lookup. Fix the calculation by putting braces around the value in the subsctuction expression. Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
-rw-r--r--tools/depmod.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/tools/depmod.c b/tools/depmod.c
index 9db602d..989d907 100644
--- a/tools/depmod.c
+++ b/tools/depmod.c
@@ -1118,11 +1118,11 @@ static int depmod_module_is_higher_priority(const struct depmod *depmod, const s
if (strncmp(newpath, cfg->dirname, cfg->dirnamelen) == 0) {
relnewpath = newpath + cfg->dirnamelen + 1;
- relnewlen = newlen - cfg->dirnamelen + 1;
+ relnewlen = newlen - (cfg->dirnamelen + 1);
}
if (strncmp(oldpath, cfg->dirname, cfg->dirnamelen) == 0) {
reloldpath = oldpath + cfg->dirnamelen + 1;
- reloldlen = oldlen - cfg->dirnamelen + 1;
+ reloldlen = oldlen - (cfg->dirnamelen + 1);
}
for (ov = cfg->overrides; ov != NULL; ov = ov->next) {