Bug 458132 - Missing symbol in link from static IPv6, loadable Crypto API
Summary: Missing symbol in link from static IPv6, loadable Crypto API
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: kernel
Version: 5.2
Hardware: All
OS: Linux
medium
medium
Target Milestone: rc
: ---
Assignee: Neil Horman
QA Contact: Martin Jenner
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2008-08-06 16:12 UTC by Steve Snyder
Modified: 2008-12-08 15:52 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2008-12-08 15:52:03 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Steve Snyder 2008-08-06 16:12:42 UTC
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 15:52:03 UTC
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.