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

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