Bug 458132 - Missing symbol in link from static IPv6, loadable Crypto API
Missing symbol in link from static IPv6, loadable Crypto API
Status: CLOSED UPSTREAM
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: kernel (Show other bugs)
5.2
All Linux
medium Severity medium
: rc
: ---
Assigned To: Neil Horman
Martin Jenner
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2008-08-06 12:12 EDT by Steve Snyder
Modified: 2008-12-08 10:52 EST (History)
3 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2008-12-08 10:52:03 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Steve Snyder 2008-08-06 12:12:42 EDT
Description of problem:

The kernel build system allows CONFIG_IPV6=y, which selects CONFIG_XFRM_NALGO=y, which is dependent upon CONFIG_CRYPTO_API.  Ufortunately, CONFIG_CRYPTO_API can be independently configured as a loadable module, and is by Red Hat default.  The result is a kernel link failure due to the missing symbol crypto_has_alg().

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

2.6.18-92.1.10.el5.i686

How reproducible:

Always.

Steps to Reproduce:
1. Unpack the 2.6.18-92.1.10.el5 source RPM, prep as usual
2. Opt (I used "make menuconfig") to build the IPv6 driver into the static kernel image
3. Build the kernel
  
Actual results:

  GEN     .version
  CHK     include/linux/compile.h
  UPD     include/linux/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1
net/built-in.o: In function `xfrm_find_algo':
/usr/src/linux-2.6.18-92.1.10.el5.sws/net/xfrm/xfrm_nalgo.c:450: undefined reference to `crypto_has_alg'
make: *** [.tmp_vmlinux1] Error 1

Expected results:

The kernel configuration system should force a dependant driver to build statically when another driver that depends on it is statically built.  Or disallow a static build if a dependant module is built for dynamic loading.  Either way, the symbols of all statically-built device drivers must reconcile at link time.

Additional info:

[boilerplate_disclaimer]
Yes, I am all too aware that Red Hat doesn't support user-configured kernels.
[/boilerplate_disclaimer]

That said, I think you will want to know about a hidden dependency between device drivers.

FYI.
Comment 1 Neil Horman 2008-12-08 10:52:03 EST
Ok, I've looked at this, and upstream has resolved this by not making XFRM_NALGO selected by enabling IPV6.  As a result the user is completely responsible for ensuring that all symbols required by the monolitic kernel are appropriately configured.  While we appreciate the heads up on this, since we don't support recompiled kernels, and since you clearly know enough to configure a kernel and resolve this symbol discrepancy by by setting CONFIG_CRYPTO_API=y, the best thing to do here is probably to simply close this bug so others can find this info if they need it.  I appreciate the report though.  Thanks!

Note You need to log in before you can comment on or make changes to this bug.