Bug 1321628
| Summary: | out-of-tree kernel module building broken with CONFIG_STACK_VALIDATION=, loss of automatic kbuild dependencies | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Frank Ch. Eigler <fche> |
| Component: | kernel | Assignee: | Kernel Maintainer List <kernel-maint> |
| Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | urgent | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | rawhide | CC: | dsmith, gansalmon, itamar, jonathan, jpoimboe, kernel-maint, madhu.chinakonda, mchehab |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2016-03-31 12:18:45 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: | |||
Josh, has this been reported upstream? I would think we'd want to leave stack validation enabled given it's benefits. No, this hasn't been reported upstream. I'm on PTO this week but I'll be sure and look at it next week. (In reply to Josh Poimboeuf from comment #2) > No, this hasn't been reported upstream. I'm on PTO this week but I'll be > sure and look at it next week. I don't think this is an upstream issue after poking at it some. I noticed that for some of the other tool related things (like recordmcount), we're installing the tools themselves in /lib/modules/`uname -r`/build/scripts/ so that when the make targets get invoked that require them, the tools are there. However, for CONFIG_STACK_VALIDATION, we are not currently installing the objtool binary itself. When I copy a locally built objtool to the location, the sample module make invocation works fine. This isn't a problem when building from a local kernel tree, as the binary will exist in the expected location. So I think this is simply a packaging bug. I'll see if I can fix it today. I've fixed this in Fedora git. It will be included in the next build. $ find linux-4.6-rc1 -name Documentation linux-4.6-rc1/Documentation linux-4.6-rc1/drivers/staging/iio/Documentation linux-4.6-rc1/drivers/staging/unisys/Documentation linux-4.6-rc1/drivers/staging/i4l/Documentation linux-4.6-rc1/drivers/staging/most/Documentation linux-4.6-rc1/tools/objtool/Documentation linux-4.6-rc1/tools/build/Documentation linux-4.6-rc1/tools/perf/Documentation Mister Poimboeuf, is there a reason why documentation is not in one place, e.g. $ find linux-4.6-rc1 -name stack-validation.txt linux-4.6-rc1/tools/objtool/Documentation/stack-validation.txt rather than here: linux-4.6-rc1/Documentation/stack-validation.txt so these fine papers can be read on https://www.kernel.org/doc/Documentation/ Fixed in 4.6.0-0.rc1.git0.3.fc25. Will be in tomorrow's compose. |
Description of problem: Between kernel-4.6.0-0.rc0.git5.1.fc25.x86_64 and kernel-4.6.0-0.rc0.git20.1.fc25.x86_64 basic out-of-tree kernel module building has broken, when the module uses a standard Makefile like: obj-m := the_module.o the_module-y := part1.o part2.o with nearby (even empty) part1.c and part2.c source files. It appears that the new objtool machinery interferes with the dependency searching, and make -C /lib/modules/4.6.0-0.rc0.git20.1.fc25.x86_64/build/ M=`pwd` modules make: Entering directory '/usr/src/kernels/4.6.0-0.rc0.git20.1.fc25.x86_64' make[1]: *** No rule to make target '/tmp/foo/part1.o', needed by '/tmp/foo/the_module.o'. Stop. Makefile:1419: recipe for target '_module_/tmp/foo' failed make: *** [_module_/tmp/foo] Error 2 make: Leaving directory '/usr/src/kernels/4.6.0-0.rc0.git20.1.fc25.x86_64' This breaks systemtap. Older kernels work. Running with make CONFIG_STACK_VALIDATION= with the new kernel also works.