Bug 1430091

Summary: crash: mod [-sS] command may erroneously reassign module symbol addresses
Product: Red Hat Enterprise Linux 7 Reporter: Dave Anderson <anderson>
Component: crashAssignee: Dave Anderson <anderson>
Status: CLOSED ERRATA QA Contact: Emma Wu <xiawu>
Severity: urgent Docs Contact:
Priority: unspecified    
Version: 7.4CC: qzhao, xiawu
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: crash-7.1.8-2.el7 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-08-01 22:04:38 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:

Description Dave Anderson 2017-03-07 20:30:34 UTC
Description of problem:

With certain kernel modules, it is possible that the "mod -[sS]" options,
which load the debuginfo data of one or all kernel modules, may reassign
one or more module symbol values from the kallsyms-generated values to 
incorrect values.

Version-Release number of selected component (if applicable):

All crash versions to date, including the most recently released crash-7.1.8 version.

How reproducible:

Depending upon the kernel modules installed, it may be unnoticeable, or
there may be a message indicating that an erroneously-assigned symbol
has a value that is beyond the end of the module's address space. 

Steps to Reproduce:
1. mod -S  (or mod -s <module>)
2.
3.

Actual results:

Typically there will be a message similar to this example:

crash> mod -s nfsd
mod: nfsd: last symbol: nfsd4_cb_layout_fail is not _MODULE_END_nfsd?
     MODULE       NAME                       SIZE  OBJECT FILE
ffffffffa06cea80  nfsd                     333626  /lib/modules/3.10.0-514.el7.x86_64/kernel/fs/nfsd/nfsd.ko 
crash> 

The message above is indicating that the highest symbol value registered has
a value that is beyond the end of the module's address space.  But there
may be more than just the highest symbol value, and worse yet, if the
erroneously reassigned symbol values fit within the module's address
space, there will be no message at all.  

Expected results:

Module symbol values should be correct.

Additional info:

This bug has been fixed upstream by this git commit:

https://github.com/crash-utility/crash/commit/ce0648294b98a1ba4e78c9817db198d4e2bbb17f

  Fix for the "mod -[sS]" option to prevent the erroneous reassignment
  of one or more symbol values of a kernel module.  Without the patch,
  when loading a kernel module, a message may indicate "mod: <module>:
  last symbol: <symbol> is not _MODULE_END_<module>?" may be displayed,
  and one or more symbols may be reassigned an incorrect symbol value.
  If none of the erroneous symbol value reassignments are beyond the
  end of the module's address space, then there will be no message.
  (anderson)

Comment 7 errata-xmlrpc 2017-08-01 22:04:38 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-2017:2019