Bug 1522994

Summary: depmod does not find kernel modules specified through override
Product: Red Hat Enterprise Linux 7 Reporter: Kyle Smith <kyles>
Component: kmodAssignee: Yauheni Kaliuta <ykaliuta>
Status: CLOSED ERRATA QA Contact: Ziqian SUN (Zamir) <zsun>
Severity: high Docs Contact:
Priority: urgent    
Version: 7.4CC: ajb, alaa, blomqvist.janne, bruno.travouillon, cye, jsquyres, lmiksik, radoslaw.piliszek, rmullett, skozina, tdockendorf, toracat, tvvcox, zsun
Target Milestone: rcKeywords: ZStream
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: kmod-20-21.el7 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1525364 (view as bug list) Environment:
Last Closed: 2018-04-10 13:50:24 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1525364    

Description Kyle Smith 2017-12-06 23:10:32 UTC
Description of problem:
When attempting to depmod a kernel module using an "override" in a configuration file in /etc/depmod.d, the original module is selected as a higher priority, making it impossible to ever load an external module.

Version-Release number of selected component (if applicable):
kmod-20-15.el7_4.6
https://access.redhat.com/errata/RHBA-2017:3326

How reproducible:
Every time

Steps to Reproduce:
1. Create kernel module to use with override directive
2. echo "override <kmod-name> 3.10.0-* <kmod-name>" > /etc/depmod.d.<kmod-name>.conf
3. depmod
4. check /usr/lib/`uname -r`/modules.dep for <kmod-name>

Installing a kmod package should also cover steps 1-3

Actual results:
modules.dep contains original kernel module

Expected results:
modules.dep contains new module

Additional info:
Looking at depmod.c, and the function depmod_module_is_higher_priority in particular, there seems to have been a bug introduced when moving from el7_4.4 to el7_4.6.

newlen (and oldlen) were -= to cfg->dirnamelen + 1 in el7_4.4. However, in el7_4.6 they were expanded into new variables relnewlen and reloldlen which were made equal to {new,old}len - cfg->dirnamelen + 1. I believe these variables should be set equal to {new,old}len - (cfg->dirnamelen + 1) if we were to maintain the original arithmetic. Initial testing seems to prove that adding the parentheses should resolve the issue.

Comment 2 Yauheni Kaliuta 2017-12-08 09:54:35 UTC
Thank you a lot for the the report, the fix has been accepted by the upstream at the moment https://github.com/lucasdemarchi/kmod/commit/bb83f6ac68fe66c6e17afcab2cd6c2712e5c570e

Comment 7 Radosław Piliszek 2017-12-12 12:40:39 UTC
This is blocker for Mellanox OFED as its kmod packages use overrides.

Comment 9 Akemi Yagi 2018-01-02 18:16:37 UTC
Just a note to add that the issue affects ELRepo's kmod packages that require the override function.

Comment 10 Alaa Hleihel 2018-01-09 15:43:23 UTC
Hi,

This issue exist also in RHEL 7.5 Beta.
Please include the fix in the next RHEL 7.5 Beta/RC.

Thanks,
Alaa

Comment 13 Stanislav Kozina 2018-01-29 08:33:29 UTC
*** Bug 1525370 has been marked as a duplicate of this bug. ***

Comment 16 errata-xmlrpc 2018-04-10 13:50:24 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2018:0799