path: root/usertools
diff options
authorMark Asselstine <>2017-05-01 15:09:09 -0400
committerThomas Monjalon <>2017-05-01 23:58:31 +0200
commitdf86b009dd7099d2a373f3eddbe5ca997dacace3 (patch)
tree7f1c34bdd40b0bcdf7df30f79fb8d1edf504c0c0 /usertools
parentfca82a8accf9e62c07d00b1376717d4eb58f6798 (diff)
usertools: remove devbind module search corner cases
The existing code used to search for module files via modinfo has several corner cases which can result in it failing where it should be successful. The call to lower() would cause results returned by 'modinfo' to be forced to lowercase, results which were subsequently passed to exists() which is case sensitive. This was most likely done to capture all variants of failure strings modinfo might return (ie. ERROR/Error/error/...) without thought negative effect to the later call to exists(). For many this is a nonissue but if the module path included non-lowercase alpha characters, something which is easily possible with a non-lowercase kernel-extraversion string, this would cause an issue. We could move the call to lower() to the check for "error" but this still leaves possible corner cases, for modules or module paths with 'error' in them. Instead we will prevent modinfo's stderr from being used as a "good value" for path, meaning we either get a valid path from modinfo, or nothing at all. This removes all corner cases. Ultimately these preliminary checks are unnecessary as exists() will only return True if it is passed a valid path, passing it modinfo's stderr would fail. In keeping with the original code, however, we do some preliminary checks, but we are now free of corner cases. Signed-off-by: Mark Asselstine <>
Diffstat (limited to 'usertools')
1 files changed, 5 insertions, 6 deletions
diff --git a/usertools/ b/usertools/
index 7dc8e48..2d99e9d 100755
--- a/usertools/
+++ b/usertools/
@@ -161,12 +161,11 @@ def find_module(mod):
# check using depmod
- depmod_out = check_output(["modinfo", "-n", mod],
- stderr=subprocess.STDOUT).lower()
- if "error" not in depmod_out:
- path = depmod_out.strip()
- if exists(path):
- return path
+ with open(os.devnull, "w") as fnull:
+ path = check_output(["modinfo", "-n", mod], stderr=fnull).strip()
+ if path and exists(path):
+ return path
except: # if modinfo can't find module, it fails, so continue