Blame SOURCES/kmod-0006-depmod-module_is_higher_priority-fix-modname-length-.patch

3dc794
From dd73c8a2f5e8da3c38f6e16c63f249071d440378 Mon Sep 17 00:00:00 2001
3dc794
From: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
3dc794
Date: Thu, 7 Dec 2017 20:59:54 +0200
3dc794
Subject: [PATCH 2/2] depmod: module_is_higher_priority: fix modname length
3dc794
 calculation
3dc794
3dc794
depmod_module_is_higher_priority checks module's path if it is under
3dc794
module root directory and if so uses relative to the root path to
3dc794
lookup the module in override and search lists.
3dc794
3dc794
Originally only relative path was used in the function, so the
3dc794
variables with full path and and path length were changed:
3dc794
3dc794
       newpath += cfg->dirnamelen + 1;
3dc794
       newlen -= cfg->dirnamelen + 1;
3dc794
       oldpath += cfg->dirnamelen + 1;
3dc794
       oldlen -= cfg->dirnamelen + 1;
3dc794
3dc794
Commit 7da6884e7357ac05772e90f6d7e63b1948103fc4 (depmod: implement
3dc794
external directories support) changed the logic since it need the
3dc794
full path to the module for comparations as well.
3dc794
3dc794
Unfortunately, it introduce a mistake in calculation of the relative
3dc794
paths replacing '-=' with assignment to a new variable -- the
3dc794
'cfg->dirnamelen + 1' value must be substracted all together. It
3dc794
breaks, for example, overrides lookup.
3dc794
3dc794
Fix the calculation by putting braces around the value in the
3dc794
subsctuction expression.
3dc794
3dc794
Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
3dc794
---
3dc794
 tools/depmod.c | 4 ++--
3dc794
 1 file changed, 2 insertions(+), 2 deletions(-)
3dc794
3dc794
diff --git a/tools/depmod.c b/tools/depmod.c
3dc794
index 7ff3e9ed191e..921dc5cc93eb 100644
3dc794
--- a/tools/depmod.c
3dc794
+++ b/tools/depmod.c
3dc794
@@ -1118,11 +1118,11 @@ static int depmod_module_is_higher_priority(const struct depmod *depmod, const s
3dc794
 
3dc794
 	if (strncmp(newpath, cfg->dirname, cfg->dirnamelen) == 0) {
3dc794
 		relnewpath = newpath + cfg->dirnamelen + 1;
3dc794
-		relnewlen = newlen - cfg->dirnamelen + 1;
3dc794
+		relnewlen = newlen - (cfg->dirnamelen + 1);
3dc794
 	}
3dc794
 	if (strncmp(oldpath, cfg->dirname, cfg->dirnamelen) == 0) {
3dc794
 		reloldpath = oldpath + cfg->dirnamelen + 1;
3dc794
-		reloldlen = oldlen - cfg->dirnamelen + 1;
3dc794
+		reloldlen = oldlen - (cfg->dirnamelen + 1);
3dc794
 	}
3dc794
 
3dc794
 	for (ov = cfg->overrides; ov != NULL; ov = ov->next) {
3dc794
-- 
3dc794
2.15.1
3dc794