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.
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!