1
0
Fork 0
alistair23-linux/Documentation
Masahiro Yamada b7dca6dd1e kbuild: create *.mod with full directory path and remove MODVERDIR
While descending directories, Kbuild produces objects for modules,
but do not link final *.ko files; it is done in the modpost.

To keep track of modules, Kbuild creates a *.mod file in $(MODVERDIR)
for every module it is building. Some post-processing steps read the
necessary information from *.mod files. This avoids descending into
directories again. This mechanism was introduced in 2003 or so.

Later, commit 551559e13a ("kbuild: implement modules.order") added
modules.order. So, we can simply read it out to know all the modules
with directory paths. This is easier than parsing the first line of
*.mod files.

$(MODVERDIR) has a flat directory structure, that is, *.mod files
are named only with base names. This is based on the assumption that
the module name is unique across the tree. This assumption is really
fragile.

Stephen Rothwell reported a race condition caused by a module name
conflict:

  https://lkml.org/lkml/2019/5/13/991

In parallel building, two different threads could write to the same
$(MODVERDIR)/*.mod simultaneously.

Non-unique module names are the source of all kind of troubles, hence
commit 3a48a91901 ("kbuild: check uniqueness of module names")
introduced a new checker script.

However, it is still fragile in the build system point of view because
this race happens before scripts/modules-check.sh is invoked. If it
happens again, the modpost will emit unclear error messages.

To fix this issue completely, create *.mod with full directory path
so that two threads never attempt to write to the same file.

$(MODVERDIR) is no longer needed.

Since modules with directory paths are listed in modules.order, Kbuild
is still able to find *.mod files without additional descending.

I also killed cmd_secanalysis; scripts/mod/sumversion.c computes MD4 hash
for modules with MODULE_VERSION(). When CONFIG_DEBUG_SECTION_MISMATCH=y,
it occurs not only in the modpost stage, but also during directory
descending, where sumversion.c may parse stale *.mod files. It would emit
'No such file or directory' warning when an object consisting a module is
renamed, or when a single-obj module is turned into a multi-obj module or
vice versa.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Nicolas Pitre <nico@fluxnic.net>
2019-07-18 02:19:31 +09:00
..
ABI Merge branch 'i2c/for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2019-07-15 21:10:39 -07:00
EDID docs: EDID/HOWTO.txt: convert it and rename to howto.rst 2019-06-14 14:32:29 -06:00
PCI Documentation: PCI: convert endpoint/pci-test-howto.txt to reST 2019-05-30 17:54:34 -05:00
RCU It's been a relatively busy cycle for docs: 2019-07-09 12:34:26 -07:00
accelerators docs: mark orphan documents as such 2019-06-08 13:42:11 -06:00
accounting psi: introduce psi monitor 2019-05-14 19:52:48 -07:00
acpi/dsd docs: fix broken documentation links 2019-06-08 13:42:13 -06:00
admin-guide for-linus-20190715 2019-07-15 21:20:52 -07:00
aoe docs: aoe: convert docs to ReST and rename to *.rst 2019-06-14 14:20:22 -06:00
arm docs: mark orphan documents as such 2019-06-08 13:42:11 -06:00
arm64 ARM: 2019-07-12 15:35:14 -07:00
auxdisplay
backlight
block block: Remove unused definitions 2019-07-10 14:18:01 -06:00
blockdev zram: idle writeback fixes and cleanup 2019-01-08 17:15:10 -08:00
bpf Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2019-07-11 10:55:49 -07:00
bus-devices
cdrom docs: ide: convert docs to ReST and rename to *.rst 2019-06-14 14:21:18 -06:00
cgroup-v1 for-5.3/block-20190708 2019-07-09 10:45:06 -07:00
cma
connector
console Documentation: corrections to console/console.txt 2018-08-10 16:09:40 -06:00
core-api asm-generic, x86: add bitops instrumentation for KASAN 2019-07-12 11:05:42 -07:00
cpu-freq docs: power: convert docs to ReST and rename to *.rst 2019-06-14 16:08:36 -05:00
crypto crypto: doc - Fix formatting of new crypto engine content 2019-07-03 22:13:12 +08:00
dev-tools docs: kmemleak: add more documentation details 2019-07-12 11:05:42 -07:00
device-mapper - Add encrypted byte-offset initialization vector (eboiv) to DM crypt. 2019-07-13 15:24:31 -07:00
devicetree Merge branch 'i2c/for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2019-07-15 21:10:39 -07:00
doc-guide Doc : doc-guide : Fix a typo 2019-06-28 09:04:14 -06:00
driver-api pci-v5.3-changes 2019-07-15 20:44:49 -07:00
driver-model docs: driver-model: convert docs to ReST and rename to *.rst 2019-06-21 15:47:26 +02:00
early-userspace Correct gen_init_cpio tool's documentation 2018-11-25 12:25:53 -07:00
fault-injection It's been a relatively busy cycle for docs: 2019-07-09 12:34:26 -07:00
fb drm main pull request for v5.3-rc1 (sans mm changes) 2019-07-15 19:04:27 -07:00
features Documentation/stackprotector: powerpc supports stack protector 2019-06-14 14:44:43 -06:00
filesystems f2fs-for-5.3-rc1 2019-07-12 17:28:24 -07:00
firmware-guide It's been a relatively busy cycle for docs: 2019-07-09 12:34:26 -07:00
firmware_class
fpga docs: fpga: convert docs to ReST and rename to *.rst 2019-06-14 14:21:15 -06:00
gpio docs: gpio: convert docs to ReST and rename to *.rst 2019-04-23 23:30:07 +02:00
gpu drm main pull request for v5.3-rc1 (sans mm changes) 2019-07-15 19:04:27 -07:00
hid Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid 2019-07-11 15:32:11 -07:00
hwmon Driver Core and debugfs changes for 5.3-rc1 2019-07-12 12:24:03 -07:00
i2c Merge branch 'i2c/for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2019-07-15 21:10:39 -07:00
ia64
ide docs: ide: convert docs to ReST and rename to *.rst 2019-06-14 14:21:18 -06:00
iio docs: iio: convert to ReST 2019-06-22 10:41:57 +01:00
infiniband docs: infiniband: add it to the driver-api bookset 2019-07-08 14:22:56 -03:00
input docs: hid: convert to ReST 2019-07-02 10:19:34 +02:00
interconnect docs: mark orphan documents as such 2019-06-08 13:42:11 -06:00
ioctl platform/x86: ISST: Update ioctl-number.txt for Intel Speed Select interface 2019-07-02 18:41:16 +03:00
isdn isdn: remove isdn4linux 2019-05-31 11:13:10 +02:00
kbuild kbuild: get rid of misleading $(AS) from documents 2019-07-17 22:37:51 +09:00
kdump docs: kdump: convert docs to ReST and rename to *.rst 2019-06-14 14:21:24 -06:00
kernel-hacking docs: stop suggesting strlcpy 2019-06-20 14:08:49 -06:00
laptops It's been a relatively busy cycle for docs: 2019-07-09 12:34:26 -07:00
leds docs: leds: convert to ReST 2019-06-28 20:57:31 +02:00
lightnvm
livepatch docs/livepatch: Unify style of livepatch documentation in the ReST format 2019-05-07 16:06:28 -06:00
locking locking/lockdep: Add explanation to lock usage rules in lockdep design doc 2019-06-03 11:55:48 +02:00
m68k Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00
maintainer docs: Add a document on repository management 2019-06-18 09:33:16 -06:00
md
media media: doc-rst: Fix typos 2019-06-27 07:35:47 -04:00
memory-devices
mic docs: mic: convert docs to ReST and rename to *.rst 2019-06-14 14:23:26 -06:00
mips Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00
misc-devices docs: misc-devices: convert files without extension to ReST 2019-07-03 21:09:41 +02:00
mmc Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00
mtd Documentation: mtd: remove stale pxa3xx NAND controller documentation 2018-09-04 23:37:38 +02:00
namespaces
netlabel docs: netlabel: convert docs to ReST and rename to *.rst 2019-06-14 14:23:30 -06:00
networking Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2019-07-11 10:55:49 -07:00
nfc
nios2
nvdimm Documentation: nvdimm: Fix typo 2019-06-07 11:39:04 -06:00
nvmem Documentation: nvmem: document cell tables and lookup entries 2018-09-28 15:14:54 +02:00
openrisc
parisc Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00
pcmcia docs: pcmcia: convert docs to ReST and rename to *.rst 2019-06-14 14:23:35 -06:00
perf Documentation: perf: Add documentation for ThunderX2 PMU uncore driver 2018-12-06 12:29:47 +00:00
phy
power power supply and reset changes for the v5.3 series 2019-07-15 21:06:15 -07:00
powerpc powerpc updates for 5.3 2019-07-13 16:08:36 -07:00
process pci-v5.3-changes 2019-07-15 20:44:49 -07:00
pti
rapidio
riscv docs: riscv: convert docs to ReST and rename to *.rst 2019-06-14 14:31:32 -06:00
s390 docs: s390: s390dbf: typos and formatting, update crash command 2019-07-05 13:42:24 +02:00
scheduler pci-v5.3-changes 2019-07-15 20:44:49 -07:00
scsi scsi: ufs: Documentation: Announce ufs-tool v1.0 2019-06-26 22:47:51 -04:00
security Revert "Merge tag 'keys-acl-20190703' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs" 2019-07-10 18:43:43 -07:00
serial docs: serial: convert docs to ReST and rename to *.rst 2019-04-25 11:37:42 +02:00
sh sh: remove board_time_init() callback 2018-12-18 16:13:04 +01:00
sound ALSA: doc: my_chip has no element ioport 2019-04-03 11:55:47 +02:00
sparc docs: sparc: convert to ReST 2019-05-08 17:13:35 -07:00
sphinx docs: automarkup.py: ignore exceptions when seeking for xrefs 2019-07-08 14:35:47 -06:00
sphinx-static docs: improve readability for people with poorer eyesight 2018-10-07 09:16:50 -06:00
spi spi-summary: document set_cs_timing 2019-04-08 14:13:43 +07:00
sysctl It's been a relatively busy cycle for docs: 2019-07-09 12:34:26 -07:00
target docs: target: convert docs to ReST and rename to *.rst 2019-06-14 14:31:36 -06:00
thermal docs: hwmon: Add an index file and rename docs to *.rst 2019-04-17 10:37:23 -07:00
timers docs: timers: convert docs to ReST and rename to *.rst 2019-06-14 14:31:48 -06:00
trace pci-v5.3-changes 2019-07-15 20:44:49 -07:00
translations pci-v5.3-changes 2019-07-15 20:44:49 -07:00
usb docs: usb: rename files to .rst and add them to drivers-api 2019-06-20 14:28:36 +02:00
userspace-api Documentation: Add section about CPU vulnerabilities for Spectre 2019-06-26 11:42:41 -06:00
virtual ARM: 2019-07-12 15:35:14 -07:00
vm HMM patches for 5.3 2019-07-14 19:42:11 -07:00
w1 Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00
watchdog docs: watchdog: convert docs to ReST and rename to *.rst 2019-06-14 14:32:05 -06:00
wimax
x86 It's been a relatively busy cycle for docs: 2019-07-09 12:34:26 -07:00
xilinx docs: xilinx: convert eemi.txt to eemi.rst 2019-06-14 14:32:10 -06:00
xtensa xtensa: document boot parameter passing 2019-02-03 18:06:19 -08:00
.gitignore
Changes
CodingStyle
DMA-API-HOWTO.txt DMA mapping updates for 5.2 2019-05-09 08:40:55 -07:00
DMA-API.txt Documentation: DMA-API: fix a function name of max_mapping_size 2019-06-07 11:10:33 -06:00
DMA-ISA-LPC.txt Documentation/DMA-ISA-LPC: fix an incorrect reference 2019-02-11 08:23:07 -07:00
DMA-attributes.txt
IPMI.txt
IRQ-affinity.txt
IRQ-domain.txt
IRQ.txt
Intel-IOMMU.txt
Kconfig docs: Kbuild/Makefile: allow check for missing docs at build time 2019-06-07 11:33:16 -06:00
Makefile docs: Kbuild/Makefile: allow check for missing docs at build time 2019-06-07 11:33:16 -06:00
SAK.txt
SM501.txt
SubmittingPatches
atomic_bitops.txt docs: atomic_bitops.txt: add a title for this document 2019-04-11 12:37:02 -06:00
atomic_t.txt Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-07-08 16:12:03 -07:00
bt8xxgpio.txt
btmrvl.txt
bus-virt-phys-mapping.txt
clearing-warn-once.txt A reasonably busy cycle for docs, including: 2019-05-08 12:42:50 -07:00
conf.py Disable Sphinx SmartyPants in HTML output 2019-06-30 15:30:34 -06:00
cpu-load.txt
cputopology.txt topology: Create core_cpus and die_cpus sysfs attributes 2019-05-23 10:08:34 +02:00
crc32.txt
dcdbas.txt
debugging-modules.txt
debugging-via-ohci1394.txt
dell_rbu.txt
digsig.txt
docutils.conf doc-rst: Add missing newline at end of file 2019-06-20 14:16:56 -06:00
dontdiff kbuild: create *.mod with full directory path and remove MODVERDIR 2019-07-18 02:19:31 +09:00
efi-stub.txt efi_stub: update documentation on dtb= parameter 2018-09-09 14:46:44 -06:00
eisa.txt docs: driver-model: convert docs to ReST and rename to *.rst 2019-06-21 15:47:26 +02:00
futex-requeue-pi.txt
gcc-plugins.txt
highuid.txt
hw_random.txt
hwspinlock.txt
index.rst pci-v5.3-changes 2019-07-15 20:44:49 -07:00
intel_txt.txt
io-mapping.txt
io_ordering.txt
iostats.txt block: document iostat changes for disk busy time accounting 2019-06-14 14:46:43 -06:00
irqflags-tracing.txt
isa.txt
isapnp.txt
kernel-per-CPU-kthreads.txt docs: watchdog: convert docs to ReST and rename to *.rst 2019-06-14 14:32:05 -06:00
kobject.txt kref/kobject: Improve documentation 2018-12-06 13:57:03 +01:00
kprobes.txt Merge branch 'parisc-5.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux 2019-05-07 19:34:17 -07:00
kref.txt
ldm.txt
lockup-watchdogs.txt
logo.gif
logo.txt
lsm.txt
lzo.txt lib/lzo: fix bugs for very short or empty input 2019-04-05 16:02:30 -10:00
mailbox.txt
memory-barriers.txt It's been a relatively busy cycle for docs: 2019-07-09 12:34:26 -07:00
men-chameleon-bus.txt
nommu-mmap.txt Documentation: nommu-map: Fix duplicate word typo 2018-06-26 09:01:27 -06:00
ntb.txt docs: ntb.txt: add blank lines to clean up some Sphinx warnings 2019-04-11 12:37:03 -06:00
numastat.txt
packing.txt lib: Add support for generic packing operations 2019-05-03 10:49:17 -04:00
padata.txt
parport-lowlevel.txt
percpu-rw-semaphore.txt
phy.txt
pi-futex.txt
pnp.txt
preempt-locking.txt x86/fpu: Remove fpu__restore() 2019-04-09 19:27:42 +02:00
pwm.txt pwm: Add power management descriptions 2019-06-26 11:39:11 +02:00
rbtree.txt
remoteproc.txt
rfkill.txt rfkill: Fix several typos in documentation 2018-06-15 13:36:08 +02:00
robust-futex-ABI.txt
robust-futexes.txt futex: Update comments and docs about return values of arch futex code 2019-04-26 13:57:55 +01:00
rpmsg.txt
rtc.txt Documentation: rtc: Correct location of rtctest.c 2019-03-25 10:34:55 -06:00
sgi-ioc4.txt
siphash.txt
smsc_ece1099.txt
speculation.txt docs: speculation.txt: mark example blocks as such 2019-04-11 12:37:03 -06:00
static-keys.txt static_keys.txt: Fix trivial spelling mistake 2019-02-06 16:44:16 -07:00
svga.txt
switchtec.txt NTB: switchtec_ntb: Update switchtec documentation with prerequisites for NTB 2018-10-11 11:28:53 -05:00
sync_file.txt
tee.txt Documentation: tee: Grammar s/the its/its/ 2019-06-07 11:23:38 -06:00
this_cpu_ops.txt
unaligned-memory-access.txt docs: unaligned-memory-access.txt: use a lowercase title 2019-04-11 12:37:03 -06:00
vfio-mediated-device.txt vfio/mdev: Check globally for duplicate devices 2018-06-08 10:24:27 -06:00
vfio.txt
video-output.txt docs: video-output.txt: convert it to ReST format 2019-04-11 12:37:03 -06:00
xillybus.txt
xz.txt
zorro.txt