|
|
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 |
|