Bug 1324376

Summary: KMP issue: compatibility symlinks for compatible modules are not created on PPC64LE for errata kernel
Product: Red Hat Enterprise Linux 7 Reporter: Alaa Hleihel <alaa>
Component: kmodAssignee: David Shea <dshea>
Status: CLOSED DUPLICATE QA Contact: Xiaoli Li <xiaolli>
Severity: urgent Docs Contact:
Priority: unspecified    
Version: 7.2CC: alaa, cye, dshea, hannsj_uhl, vlad
Target Milestone: rc   
Target Release: ---   
Hardware: ppc64le   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-04-07 13:36:37 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:

Description Alaa Hleihel 2016-04-06 08:18:21 UTC
Description of problem:

After installing a kernel module packaged in an RPM with KMP support (kmod-... rpm file that was built against default kernel version 3.10.0-327.el7.ppc64le) on RHEL 7.2 PPC64LE with errata kernel version 3.10.0-327.10.1.el7.ppc64le, the compatibility symlinks for the modules were not created under /lib/modules/3.10.0-327.10.1.el7.ppc64le/weak-updates/.

The problem is with a regular expression in script "/sbin/weak-modules" in function module_is_compatible, which fails to get the "TOC." symbol from kernel's symvers, which causes a false alarm like:
    "Module ib_core.ko from kernel 3.10.0-327.el7.ppc64le is not compatible   with kernel 3.10.0-327.10.1.el7.ppc64le in symbols: TOC."
Therefore, the symlink is not created under weak-updates/ directory.

* Note that manually insmod-ing the module worked, which indicated that there is no ABI compatibility issue.


More details:
At line #201: | sed -r -ne 's:^(0x[0]*[0-9a-f]{8}\t[0-9a-zA-Z_]+)\t.*:\1:p'
The symbol "TOC." is excluded as "\." is not in the regular expression for a valid symbol name.
But, when getting modversios for each module using modprobe, all symbols are taken including those with "." in their names, and as a result, the script thinks that the module needs a symbol that is not provided by anyone.

I verified that "TOC." exists in /boot/symvers-$krel.gz with same version as in my module (both are 0x00000000      TOC.).

The "TOC." symbol seems to exist only on PPC64LE, therefore the issue exist only on PPC64LE.


######################
Version-Release number of selected component (if applicable):
/sbin/weak-modules from kmod-20-5.el7.ppc64le
Red Hat Enterprise Linux Server release 7.2 (Maipo)


######################
How reproducible:
Always.

######################
Steps to Reproduce:
1. Build kernel module packaged in an RPM with KMP support on 3.10.0-327.el7.ppc64le
2. Install it on errata kernel 3.10.0-327.10.1.el7.ppc64le

######################
Actual results:
Compatibility symlinks for compatible modules are not created. Nothing under /lib/modules/3.10.0-327.10.1.el7.ppc64le/weak-updates/

######################
Expected results:
Links for installed module should exist under /lib/modules/3.10.0-327.10.1.el7.ppc64le/weak-updates/

Comment 2 David Shea 2016-04-07 13:36:37 UTC

*** This bug has been marked as a duplicate of bug 1283486 ***

Comment 3 Alaa Hleihel 2016-04-10 08:14:14 UTC
Hi David,

It seems that I don't have permission to access bug 1283486.
Would you please grant permissions to access it ?

Thanks,
Alaa

Comment 4 David Shea 2016-04-11 12:33:19 UTC
Hi Alaa, you should have access now.

Comment 5 Alaa Hleihel 2016-04-11 12:34:30 UTC
yes, I can see it now. thanks a lot.