2013-03-19 15:02:24

by Fengguang Wu

[permalink] [raw]
Subject: Re: make[2]: execvp: /bin/bash: Argument list too long

On Tue, Mar 19, 2013 at 09:10:25AM -0400, Konrad Rzeszutek Wilk wrote:
> On Mon, Mar 18, 2013 at 11:50:58PM -0700, Andrew Morton wrote:
> > On Tue, 19 Mar 2013 14:31:40 +0800 kbuild test robot <[email protected]> wrote:
> >
> > > tree: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next master
> > > head: 0e78c0989334e9c1d578ba25621de14e8441d8b4
> > > commit: 7cac5501aa2bd4777906fa0cdccc1b1ce18b3166 staging: zcache: enable zcache to be built/loaded as a module
> > > date: 26 hours ago
> > > config: make ARCH=i386 allmodconfig
> > >
> > > All error/warnings:
> > >
> > > >> make[2]: execvp: /bin/bash: Argument list too long
> > > make[2]: *** [__modpost] Error 127
> > > make[2]: Target `_modpost' not remade because of errors.
> > >
> >
> > Hey, I see that very occasionally, but it goes away all by itself. Are
> > you sure that
> > staging-zcache-enable-ramster-to-be-built-loaded-as-a-module.patch
> > causes it?

Sorry, I confirmed that it's a wrong bisect..

> Is there a way to print out what the argument list is?

Good idea! I managed to catch the error command with

strace -e trace=process -s 4096 -f -o argtoolong make -j1 --debug=j V=1 ARCH=i386 modules

71827 vfork() = 72102
72102 execve("/bin/sh", ["/bin/sh", "-c", "echo ' scripts/mod/modpost -m -a -o /cc/wfg/sound-compiletest/Module.symvers -s'; scripts/
mod/modpost -m -a -o /cc/wfg/sound-compiletest/Module.symvers -s vmlinux arch/x86/crypto/ablk_helper.o arch/x86/crypto/aes-i586.o arch
/x86/crypto/aesni-intel.o arch/x86/crypto/crc32-pclmul.o arch/x86/crypto/crc32c-intel.o arch/x86/crypto/glue_helper.o arch/x86/crypto/salsa
20-i586.o arch/x86/crypto/serpent-sse2-i586.o arch/x86/crypto/twofish-i586.o arch/x86/kernel/apm.o arch/x86/kernel/cpu/mcheck/mce-inject.o
arch/x86/kernel/cpuid.o arch/x86/kernel/microcode.o arch/x86/kernel/msr.o arch/x86/kernel/test_nx.o arch/x86/kvm/kvm-amd.o arch/x86/kvm/kvm-intel.o arch/x86/kvm/kvm.o arch/x86/mm/testmmiotrace.o arch/x86/oprofile/oprofile.o arch/x86/platform/iris/iris.o arch/x86/platform/scx200/scx200.o arch/x86/video/fbdev.o block/cfq-iosched.o block/deadline-iosched.o crypto/af_alg.o crypto/algif_hash.o crypto/algif_skcipher.o crypto/ansi_cprng.o crypto/anubis.o crypto/arc4.o crypto/asymmetric_keys/pefile_key_parser.o crypto/asymmetric_keys/pkcs7_message.o crypto/async_tx/async_memcpy.o crypto/async_tx/async_pq.o crypto/async_tx/async_raid6_recov.o crypto/async_tx/async_tx.o crypto/async_tx/async_xor.o crypto/async_tx/raid6test.o crypto/authenc.o crypto/authencesn.o crypto/blowfish_common.o crypto/blowfish_generic.o crypto/camellia_generic.o crypto/cast5_generic.o crypto/cast6_generic.o crypto/cast_common.o crypto/cbc.o crypto/ccm.o crypto/crc32.o crypto/crc32c.o crypto/cryptd.o crypto/crypto_null.o crypto/crypto_user.o crypto/ctr.o crypto/cts.o crypto/deflate.o crypto/des_generic.o crypto/ecb.o crypto/fcrypt.o crypto/gcm.o crypto/gf128mul.o crypto/ghash-generic.o crypto/khazad.o crypto/lrw.o crypto/lzo.o crypto/md4.o crypto/michael_mic.o crypto/pcbc.o crypto/pcrypt.o crypto/rmd128.o crypto/rmd160.o crypto/rmd256.o crypto/rmd320.o crypto/salsa20_generic.o crypto/seed.o crypto/seqiv.o crypto/serpent_generic.o crypto/sha256_generic.o crypto/sha512_generic.o crypto/tcrypt.o crypto/tea.o crypto/tgr192.o crypto/twofish_common.o crypto/twofish_generic.o crypto/vmac.o crypto/wp512.o crypto/xcbc.o crypto/xor.o crypto/xts.o crypto/zlib.o drivers/acpi/ac.o drivers/acpi/acpi_ipmi.o drivers/acpi/acpi_pad.o drivers/acpi/apei/einj.o drivers/acpi/apei/erst-dbg.o drivers/acpi/battery.o drivers/acpi/button.o drivers/acpi/custom_method.o drivers/acpi/ec_sys.o drivers/acpi/fan.o drivers/acpi/processor.o drivers/acpi/sbs.o drivers/acpi/sbshc.o drivers/acpi/thermal.o drivers/acpi/video.o drivers/ata/acard-ahci.o drivers/ata/ahci.o drivers/ata/ahci_platform.o drivers/ata/ata_generic.o drivers/ata/ata_piix.o drivers/ata/libahci.o drivers/ata/libata.o drivers/ata/pata_acpi.o drivers/ata/pata_ali.o drivers/ata/pata_amd.o drivers/ata/pata_arasan_cf.o drivers/ata/pata_artop.o drivers/ata/pata_atiixp.o drivers/ata/pata_atp867x.o drivers/ata/pata_cmd640.o drivers/ata/pata_cmd64x.o drivers/ata/pata_cs5520.o drivers/ata/pata_cs5530.o drivers/ata/pata_cs5535.o drivers/ata/pata_cs5536.o drivers/ata/pata_cypress.o drivers/ata/pata_efar.o drivers/ata/pata_hpt366.o drivers/ata/pata_hpt37x.o drivers/ata/pata_hpt3x2n.o drivers/ata/pata_hpt3x3.o drivers/ata/pata_isapnp.o drivers/ata/pata_it8213.o drivers/ata/pata_it821x.o drivers/ata/pata_jmicron.o drivers/ata/pata_legacy.o drivers/ata/pata_marvell.o drivers/ata/pata_mpiix.o drivers/ata/pata_netcell.o drivers/ata/pata_ninja32.o drivers/ata/pata_ns87410.o drivers/ata/pata_ns87415.o drivers/ata/pata_oldpiix.o drivers/ata/pata_opti.o drivers/ata/pata_optidma.o drivers/ata/pata_pcmcia.o drivers/ata/pata_pdc2027x.o drivers/ata/pata_pdc202xx_old.o drivers/ata/pata_piccolo.o drivers/ata/pata_platform.o drivers/ata/pata_radisys.o drivers/ata/pata_rdc.o drivers/ata/pata_rz1000.o drivers/ata/pata_sc1200.o drivers/ata/pata_sch.o drivers/ata/pata_serverworks.o drivers/ata/pata_sil680.o drivers/ata/pata_sis.o drivers/ata/pata_sl82c105.o drivers/ata/pata_triflex.o drivers/ata/pata_via.o drivers/ata/pdc_adma.o drivers/ata/sata_highbank.o drivers/ata/sata_inic162x.o drivers/ata/sata_mv.o drivers/ata/sata_nv.o drivers/ata/sata_promise.o "...], [/* 119 vars */] <unfinished ...>
71827 wait4(-1, <unfinished ...>
72102 <... execve resumed> ) = -1 E2BIG (Argument list too long)
72102 exit_group(127) = ?
71827 <... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 127}], 0, NULL) = 72102
71827 --- SIGCHLD (Child exited) @ 0 (0) ---

Thanks,
Fengguang


2013-03-19 15:20:32

by Fengguang Wu

[permalink] [raw]
Subject: Re: make[2]: execvp: /bin/bash: Argument list too long

> > Is there a way to print out what the argument list is?
>
> Good idea! I managed to catch the error command with
>
> strace -e trace=process -s 4096 -f -o argtoolong make -j1 --debug=j V=1 ARCH=i386 modules

And the output of

strace -e trace=process -s 40960 -f -o argtoolong make -j1 ARCH=i386 modules

59935 arch_prctl(ARCH_SET_FS, 0x2ad37d82ae80) = 0
59884 wait4(-1, <unfinished ...>
59935 exit_group(0) = ?
59884 <... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 59935
59884 --- SIGCHLD (Child exited) @ 0 (0) ---
59884 vfork() = 60437
59884 wait4(-1, <unfinished ...>
60437 execve("/bin/sh", ["/bin/sh", "-c", "echo ' MODPOST 4275 modules'; scripts/mod/modpost -m -a -o /cc/wfg/sound-compiletest/Module.symvers -s vmlinux arch/x86/crypto/ablk_helper.o arch/x86/crypto/aes-i586.o arch/x86/crypto/aesni-intel.o arch/x86/crypto/crc32-pclmul.o arch/x86/crypto/crc32c-intel.o arch/x86/crypto/glue_helper.o arch/x86/crypto/salsa20-i586.o arch/x86/crypto/serpent-sse2-i586.o arch/x86/crypto/twofish-i586.o arch/x86/kernel/apm.o arch/x86/kernel/cpu/mcheck/mce-inject.o arch/x86/kernel/cpuid.o arch/x86/kernel/microcode.o arch/x86/kernel/msr.o arch/x86/kernel/test_nx.o arch/x86/kvm/kvm-amd.o arch/x86/kvm/kvm-intel.o arch/x86/kvm/kvm.o arch/x86/mm/testmmiotrace.o arch/x86/oprofile/oprofile.o arch/x86/platform/iris/iris.o arch/x86/platform/scx200/scx200.o arch/x86/video/fbdev.o block/cfq-iosched.o block/deadline-iosched.o crypto/af_alg.o crypto/algif_hash.o crypto/algif_skcipher.o crypto/ansi_cprng.o crypto/anubis.o crypto/arc4.o crypto/asymmetric_keys/pefile_key_parser.o crypto/asymmetric_keys/pkcs7_message.o crypto/async_tx/async_memcpy.o crypto/async_tx/async_pq.o crypto/async_tx/async_raid6_recov.o crypto/async_tx/async_tx.o crypto/async_tx/async_xor.o crypto/async_tx/raid6test.o crypto/authenc.o crypto/authencesn.o crypto/blowfish_common.o crypto/blowfish_generic.o crypto/camellia_generic.o crypto/cast5_generic.o crypto/cast6_generic.o crypto/cast_common.o crypto/cbc.o crypto/ccm.o crypto/crc32.o crypto/crc32c.o crypto/cryptd.o crypto/crypto_null.o crypto/crypto_user.o crypto/ctr.o crypto/cts.o crypto/deflate.o crypto/des_generic.o crypto/ecb.o crypto/fcrypt.o crypto/gcm.o crypto/gf128mul.o crypto/ghash-generic.o crypto/khazad.o crypto/lrw.o crypto/lzo.o crypto/md4.o crypto/michael_mic.o crypto/pcbc.o crypto/pcrypt.o crypto/rmd128.o crypto/rmd160.o crypto/rmd256.o crypto/rmd320.o crypto/salsa20_generic.o crypto/seed.o crypto/seqiv.o crypto/serpent_generic.o crypto/sha256_generic.o crypto/sha512_generic.o crypto/tcrypt.o crypto/tea.o crypto/tgr192.o crypto/twofish_common.o crypto/twofish_generic.o crypto/vmac.o crypto/wp512.o crypto/xcbc.o crypto/xor.o crypto/xts.o crypto/zlib.o drivers/acpi/ac.o drivers/acpi/acpi_ipmi.o drivers/acpi/acpi_pad.o drivers/acpi/apei/einj.o drivers/acpi/apei/erst-dbg.o drivers/acpi/battery.o drivers/acpi/button.o drivers/acpi/custom_method.o drivers/acpi/ec_sys.o drivers/acpi/fan.o drivers/acpi/processor.o drivers/acpi/sbs.o drivers/acpi/sbshc.o drivers/acpi/thermal.o drivers/acpi/video.o drivers/ata/acard-ahci.o drivers/ata/ahci.o drivers/ata/ahci_platform.o drivers/ata/ata_generic.o drivers/ata/ata_piix.o drivers/ata/libahci.o drivers/ata/libata.o drivers/ata/pata_acpi.o drivers/ata/pata_ali.o drivers/ata/pata_amd.o drivers/ata/pata_arasan_cf.o drivers/ata/pata_artop.o drivers/ata/pata_atiixp.o drivers/ata/pata_atp867x.o drivers/ata/pata_cmd640.o drivers/ata/pata_cmd64x.o drivers/ata/pata_cs5520.o drivers/ata/pata_cs5530.o drivers/ata/pata_cs5535.o drivers/ata/pata_cs5536.o drivers/ata/pata_cypress.o drivers/ata/pata_efar.o drivers/ata/pata_hpt366.o drivers/ata/pata_hpt37x.o drivers/ata/pata_hpt3x2n.o drivers/ata/pata_hpt3x3.o drivers/ata/pata_isapnp.o drivers/ata/pata_it8213.o drivers/ata/pata_it821x.o drivers/ata/pata_jmicron.o drivers/ata/pata_legacy.o drivers/ata/pata_marvell.o drivers/ata/pata_mpiix.o drivers/ata/pata_netcell.o drivers/ata/pata_ninja32.o drivers/ata/pata_ns87410.o drivers/ata/pata_ns87415.o drivers/ata/pata_oldpiix.o drivers/ata/pata_opti.o drivers/ata/pata_optidma.o drivers/ata/pata_pcmcia.o drivers/ata/pata_pdc2027x.o drivers/ata/pata_pdc202xx_old.o drivers/ata/pata_piccolo.o drivers/ata/pata_platform.o drivers/ata/pata_radisys.o drivers/ata/pata_rdc.o drivers/ata/pata_rz1000.o drivers/ata/pata_sc1200.o drivers/ata/pata_sch.o drivers/ata/pata_serverworks.o drivers/ata/pata_sil680.o drivers/ata/pata_sis.o drivers/ata/pata_sl82c105.o drivers/ata/pata_triflex.o drivers/ata/pata_via.o drivers/ata/pdc_adma.o drivers/ata/sata_highbank.o drivers/ata/sata_inic162x.o drivers/ata/sata_mv.o drivers/ata/sata_nv.o drivers/ata/sata_promise.o drivers/ata/sata_qstor.o drivers/ata/sata_sil.o drivers/ata/sata_sil24.o drivers/ata/sata_sis.o drivers/ata/sata_svw.o drivers/ata/sata_sx4.o drivers/ata/sata_uli.o drivers/ata/sata_via.o drivers/ata/sata_vsc.o drivers/atm/adummy.o drivers/atm/ambassador.o drivers/atm/atmtcp.o drivers/atm/eni.o drivers/atm/firestream.o drivers/atm/fore_200e.o drivers/atm/he.o drivers/atm/horizon.o drivers/atm/idt77105.o drivers/atm/idt77252.o drivers/atm/iphase.o drivers/atm/lanai.o drivers/atm/nicstar.o drivers/atm/solos-pci.o drivers/atm/suni.o drivers/atm/uPD98402.o drivers/atm/zatm.o drivers/auxdisplay/cfag12864b.o drivers/auxdisplay/cfag12864bfb.o drivers/auxdisplay/ks0108.o drivers/base/firmware_class.o drivers/bcma/bcma.o drivers/block/DAC960.o drivers/block/aoe/aoe.o drivers/block/brd.o drivers/block/cciss.o drivers/block/cpqarray.o drivers/block/cryptoloop.o drivers/block/drbd/drbd.o drivers/block/floppy.o drivers/block/loop.o drivers/block/mtip32xx/mtip32xx.o drivers/block/nbd.o drivers/block/nvme.o drivers/block/osdblk.o drivers/block/paride/aten.o drivers/block/paride/bpck.o drivers/block/paride/bpck6.o drivers/block/paride/comm.o drivers/block/paride/dstr.o drivers/block/paride/epat.o drivers/block/paride/epia.o drivers/block/paride/fit2.o drivers/block/paride/fit3.o drivers/block/paride/friq.o drivers/block/paride/frpw.o drivers/block/paride/kbic.o drivers/block/paride/ktti.o drivers/block/paride/on20.o drivers/block/paride/on26.o drivers/block/paride/paride.o drivers/block/paride/pcd.o drivers/block/paride/pd.o drivers/block/paride/pf.o drivers/block/paride/pg.o drivers/block/paride/pt.o drivers/block/pktcdvd.o drivers/block/rbd.o drivers/block/rsxx/rsxx.o drivers/block/sx8.o drivers/block/umem.o drivers/block/virtio_blk.o drivers/bluetooth/ath3k.o drivers/bluetooth/bcm203x.o drivers/bluetooth/bfusb.o drivers/bluetooth/bluecard_cs.o drivers/bluetooth/bpa10x.o drivers/bluetooth/bt3c_cs.o drivers/bluetooth/btmrvl.o drivers/bluetooth/btmrvl_sdio.o drivers/bluetooth/btsdio.o drivers/bluetooth/btuart_cs.o drivers/bluetooth/btusb.o drivers/bluetooth/btwilink.o drivers/bluetooth/dtl1_cs.o drivers/bluetooth/hci_uart.o drivers/bluetooth/hci_vhci.o drivers/cdrom/cdrom.o drivers/char/agp/agpgart.o drivers/char/agp/ali-agp.o drivers/char/agp/amd-k7-agp.o drivers/char/agp/amd64-agp.o drivers/char/agp/ati-agp.o drivers/char/agp/efficeon-agp.o drivers/char/agp/intel-agp.o drivers/char/agp/intel-gtt.o drivers/char/agp/nvidia-agp.o drivers/char/agp/sis-agp.o drivers/char/agp/sworks-agp.o drivers/char/agp/via-agp.o drivers/char/applicom.o drivers/char/dtlk.o drivers/char/hangcheck-timer.o drivers/char/hw_random/amd-rng.o drivers/char/hw_random/atmel-rng.o drivers/char/hw_random/exynos-rng.o drivers/char/hw_random/geode-rng.o drivers/char/hw_random/intel-rng.o drivers/char/hw_random/rng-core.o drivers/char/hw_random/timeriomem-rng.o drivers/char/hw_random/tpm-rng.o drivers/char/hw_random/via-rng.o drivers/char/hw_random/virtio-rng.o drivers/char/i8k.o drivers/char/ipmi/ipmi_devintf.o drivers/char/ipmi/ipmi_msghandler.o drivers/char/ipmi/ipmi_poweroff.o drivers/char/ipmi/ipmi_si.o drivers/char/ipmi/ipmi_watchdog.o drivers/char/lp.o drivers/char/mwave/mwave.o drivers/char/nsc_gpio.o drivers/char/nvram.o drivers/char/pc8736x_gpio.o drivers/char/pcmcia/cm4000_cs.o drivers/char/pcmcia/cm4040_cs.o drivers/char/pcmcia/synclink_cs.o drivers/char/ppdev.o drivers/char/raw.o drivers/char/scx200_gpio.o drivers/char/sonypi.o drivers/char/tlclk.o drivers/char/toshiba.o drivers/char/tpm/tpm_atmel.o drivers/char/tpm/tpm_i2c_infineon.o drivers/char/tpm/tpm_i2c_stm_st33.o drivers/char/tpm/tpm_infineon.o drivers/char/tpm/tpm_nsc.o drivers/clk/clk-max77686.o drivers/clk/clk-twl6040.o drivers/clk/clk-wm831x.o drivers/clocksource/cs5535-clockevt.o drivers/clocksource/scx200_hrt.o drivers/connector/cn.o drivers/cpufreq/acpi-cpufreq.o drivers/cpufreq/cpufreq-nforce2.o drivers/cpufreq/cpufreq_conservative.o drivers/cpufreq/cpufreq_ondemand.o drivers/cpufreq/cpufreq_powersave.o drivers/cpufreq/cpufreq_stats.o drivers/cpufreq/cpufreq_userspace.o drivers/cpufreq/e_powersaver.o drivers/cpufreq/freq_table.o drivers/cpufreq/gx-suspmod.o drivers/cpufreq/longhaul.o drivers/cpufreq/longrun.o drivers/cpufreq/mperf.o drivers/cpufreq/p4-clockmod.o drivers/cpufreq/pcc-cpufreq.o drivers/cpufreq/powernow-k6.o drivers/cpufreq/powernow-k7.o drivers/cpufreq/powernow-k8.o drivers/cpufreq/speedstep-centrino.o drivers/cpufreq/speedstep-ich.o drivers/cpufreq/speedstep-lib.o drivers/cpufreq/speedstep-smi.o drivers/crypto/geode-aes.o drivers/crypto/padlock-aes.o drivers/crypto/padlock-sha.o drivers/dca/dca.o drivers/devfreq/governor_performance.o drivers/devfreq/governor_powersave.o drivers/devfreq/governor_simpleondemand.o drivers/devfreq/governor_userspace.o drivers/dma/dmatest.o drivers/dma/dw_dmac.o drivers/dma/intel_mid_dma.o drivers/dma/ioat/ioatdma.o drivers/dma/pch_dma.o drivers/dma/timb_dma.o drivers/edac/amd76x_edac.o drivers/edac/e752x_edac.o drivers/edac/e7xxx_edac.o drivers/edac/edac_core.o drivers/edac/edac_mce_amd.o drivers/edac/i3000_edac.o drivers/edac/i3200_edac.o drivers/edac/i5000_edac.o drivers/edac/i5100_edac.o drivers/edac/i5400_edac.o drivers/edac/i7300_edac.o drivers/edac/i7core_edac.o drivers/edac/i82860_edac.o drivers/edac/i82875p_edac.o drivers/edac/i82975x_edac.o drivers/edac/mce_amd_inj.o drivers/edac/r82600_edac.o drivers/edac/x38_edac.o drivers/extcon/extcon-adc-jack.o drivers/extcon/extcon-arizona.o drivers/extcon/extcon-gpio.o drivers/extcon/extcon-max77693.o drivers/extcon/extcon-max8997.o drivers/firewire/firewire-core.o drivers/firewire/firewire-net.o drivers/firewire/firewire-ohci.o drivers/firewire/firewire-sbp2.o drivers/firewire/nosy.o drivers/firmware/dcdbas.o drivers/firmware/dell_rbu.o drivers/firmware/dmi-sysfs.o drivers/firmware/edd.o drivers/firmware/efivars.o drivers/firmware/google/gsmi.o drivers/firmware/google/memconsole.o drivers/firmware/iscsi_ibft.o drivers/gpio/gpio-74x164.o drivers/gpio/gpio-adp5520.o drivers/gpio/gpio-adp5588.o drivers/gpio/gpio-amd8111.o drivers/gpio/gpio-arizona.o drivers/gpio/gpio-cs5535.o drivers/gpio/gpio-da9052.o drivers/gpio/gpio-da9055.o drivers/gpio/gpio-generic.o drivers/gpio/gpio-ich.o drivers/gpio/gpio-it8761e.o drivers/gpio/gpio-janz-ttl.o drivers/gpio/gpio-max7300.o drivers/gpio/gpio-max7301.o drivers/gpio/gpio-max730x.o drivers/gpio/gpio-max732x.o drivers/gpio/gpio-mc33880.o drivers/gpio/gpio-mcp23s08.o drivers/gpio/gpio-ml-ioh.o drivers/gpio/gpio-pca953x.o drivers/gpio/gpio-pcf857x.o drivers/gpio/gpio-pch.o drivers/gpio/gpio-rdc321x.o drivers/gpio/gpio-sch.o drivers/gpio/gpio-tps65912.o drivers/gpio/gpio-ts5500.o drivers/gpio/gpio-twl4030.o drivers/gpio/gpio-twl6040.o drivers/gpio/gpio-viperboard.o drivers/gpio/gpio-vx855.o drivers/gpio/gpio-wm831x.o drivers/gpio/gpio-wm8350.o drivers/gpio/gpio-wm8994.o drivers/gpu/drm/ast/ast.o drivers/gpu/drm/cirrus/cirrus.o drivers/gpu/drm/drm.o drivers/gpu/drm/drm_kms_helper.o drivers/gpu/drm/drm_usb.o drivers/gpu/drm/gma500/gma500_gfx.o drivers/gpu/drm/i2c/ch7006.o drivers/gpu/drm/i2c/sil164.o drivers/gpu/drm/i2c/tda998x.o drivers/gpu/drm/i810/i810.o drivers/gpu/drm/i915/i915.o drivers/gpu/drm/mga/mga.o drivers/gpu/drm/mgag200/mgag200.o drivers/gpu/drm/nouveau/nouveau.o drivers/gpu/drm/r128/r128.o drivers/gpu/drm/radeon/radeon.o drivers/gpu/drm/savage/savage.o drivers/gpu/drm/sis/sis.o drivers/gpu/drm/tdfx/tdfx.o drivers/gpu/drm/ttm/ttm.o drivers/gpu/drm/udl/udl.o drivers/gpu/drm/via/via.o drivers/gpu/drm/vmwgfx/vmwgfx.o drivers/hid/hid-a4tech.o drivers/hid/hid-apple.o drivers/hid/hid-aureal.o drivers/hid/hid-axff.o drivers/hid/hid-belkin.o drivers/hid/hid-cherry.o drivers/hid/hid-chicony.o drivers/hid/hid-cypress.o drivers/hid/hid-dr.o drivers/hid/hid-elecom.o drivers/hid/hid-emsff.o drivers/hid/hid-ezkey.o drivers/hid/hid-gaff.o drivers/hid/hid-generic.o drivers/hid/hid-gyration.o drivers/hid/hid-holtek-kbd.o drivers/hid/hid-holtekff.o drivers/hid/hid-hyperv.o drivers/hid/hid-icade.o drivers/hid/hid-kensington.o drivers/hid/hid-keytouch.o drivers/hid/hid-kye.o drivers/hid/hid-lcpower.o drivers/hid/hid-lenovo-tpkbd.o drivers/hid/hid-logitech-dj.o drivers/hid/hid-logitech.o drivers/hid/hid-magicmouse.o drivers/hid/hid-microsoft.o drivers/hid/hid-monterey.o drivers/hid/hid-multitouch.o drivers/hid/hid-ntrig.o drivers/hid/hid-ortek.o drivers/hid/hid-petalynx.o drivers/hid/hid-picolcd.o drivers/hid/hid-pl.o drivers/hid/hid-primax.o drivers/hid/hid-prodikeys.o drivers/hid/hid-ps3remote.o drivers/hid/hid-roccat-arvo.o drivers/hid/hid-roccat-common.o drivers/hid/hid-roccat-isku.o drivers/hid/hid-roccat-kone.o drivers/hid/hid-roccat-koneplus.o drivers/hid/hid-roccat-konepure.o drivers/hid/hid-roccat-kovaplus.o drivers/hid/hid-roccat-lua.o drivers/hid/hid-roccat-pyra.o drivers/hid/hid-roccat-savu.o drivers/hid/hid-roccat.o drivers/hid/hid-saitek.o drivers/hid/hid-samsung.o drivers/hid/hid-sensor-hub.o drivers/hid/hid-sjoy.o drivers/hid/hid-sony.o drivers/hid/hid-speedlink.o drivers/hid/hid-steelseries.o drivers/hid/hid-sunplus.o drivers/hid/hid-thingm.o drivers/hid/hid-tivo.o drivers/hid/hid-tmff.o drivers/hid/hid-topseed.o drivers/hid/hid-twinhan.o drivers/hid/hid-uclogic.o drivers/hid/hid-wacom.o drivers/hid/hid-waltop.o drivers/hid/hid-wiimote.o drivers/hid/hid-zpff.o drivers/hid/hid-zydacron.o drivers/hid/hid.o drivers/hid/i2c-hid/i2c-hid.o drivers/hid/uhid.o drivers/hid/usbhid/usbhid.o drivers/hid/usbhid/usbkbd.o drivers/hid/usbhid/usbmouse.o drivers/hsi/clients/hsi_char.o drivers/hsi/hsi.o drivers/hv/hv_balloon.o drivers/hv/hv_utils.o drivers/hv/hv_vmbus.o drivers/hwmon/abituguru.o drivers/hwmon/abituguru3.o drivers/hwmon/acpi_power_meter.o drivers/hwmon/ad7314.o drivers/hwmon/ad7414.o drivers/hwmon/ad7418.o drivers/hwmon/adcxx.o drivers/hwmon/adm1021.o drivers/hwmon/adm1025.o drivers/hwmon/adm1026.o drivers/hwmon/adm1029.o drivers/hwmon/adm1031.o drivers/hwmon/adm9240.o drivers/hwmon/ads1015.o drivers/hwmon/ads7828.o drivers/hwmon/ads7871.o drivers/hwmon/adt7310.o drivers/hwmon/adt7411.o drivers/hwmon/adt7462.o drivers/hwmon/adt7470.o drivers/hwmon/adt7475.o drivers/hwmon/adt7x10.o drivers/hwmon/amc6821.o drivers/hwmon/applesmc.o drivers/hwmon/asb100.o drivers/hwmon/asc7621.o drivers/hwmon/asus_atk0110.o drivers/hwmon/atxp1.o drivers/hwmon/coretemp.o drivers/hwmon/da9052-hwmon.o drivers/hwmon/da9055-hwmon.o drivers/hwmon/dme1737.o drivers/hwmon/ds1621.o drivers/hwmon/ds620.o drivers/hwmon/emc1403.o drivers/hwmon/emc2103.o drivers/hwmon/emc6w201.o drivers/hwmon/f71805f.o drivers/hwmon/f71882fg.o drivers/hwmon/f75375s.o drivers/hwmon/fam15h_power.o drivers/hwmon/fschmd.o drivers/hwmon/g760a.o drivers/hwmon/gl518sm.o drivers/hwmon/gl520sm.o drivers/hwmon/gpio-fan.o drivers/hwmon/hih6130.o drivers/hwmon/hwmon-vid.o drivers/hwmon/hwmon.o drivers/hwmon/i5k_amb.o drivers/hwmon/ibmaem.o drivers/hwmon/ibmpex.o drivers/hwmon/ina209.o drivers/hwmon/ina2xx.o drivers/hwmon/it87.o drivers/hwmon/jc42.o drivers/hwmon/k10temp.o drivers/hwmon/k8temp.o drivers/hwmon/lineage-pem.o drivers/hwmon/lm63.o drivers/hwmon/lm70.o drivers/hwmon/lm73.o drivers/hwmon/lm75.o drivers/hwmon/lm77.o drivers/hwmon/lm78.o drivers/hwmon/lm80.o drivers/hwmon/lm83.o drivers/hwmon/lm85.o drivers/hwmon/lm87.o drivers/hwmon/lm90.o drivers/hwmon/lm92.o drivers/hwmon/lm93.o drivers/hwmon/lm95241.o drivers/hwmon/lm95245.o drivers/hwmon/ltc4151.o drivers/hwmon/ltc4215.o drivers/hwmon/ltc4245.o drivers/hwmon/ltc4261.o drivers/hwmon/max1111.o drivers/hwmon/max16065.o drivers/hwmon/max1619.o drivers/hwmon/max1668.o drivers/hwmon/max197.o drivers/hwmon/max6639.o drivers/hwmon/max6642.o drivers/hwmon/max6650.o drivers/hwmon/max6697.o drivers/hwmon/mc13783-adc.o drivers/hwmon/mcp3021.o drivers/hwmon/ntc_thermistor.o drivers/hwmon/pc87360.o drivers/hwmon/pc87427.o drivers/hwmon/pcf8591.o drivers/hwmon/pmbus/adm1275.o drivers/hwmon/pmbus/lm25066.o drivers/hwmon/pmbus/ltc2978.o drivers/hwmon/pmbus/max16064.o drivers/hwmon/pmbus/max34440.o drivers/hwmon/pmbus/max8688.o drivers/hwmon/pmbus/pmbus.o drivers/hwmon/pmbus/pmbus_core.o drivers/hwmon/pmbus/ucd9000.o drivers/hwmon/pmbus/ucd9200.o drivers/hwmon/pmbus/zl6100.o drivers/hwmon/sch5627.o drivers/hwmon/sch5636.o drivers/hwmon/sch56xx-common.o drivers/hwmon/sht15.o drivers/hwmon/sht21.o drivers/hwmon/sis5595.o drivers/hwmon/smm665.o drivers/hwmon/smsc47b397.o drivers/hwmon/smsc47m1.o drivers/hwmon/smsc47m192.o drivers/hwmon/thmc50.o drivers/hwmon/tmp102.o drivers/hwmon/tmp401.o drivers/hwmon/tmp421.o drivers/hwmon/twl4030-madc-hwmon.o drivers/hwmon/via-cputemp.o drivers/hwmon/via686a.o drivers/hwmon/vt1211.o drivers/hwmon/vt8231.o drivers/hwmon/w83627ehf.o drivers/hwmon/w83627hf.o drivers/hwmon/w83781d.o drivers/hwmon/w83791d.o drivers/hwmon/w83792d.o drivers/hwmon/w83793.o drivers/hwmon/w83795.o drivers/hwmon/w83l785ts.o drivers/hwmon/w83l786ng.o drivers/hwmon/wm831x-hwmon.o drivers/hwmon/wm8350-hwmon.o drivers/i2c/algos/i2c-algo-bit.o drivers/i2c/algos/i2c-algo-pca.o drivers/i2c/busses/i2c-ali1535.o drivers/i2c/busses/i2c-ali1563.o drivers/i2c/busses/i2c-ali15x3.o drivers/i2c/busses/i2c-amd756-s4882.o drivers/i2c/busses/i2c-amd756.o drivers/i2c/busses/i2c-amd8111.o drivers/i2c/busses/i2c-cbus-gpio.o drivers/i2c/busses/i2c-designware-core.o drivers/i2c/busses/i2c-designware-pci.o drivers/i2c/busses/i2c-designware-platform.o drivers/i2c/busses/i2c-diolan-u2c.o drivers/i2c/busses/i2c-eg20t.o drivers/i2c/busses/i2c-gpio.o drivers/i2c/busses/i2c-i801.o drivers/i2c/busses/i2c-intel-mid.o drivers/i2c/busses/i2c-isch.o drivers/i2c/busses/i2c-ismt.o drivers/i2c/busses/i2c-nforce2-s4985.o drivers/i2c/busses/i2c-nforce2.o drivers/i2c/busses/i2c-ocores.o drivers/i2c/busses/i2c-parport-light.o drivers/i2c/busses/i2c-parport.o drivers/i2c/busses/i2c-pca-isa.o drivers/i2c/busses/i2c-pca-platform.o drivers/i2c/busses/i2c-piix4.o drivers/i2c/busses/i2c-scmi.o drivers/i2c/busses/i2c-simtec.o drivers/i2c/busses/i2c-sis5595.o drivers/i2c/busses/i2c-sis630.o drivers/i2c/busses/i2c-sis96x.o drivers/i2c/busses/i2c-taos-evm.o drivers/i2c/busses/i2c-tiny-usb.o drivers/i2c/busses/i2c-via.o drivers/i2c/busses/i2c-viapro.o drivers/i2c/busses/i2c-viperboard.o drivers/i2c/busses/i2c-xiic.o drivers/i2c/busses/scx200_acb.o drivers/i2c/busses/scx200_i2c.o drivers/i2c/i2c-dev.o drivers/i2c/i2c-mux.o drivers/i2c/i2c-smbus.o drivers/i2c/i2c-stub.o drivers/i2c/muxes/i2c-mux-gpio.o drivers/i2c/muxes/i2c-mux-pca9541.o drivers/i2c/muxes/i2c-mux-pca954x.o drivers/ide/aec62xx.o drivers/ide/ali14xx.o drivers/ide/alim15x3.o drivers/ide/amd74xx.o drivers/ide/atiixp.o drivers/ide/cmd640.o drivers/ide/cmd64x.o drivers/ide/cs5520.o drivers/ide/cs5530.o drivers/ide/cs5535.o drivers/ide/cs5536.o drivers/ide/delkin_cb.o drivers/ide/dtc2278.o drivers/ide/hpt366.o drivers/ide/ht6560b.o drivers/ide/ide-4drives.o drivers/ide/ide-cd_mod.o drivers/ide/ide-core.o drivers/ide/ide-cs.o drivers/ide/ide-gd_mod.o drivers/ide/ide-generic.o drivers/ide/ide-pci-generic.o drivers/ide/ide-pnp.o drivers/ide/ide-tape.o drivers/ide/ide_platform.o drivers/ide/it8172.o drivers/ide/it8213.o drivers/ide/it821x.o drivers/ide/jmicron.o drivers/ide/ns87415.o drivers/ide/opti621.o drivers/ide/pdc202xx_new.o drivers/ide/pdc202xx_old.o drivers/ide/piix.o drivers/ide/qd65xx.o drivers/ide/rz1000.o drivers/ide/sc1200.o drivers/ide/serverworks.o drivers/ide/siimage.o drivers/ide/sis5513.o drivers/ide/slc90e66.o drivers/ide/tc86c001.o drivers/ide/triflex.o drivers/ide/trm290.o drivers/ide/umc8672.o drivers/ide/via82cxxx.o drivers/iio/accel/hid-sensor-accel-3d.o drivers/iio/accel/kxsd9.o drivers/iio/accel/st_accel.o drivers/iio/accel/st_accel_i2c.o drivers/iio/accel/st_accel_spi.o drivers/iio/adc/ad7266.o drivers/iio/adc/ad7298.o drivers/iio/adc/ad7476.o drivers/iio/adc/ad7791.o drivers/iio/adc/ad7793.o drivers/iio/adc/ad7887.o drivers/iio/adc/ad_sigma_delta.o drivers/iio/adc/max1363.o drivers/iio/adc/ti-adc081c.o drivers/iio/adc/ti_am335x_adc.o drivers/iio/adc/viperboard_adc.o drivers/iio/amplifiers/ad8366.o drivers/iio/common/hid-sensors/hid-sensor-iio-common.o drivers/iio/common/hid-sensors/hid-sensor-trigger.o drivers/iio/common/st_sensors/st_sensors.o drivers/iio/common/st_sensors/st_sensors_i2c.o drivers/iio/common/st_sensors/st_sensors_spi.o drivers/iio/dac/ad5064.o drivers/iio/dac/ad5360.o drivers/iio/dac/ad5380.o drivers/iio/dac/ad5421.o drivers/iio/dac/ad5446.o drivers/iio/dac/ad5449.o drivers/iio/dac/ad5504.o drivers/iio/dac/ad5624r_spi.o drivers/iio/dac/ad5686.o drivers/iio/dac/ad5755.o drivers/iio/dac/ad5764.o drivers/iio/dac/ad5791.o drivers/iio/dac/max517.o drivers/iio/dac/mcp4725.o drivers/iio/frequency/ad9523.o drivers/iio/frequency/adf4350.o drivers/iio/gyro/adis16080.o drivers/iio/gyro/adis16136.o drivers/iio/gyro/adxrs450.o drivers/iio/gyro/hid-sensor-gyro-3d.o drivers/iio/gyro/itg3200.o drivers/iio/gyro/st_gyro.o drivers/iio/gyro/st_gyro_i2c.o drivers/iio/gyro/st_gyro_spi.o drivers/iio/imu/adis16400.o drivers/iio/imu/adis16480.o drivers/iio/imu/adis_lib.o drivers/iio/imu/inv_mpu6050/inv-mpu6050.o drivers/iio/industrialio-triggered-buffer.o drivers/iio/industrialio.o drivers/iio/kfifo_buf.o drivers/iio/light/adjd_s311.o drivers/iio/light/hid-sensor-als.o drivers/iio/light/lm3533-als.o drivers/iio/light/tsl2563.o drivers/iio/light/vcnl4000.o drivers/iio/magnetometer/hid-sensor-magn-3d.o drivers/iio/magnetometer/st_magn.o drivers/iio/magnetometer/st_magn_i2c.o drivers/iio/magnetometer/st_magn_spi.o drivers/infiniband/core/ib_addr.o drivers/infiniband/core/ib_cm.o drivers/infiniband/core/ib_core.o drivers/infiniband/core/ib_mad.o drivers/infiniband/core/ib_sa.o drivers/infiniband/core/ib_ucm.o drivers/infiniband/core/ib_umad.o drivers/infiniband/core/ib_uverbs.o drivers/infiniband/core/iw_cm.o drivers/infiniband/core/rdma_cm.o drivers/infiniband/core/rdma_ucm.o drivers/infiniband/hw/amso1100/iw_c2.o drivers/infiniband/hw/cxgb3/iw_cxgb3.o drivers/infiniband/hw/cxgb4/iw_cxgb4.o drivers/infiniband/hw/mlx4/mlx4_ib.o drivers/infiniband/hw/mthca/ib_mthca.o drivers/infiniband/hw/nes/iw_nes.o drivers/infiniband/hw/ocrdma/ocrdma.o drivers/infiniband/ulp/ipoib/ib_ipoib.o drivers/infiniband/ulp/iser/ib_iser.o drivers/infiniband/ulp/srp/ib_srp.o drivers/infiniband/ulp/srpt/ib_srpt.o drivers/input/evbug.o drivers/input/evdev.o drivers/input/ff-memless.o drivers/input/gameport/emu10k1-gp.o drivers/input/gameport/fm801-gp.o drivers/input/gameport/gameport.o drivers/input/gameport/lightning.o drivers/input/gameport/ns558.o drivers/input/input-polldev.o drivers/input/joydev.o drivers/input/joystick/a3d.o drivers/input/joystick/adi.o drivers/input/joystick/analog.o drivers/input/joystick/as5011.o drivers/input/joystick/cobra.o drivers/input/joystick/db9.o drivers/input/joystick/gamecon.o drivers/input/joystick/gf2k.o drivers/input/joystick/grip.o drivers/input/joystick/grip_mp.o drivers/input/joystick/guillemot.o drivers/input/joystick/iforce/iforce.o drivers/input/joystick/interact.o drivers/input/joystick/joydump.o drivers/input/joystick/magellan.o drivers/input/joystick/sidewinder.o drivers/input/joystick/spaceball.o drivers/input/joystick/spaceorb.o drivers/input/joystick/stinger.o drivers/input/joystick/tmdc.o drivers/input/joystick/turbografx.o drivers/input/joystick/twidjoy.o drivers/input/joystick/walkera0701.o drivers/input/joystick/warrior.o drivers/input/joystick/xpad.o drivers/input/joystick/zhenhua.o drivers/input/keyboard/adp5520-keys.o drivers/input/keyboard/adp5588-keys.o drivers/input/keyboard/adp5589-keys.o drivers/input/keyboard/atkbd.o drivers/input/keyboard/goldfish_events.o drivers/input/keyboard/gpio_keys.o drivers/input/keyboard/gpio_keys_polled.o drivers/input/keyboard/lkkbd.o drivers/input/keyboard/lm8323.o drivers/input/keyboard/lm8333.o drivers/input/keyboard/matrix_keypad.o drivers/input/keyboard/max7359_keypad.o drivers/input/keyboard/mcs_touchkey.o drivers/input/keyboard/mpr121_touchkey.o drivers/input/keyboard/newtonkbd.o drivers/input/keyboard/opencores-kbd.o drivers/input/keyboard/qt1070.o drivers/input/keyboard/qt2160.o drivers/input/keyboard/samsung-keypad.o drivers/input/keyboard/stmpe-keypad.o drivers/input/keyboard/stowaway.o drivers/input/keyboard/sunkbd.o drivers/input/keyboard/tc3589x-keypad.o drivers/input/keyboard/tca6416-keypad.o drivers/input/keyboard/tca8418_keypad.o drivers/input/keyboard/twl4030_keypad.o drivers/input/keyboard/xtkbd.o drivers/input/matrix-keymap.o drivers/input/misc/88pm80x_onkey.o drivers/input/misc/88pm860x_onkey.o drivers/input/misc/ad714x-i2c.o drivers/input/misc/ad714x-spi.o drivers/input/misc/ad714x.o drivers/input/misc/adxl34x-i2c.o drivers/input/misc/adxl34x-spi.o drivers/input/misc/adxl34x.o drivers/input/misc/apanel.o drivers/input/misc/arizona-haptics.o drivers/input/misc/ati_remote2.o drivers/input/misc/atlas_btns.o drivers/input/misc/bma150.o drivers/input/misc/cm109.o drivers/input/misc/cma3000_d0x.o drivers/input/misc/cma3000_d0x_i2c.o drivers/input/misc/da9052_onkey.o drivers/input/misc/da9055_onkey.o drivers/input/misc/gp2ap002a00f.o drivers/input/misc/gpio_tilt_polled.o drivers/input/misc/ims-pcu.o drivers/input/misc/keyspan_remote.o drivers/input/misc/kxtj9.o drivers/input/misc/max8925_onkey.o drivers/input/misc/mc13783-pwrbutton.o drivers/input/misc/mma8450.o drivers/input/misc/mpu3050.o drivers/input/misc/pcap_keys.o drivers/input/misc/pcf50633-input.o drivers/input/misc/pcf8574_keypad.o drivers/input/misc/pcspkr.o drivers/input/misc/powermate.o drivers/input/misc/pwm-beeper.o drivers/input/misc/retu-pwrbutton.o drivers/input/misc/rotary_encoder.o drivers/input/misc/twl4030-pwrbutton.o drivers/input/misc/twl4030-vibra.o drivers/input/misc/twl6040-vibra.o drivers/input/misc/uinput.o drivers/input/misc/wistron_btns.o drivers/input/misc/wm831x-on.o drivers/input/misc/yealink.o drivers/input/mouse/appletouch.o drivers/input/mouse/bcm5974.o drivers/input/mouse/cyapa.o drivers/input/mouse/gpio_mouse.o drivers/input/mouse/inport.o drivers/input/mouse/logibm.o drivers/input/mouse/pc110pad.o drivers/input/mouse/psmouse.o drivers/input/mouse/sermouse.o drivers/input/mouse/synaptics_i2c.o drivers/input/mouse/synaptics_usb.o drivers/input/mouse/vsxxxaa.o drivers/input/mousedev.o drivers/input/serio/altera_ps2.o drivers/input/serio/arc_ps2.o drivers/input/serio/ct82c710.o drivers/input/serio/i8042.o drivers/input/serio/libps2.o drivers/input/serio/parkbd.o drivers/input/serio/pcips2.o drivers/input/serio/ps2mult.o drivers/input/serio/serio.o drivers/input/serio/serio_raw.o drivers/input/serio/serport.o drivers/input/sparse-keymap.o drivers/input/tablet/acecad.o drivers/input/tablet/aiptek.o drivers/input/tablet/gtco.o drivers/input/tablet/hanwang.o drivers/input/tablet/kbtab.o drivers/input/tablet/wacom.o drivers/input/touchscreen/88pm860x-ts.o drivers/input/touchscreen/ad7877.o drivers/input/touchscreen/ad7879-i2c.o drivers/input/touchscreen/ad7879-spi.o drivers/input/touchscreen/ad7879.o drivers/input/touchscreen/ads7846.o drivers/input/touchscreen/atmel_mxt_ts.o drivers/input/touchscreen/auo-pixcir-ts.o drivers/input/touchscreen/bu21013_ts.o drivers/input/touchscreen/cy8ctmg110_ts.o drivers/input/touchscreen/cyttsp_core.o drivers/input/touchscreen/cyttsp_i2c.o drivers/input/touchscreen/cyttsp_spi.o drivers/input/touchscreen/da9034-ts.o drivers/input/touchscreen/da9052_tsi.o drivers/input/touchscreen/dynapro.o drivers/input/touchscreen/edt-ft5x06.o drivers/input/touchscreen/eeti_ts.o drivers/input/touchscreen/elo.o drivers/input/touchscreen/fujitsu_ts.o drivers/input/touchscreen/gunze.o drivers/input/touchscreen/hampshire.o drivers/input/touchscreen/htcpen.o drivers/input/touchscreen/ili210x.o drivers/input/touchscreen/inexio.o drivers/input/touchscreen/intel-mid-touch.o drivers/input/touchscreen/max11801_ts.o drivers/input/touchscreen/mc13783_ts.o drivers/input/touchscreen/mcs5000_ts.o drivers/input/touchscreen/mk712.o drivers/input/touchscreen/mms114.o drivers/input/touchscreen/mtouch.o drivers/input/touchscreen/pcap_ts.o drivers/input/touchscreen/penmount.o drivers/input/touchscreen/pixcir_i2c_ts.o drivers/input/touchscreen/st1232.o drivers/input/touchscreen/stmpe-ts.o drivers/input/touchscreen/ti_am335x_tsc.o drivers/input/touchscreen/touchit213.o drivers/input/touchscreen/touchright.o drivers/input/touchscreen/touchwin.o drivers/input/touchscreen/tps6507x-ts.o drivers/input/touchscreen/tsc2005.o drivers/input/touchscreen/tsc2007.o drivers/input/touchscreen/tsc40.o drivers/input/touchscreen/ucb1400_ts.o drivers/input/touchscreen/usbtouchscreen.o drivers/input/touchscreen/w90p910_ts.o drivers/input/touchscreen/wacom_i2c.o drivers/input/touchscreen/wacom_w8001.o drivers/input/touchscreen/wm831x-ts.o drivers/input/touchscreen/wm97xx-ts.o drivers/ipack/carriers/tpci200.o drivers/ipack/devices/ipoctal.o drivers/ipack/ipack.o drivers/isdn/act2000/act2000.o drivers/isdn/capi/capi.o drivers/isdn/capi/capidrv.o drivers/isdn/capi/kernelcapi.o drivers/isdn/divert/dss1_divert.o drivers/isdn/gigaset/bas_gigaset.o drivers/isdn/gigaset/gigaset.o drivers/isdn/gigaset/ser_gigaset.o drivers/isdn/gigaset/usb_gigaset.o drivers/isdn/hardware/avm/avm_cs.o drivers/isdn/hardware/avm/b1.o drivers/isdn/hardware/avm/b1dma.o drivers/isdn/hardware/avm/b1isa.o drivers/isdn/hardware/avm/b1pci.o drivers/isdn/hardware/avm/b1pcmcia.o drivers/isdn/hardware/avm/c4.o drivers/isdn/hardware/avm/t1isa.o drivers/isdn/hardware/avm/t1pci.o drivers/isdn/hardware/eicon/diva_idi.o drivers/isdn/hardware/eicon/diva_mnt.o drivers/isdn/hardware/eicon/divacapi.o drivers/isdn/hardware/eicon/divadidd.o drivers/isdn/hardware/eicon/divas.o drivers/isdn/hardware/mISDN/avmfritz.o drivers/isdn/hardware/mISDN/hfcmulti.o drivers/isdn/hardware/mISDN/hfcpci.o drivers/isdn/hardware/mISDN/hfcsusb.o drivers/isdn/hardware/mISDN/mISDNinfineon.o drivers/isdn/hardware/mISDN/mISDNipac.o drivers/isdn/hardware/mISDN/mISDNisar.o drivers/isdn/hardware/mISDN/netjet.o drivers/isdn/hardware/mISDN/speedfax.o drivers/isdn/hardware/mISDN/w6692.o drivers/isdn/hisax/avma1_cs.o drivers/isdn/hisax/elsa_cs.o drivers/isdn/hisax/hfc4s8s_l1.o drivers/isdn/hisax/hfc_usb.o drivers/isdn/hisax/hisax.o drivers/isdn/hisax/hisax_fcpcipnp.o drivers/isdn/hisax/hisax_isac.o drivers/isdn/hisax/hisax_st5481.o drivers/isdn/hisax/sedlbauer_cs.o drivers/isdn/hisax/teles_cs.o drivers/isdn/hysdn/hysdn.o drivers/isdn/i4l/isdn.o drivers/isdn/i4l/isdn_bsdcomp.o drivers/isdn/i4l/isdnhdlc.o drivers/isdn/icn/icn.o drivers/isdn/mISDN/l1oip.o drivers/isdn/mISDN/mISDN_core.o drivers/isdn/mISDN/mISDN_dsp.o drivers/isdn/pcbit/pcbit.o drivers/isdn/sc/sc.o drivers/leds/dell-led.o drivers/leds/led-class.o drivers/leds/leds-88pm860x.o drivers/leds/leds-adp5520.o drivers/leds/leds-atmel-pwm.o drivers/leds/leds-bd2802.o drivers/leds/leds-blinkm.o drivers/leds/leds-clevo-mail.o drivers/leds/leds-da903x.o drivers/leds/leds-da9052.o drivers/leds/leds-dac124s085.o drivers/leds/leds-gpio.o drivers/leds/leds-lm3530.o drivers/leds/leds-lm3533.o drivers/leds/leds-lm355x.o drivers/leds/leds-lm3642.o drivers/leds/leds-lp3944.o drivers/leds/leds-lp5521.o drivers/leds/leds-lp5523.o drivers/leds/leds-lp5562.o drivers/leds/leds-lp55xx-common.o drivers/leds/leds-lp8788.o drivers/leds/leds-lt3593.o drivers/leds/leds-max8997.o drivers/leds/leds-mc13783.o drivers/leds/leds-net48xx.o drivers/leds/leds-ot200.o drivers/leds/leds-pca9532.o drivers/leds/leds-pca955x.o drivers/leds/leds-pca9633.o drivers/leds/leds-pwm.o drivers/leds/leds-regulator.o drivers/leds/leds-ss4200.o drivers/leds/leds-tca6507.o drivers/leds/leds-wm831x-status.o drivers/leds/leds-wm8350.o drivers/leds/leds-wrap.o drivers/leds/trigger/ledtrig-backlight.o drivers/leds/trigger/ledtrig-camera.o drivers/leds/trigger/ledtrig-default-on.o drivers/leds/trigger/ledtrig-gpio.o drivers/leds/trigger/ledtrig-heartbeat.o drivers/leds/trigger/ledtrig-oneshot.o drivers/leds/trigger/ledtrig-timer.o drivers/leds/trigger/ledtrig-transient.o drivers/lguest/lg.o drivers/macintosh/mac_hid.o drivers/md/dm-bio-prison.o drivers/md/dm-bufio.o drivers/md/dm-cache-cleaner.o drivers/md/dm-cache-mq.o drivers/md/dm-cache.o drivers/md/dm-crypt.o drivers/md/dm-delay.o drivers/md/dm-flakey.o drivers/md/dm-log-userspace.o drivers/md/dm-log.o drivers/md/dm-mirror.o drivers/md/dm-mod.o drivers/md/dm-multipath.o drivers/md/dm-queue-length.o drivers/md/dm-raid.o drivers/md/dm-region-hash.o drivers/md/dm-round-robin.o drivers/md/dm-service-time.o drivers/md/dm-snapshot.o drivers/md/dm-thin-pool.o drivers/md/dm-verity.o drivers/md/dm-zero.o drivers/md/faulty.o drivers/md/linear.o drivers/md/md-mod.o drivers/md/multipath.o drivers/md/persistent-data/dm-persistent-data.o drivers/md/raid0.o drivers/md/raid1.o drivers/md/raid10.o drivers/md/raid456.o drivers/media/common/b2c2/b2c2-flexcop.o drivers/media/common/btcx-risc.o drivers/media/common/cx2341x.o drivers/media/common/saa7146/saa7146.o drivers/media/common/saa7146/saa7146_vv.o drivers/media/common/siano/smsdvb.o drivers/media/common/siano/smsmdtv.o drivers/media/common/tveeprom.o drivers/media/dvb-core/dvb-core.o drivers/media/dvb-frontends/a8293.o drivers/media/dvb-frontends/af9013.o drivers/media/dvb-frontends/af9033.o drivers/media/dvb-frontends/atbm8830.o drivers/media/dvb-frontends/au8522_common.o drivers/media/dvb-frontends/au8522_decoder.o drivers/media/dvb-frontends/au8522_dig.o drivers/media/dvb-frontends/bcm3510.o drivers/media/dvb-frontends/cx22700.o drivers/media/dvb-frontends/cx22702.o drivers/media/dvb-frontends/cx24110.o drivers/media/dvb-frontends/cx24113.o drivers/media/dvb-frontends/cx24116.o drivers/media/dvb-frontends/cx24123.o drivers/media/dvb-frontends/cxd2820r.o drivers/media/dvb-frontends/dib0070.o drivers/media/dvb-frontends/dib0090.o drivers/media/dvb-frontends/dib3000mb.o drivers/media/dvb-frontends/dib3000mc.o drivers/media/dvb-frontends/dib7000m.o drivers/media/dvb-frontends/dib7000p.o drivers/media/dvb-frontends/dib8000.o drivers/media/dvb-frontends/dibx000_common.o drivers/media/dvb-frontends/drxd.o drivers/media/dvb-frontends/drxk.o drivers/media/dvb-frontends/ds3000.o drivers/media/dvb-frontends/dvb-pll.o drivers/media/dvb-frontends/ec100.o drivers/media/dvb-frontends/isl6405.o drivers/media/dvb-frontends/isl6421.o drivers/media/dvb-frontends/isl6423.o drivers/media/dvb-frontends/it913x-fe.o drivers/media/dvb-frontends/itd1000.o drivers/media/dvb-frontends/ix2505v.o drivers/media/dvb-frontends/l64781.o drivers/media/dvb-frontends/lg2160.o drivers/media/dvb-frontends/lgdt3305.o drivers/media/dvb-frontends/lgdt330x.o drivers/media/dvb-frontends/lgs8gxx.o drivers/media/dvb-frontends/lnbp21.o drivers/media/dvb-frontends/lnbp22.o drivers/media/dvb-frontends/m88rs2000.o drivers/media/dvb-frontends/mb86a16.o drivers/media/dvb-frontends/mb86a20s.o drivers/media/dvb-frontends/mt312.o drivers/media/dvb-frontends/mt352.o drivers/media/dvb-frontends/nxt200x.o drivers/media/dvb-frontends/nxt6000.o drivers/media/dvb-frontends/or51132.o drivers/media/dvb-frontends/or51211.o drivers/media/dvb-frontends/rtl2830.o drivers/media/dvb-frontends/rtl2832.o drivers/media/dvb-frontends/s5h1409.o drivers/media/dvb-frontends/s5h1411.o drivers/media/dvb-frontends/s5h1420.o drivers/media/dvb-frontends/s921.o drivers/media/dvb-frontends/si21xx.o drivers/media/dvb-frontends/sp8870.o drivers/media/dvb-frontends/sp887x.o drivers/media/dvb-frontends/stb0899.o drivers/media/dvb-frontends/stb6000.o drivers/media/dvb-frontends/stb6100.o drivers/media/dvb-frontends/stv0288.o drivers/media/dvb-frontends/stv0297.o drivers/media/dvb-frontends/stv0299.o drivers/media/dvb-frontends/stv0367.o drivers/media/dvb-frontends/stv0900.o drivers/media/dvb-frontends/stv090x.o drivers/media/dvb-frontends/stv6110.o drivers/media/dvb-frontends/stv6110x.o drivers/media/dvb-frontends/tda10021.o drivers/media/dvb-frontends/tda10023.o drivers/media/dvb-frontends/tda10048.o drivers/media/dvb-frontends/tda1004x.o drivers/media/dvb-frontends/tda10071.o drivers/media/dvb-frontends/tda10086.o drivers/media/dvb-frontends/tda18271c2dd.o drivers/media/dvb-frontends/tda665x.o drivers/media/dvb-frontends/tda8083.o drivers/media/dvb-frontends/tda8261.o drivers/media/dvb-frontends/tda826x.o drivers/media/dvb-frontends/ts2020.o drivers/media/dvb-frontends/tua6100.o drivers/media/dvb-frontends/ves1820.o drivers/media/dvb-frontends/ves1x93.o drivers/media/dvb-frontends/zl10036.o drivers/media/dvb-frontends/zl10039.o drivers/media/dvb-frontends/zl10353.o drivers/media/firewire/firedtv.o drivers/media/i2c/adv7170.o drivers/media/i2c/adv7175.o drivers/media/i2c/adv7180.o drivers/media/i2c/bt819.o drivers/media/i2c/bt856.o drivers/media/i2c/bt866.o drivers/media/i2c/cs5345.o drivers/media/i2c/cs53l32a.o drivers/media/i2c/cx25840/cx25840.o drivers/media/i2c/ir-kbd-i2c.o drivers/media/i2c/ks0127.o drivers/media/i2c/m52790.o drivers/media/i2c/msp3400.o drivers/media/i2c/mt9v011.o drivers/media/i2c/ov7670.o drivers/media/i2c/saa6588.o drivers/media/i2c/saa7110.o drivers/media/i2c/saa7115.o drivers/media/i2c/saa7127.o drivers/media/i2c/saa717x.o drivers/media/i2c/saa7185.o drivers/media/i2c/soc_camera/imx074.o drivers/media/i2c/soc_camera/mt9m001.o drivers/media/i2c/soc_camera/mt9m111.o drivers/media/i2c/soc_camera/mt9t031.o drivers/media/i2c/soc_camera/mt9t112.o drivers/media/i2c/soc_camera/mt9v022.o drivers/media/i2c/soc_camera/ov2640.o drivers/media/i2c/soc_camera/ov5642.o drivers/media/i2c/soc_camera/ov6650.o drivers/media/i2c/soc_camera/ov772x.o drivers/media/i2c/soc_camera/ov9640.o drivers/media/i2c/soc_camera/ov9740.o drivers/media/i2c/soc_camera/rj54n1cb0c.o drivers/media/i2c/soc_camera/tw9910.o drivers/media/i2c/tda7432.o drivers/media/i2c/tda9840.o drivers/media/i2c/tea6415c.o drivers/media/i2c/tea6420.o drivers/media/i2c/tvaudio.o drivers/media/i2c/tvp5150.o drivers/media/i2c/upd64031a.o drivers/media/i2c/upd64083.o drivers/media/i2c/vp27smpx.o drivers/media/i2c/vpx3220.o drivers/media/i2c/wm8739.o drivers/media/i2c/wm8775.o drivers/media/media.o drivers/media/mmc/siano/smssdio.o drivers/media/parport/bw-qcam.o drivers/media/parport/c-qcam.o drivers/media/parport/pms.o drivers/media/parport/w9966.o drivers/media/pci/b2c2/b2c2-flexcop-pci.o drivers/media/pci/bt8xx/bt878.o drivers/media/pci/bt8xx/bttv.o drivers/media/pci/bt8xx/dst.o drivers/media/pci/bt8xx/dst_ca.o drivers/media/pci/bt8xx/dvb-bt8xx.o drivers/media/pci/cx18/cx18-alsa.o drivers/media/pci/cx18/cx18.o drivers/media/pci/cx23885/altera-ci.o drivers/media/pci/cx23885/cx23885.o drivers/media/pci/cx25821/cx25821-alsa.o drivers/media/pci/cx25821/cx25821.o drivers/media/pci/cx88/cx88-alsa.o drivers/media/pci/cx88/cx88-blackbird.o drivers/media/pci/cx88/cx88-dvb.o drivers/media/pci/cx88/cx88-vp3054-i2c.o drivers/media/pci/cx88/cx8800.o drivers/media/pci/cx88/cx8802.o drivers/media/pci/cx88/cx88xx.o drivers/media/pci/ddbridge/ddbridge.o drivers/media/pci/dm1105/dm1105.o drivers/media/pci/ivtv/ivtv-alsa.o drivers/media/pci/ivtv/ivtv.o drivers/media/pci/ivtv/ivtvfb.o drivers/media/pci/mantis/hopper.o drivers/media/pci/mantis/mantis.o drivers/media/pci/mantis/mantis_core.o drivers/media/pci/meye/meye.o drivers/media/pci/ngene/ngene.o drivers/media/pci/pluto2/pluto2.o drivers/media/pci/pt1/earth-pt1.o drivers/media/pci/saa7134/saa6752hs.o drivers/media/pci/saa7134/saa7134-alsa.o drivers/media/pci/saa7134/saa7134-dvb.o drivers/media/pci/saa7134/saa7134-empress.o drivers/media/pci/saa7134/saa7134.o drivers/media/pci/saa7146/hexium_gemini.o drivers/media/pci/saa7146/hexium_orion.o drivers/media/pci/saa7146/mxb.o drivers/media/pci/saa7164/saa7164.o drivers/media/pci/sta2x11/sta2x11_vip.o drivers/media/pci/ttpci/budget-av.o drivers/media/pci/ttpci/budget-ci.o drivers/media/pci/ttpci/budget-core.o drivers/media/pci/ttpci/budget-patch.o drivers/media/pci/ttpci/budget.o drivers/media/pci/ttpci/dvb-ttpci.o drivers/media/pci/ttpci/ttpci-eeprom.o drivers/media/pci/zoran/videocodec.o drivers/media/pci/zoran/zr36016.o drivers/media/pci/zoran/zr36050.o drivers/media/pci/zoran/zr36060.o drivers/media/pci/zoran/zr36067.o drivers/media/platform/m2m-deinterlace.o drivers/media/platform/marvell-ccic/cafe_ccic.o drivers/media/platform/mem2mem_testdev.o drivers/media/platform/sh_veu.o drivers/media/platform/soc_camera/sh_mobile_ceu_camera.o drivers/media/platform/soc_camera/sh_mobile_csi2.o drivers/media/platform/soc_camera/soc_camera.o drivers/media/platform/soc_camera/soc_camera_platform.o drivers/media/platform/soc_camera/soc_mediabus.o drivers/media/platform/timblogiw.o drivers/media/platform/via-camera.o drivers/media/platform/vivi.o drivers/media/radio/dsbr100.o drivers/media/radio/radio-aimslab.o drivers/media/radio/radio-aztech.o drivers/media/radio/radio-cadet.o drivers/media/radio/radio-gemtek.o drivers/media/radio/radio-isa.o drivers/media/radio/radio-keene.o drivers/media/radio/radio-ma901.o drivers/media/radio/radio-maxiradio.o drivers/media/radio/radio-miropcm20.o drivers/media/radio/radio-mr800.o drivers/media/radio/radio-rtrack2.o drivers/media/radio/radio-sf16fmi.o drivers/media/radio/radio-sf16fmr2.o drivers"...], [/* 118 vars */]) = -1 E2BIG (Argument list too long)
60437 exit_group(127) = ?
59884 <... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 127}], 0, NULL) = 60437
59884 --- SIGCHLD (Child exited) @ 0 (0) ---
59884 exit_group(2) = ?
110859 <... wait4 resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 2}], 0, NULL) = 59884
110859 --- SIGCHLD (Child exited) @ 0 (0) ---
110859 exit_group(2) = ?

Thanks,
Fengguang

2013-03-20 03:13:49

by Rusty Russell

[permalink] [raw]
Subject: Re: make[2]: execvp: /bin/bash: Argument list too long

Fengguang Wu <[email protected]> writes:
> On Tue, Mar 19, 2013 at 09:10:25AM -0400, Konrad Rzeszutek Wilk wrote:
>> On Mon, Mar 18, 2013 at 11:50:58PM -0700, Andrew Morton wrote:
>> > On Tue, 19 Mar 2013 14:31:40 +0800 kbuild test robot <[email protected]> wrote:
>> >
>> > > tree: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next master
>> > > head: 0e78c0989334e9c1d578ba25621de14e8441d8b4
>> > > commit: 7cac5501aa2bd4777906fa0cdccc1b1ce18b3166 staging: zcache: enable zcache to be built/loaded as a module
>> > > date: 26 hours ago
>> > > config: make ARCH=i386 allmodconfig
>> > >
>> > > All error/warnings:
>> > >
>> > > >> make[2]: execvp: /bin/bash: Argument list too long
>> > > make[2]: *** [__modpost] Error 127
>> > > make[2]: Target `_modpost' not remade because of errors.
>> > >
>> >
>> > Hey, I see that very occasionally, but it goes away all by itself. Are
>> > you sure that
>> > staging-zcache-enable-ramster-to-be-built-loaded-as-a-module.patch
>> > causes it?
>
> Sorry, I confirmed that it's a wrong bisect..
>
>> Is there a way to print out what the argument list is?
>
> Good idea! I managed to catch the error command with
>
> strace -e trace=process -s 4096 -f -o argtoolong make -j1 --debug=j V=1 ARCH=i386 modules

Wow, nice!

modpost really does want all the modules at once, so it can check for
unresolved symbols. So xargs is out, we need to implement stdin-reading
directly.

Bikeshedding on the option name reveals no established standard:
-S/--stdin-file-list in shar, -T/--files-from=i in tar, --files-from=-
in rsync.

Now, if someone can find a better way of getting the module list into a
file/stdin, I'm all ears. I'm not sure the find works in all cases...

Thanks,
Rusty.

diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost
index cf82c83..421e14f 100644
--- a/scripts/Makefile.modpost
+++ b/scripts/Makefile.modpost
@@ -78,12 +78,13 @@ modpost = scripts/mod/modpost \
$(if $(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \
$(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w)

-quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules
- cmd_modpost = $(modpost) -s
+# We can go over command line length here, so be careful.
+quiet_cmd_modpost = MODPOST modules
+ cmd_modpost = find * -name '*.ko' | $(modpost) -s -T -

PHONY += __modpost
__modpost: $(modules:.ko=.o) FORCE
- $(call cmd,modpost) $(wildcard vmlinux) $(filter-out FORCE,$^)
+ $(call cmd,modpost) $(wildcard vmlinux)

quiet_cmd_kernel-mod = MODPOST $@
cmd_kernel-mod = $(modpost) $@
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 282decf..ff6b40b 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -15,6 +15,7 @@
#include <stdio.h>
#include <ctype.h>
#include <string.h>
+#include <limits.h>
#include "modpost.h"
#include "../../include/generated/autoconf.h"
#include "../../include/linux/license.h"
@@ -1756,6 +1757,28 @@ static void read_symbols(char *modname)
mod->unres = alloc_symbol("module_layout", 0, mod->unres);
}

+static void read_symbols_from_files(const char *filename)
+{
+ FILE *in = stdin;
+ char fname[PATH_MAX];
+
+ if (strcmp(filename, "-") != 0) {
+ in = fopen(filename, "r");
+ if (!in)
+ fatal("Can't open filenames file %s: %m", filename);
+ }
+
+ while (fgets(fname, PATH_MAX, in) != NULL) {
+ /* Strip \n */
+ if (strlen(fname))
+ fname[strlen(fname)-1] = '\0';
+ read_symbols(fname);
+ }
+
+ if (in != stdin)
+ fclose(in);
+}
+
#define SZ 500

/* We first write the generated file into memory using the
@@ -2116,13 +2139,13 @@ int main(int argc, char **argv)
struct module *mod;
struct buffer buf = { };
char *kernel_read = NULL, *module_read = NULL;
- char *dump_write = NULL;
+ char *dump_write = NULL, *files_source = NULL;
int opt;
int err;
struct ext_sym_list *extsym_iter;
struct ext_sym_list *extsym_start = NULL;

- while ((opt = getopt(argc, argv, "i:I:e:msSo:awM:K:")) != -1) {
+ while ((opt = getopt(argc, argv, "i:I:e:msST:o:awM:K:")) != -1) {
switch (opt) {
case 'i':
kernel_read = optarg;
@@ -2154,6 +2177,9 @@ int main(int argc, char **argv)
case 'S':
sec_mismatch_verbose = 0;
break;
+ case 'T':
+ files_source = optarg;
+ break;
case 'w':
warn_unresolved = 1;
break;
@@ -2176,6 +2202,9 @@ int main(int argc, char **argv)
while (optind < argc)
read_symbols(argv[optind++]);

+ if (files_source)
+ read_symbols_from_files(files_source);
+
for (mod = modules; mod; mod = mod->next) {
if (mod->skip)
continue;

2013-03-20 03:42:05

by Andrew Morton

[permalink] [raw]
Subject: Re: make[2]: execvp: /bin/bash: Argument list too long

On Wed, 20 Mar 2013 13:41:07 +1030 Rusty Russell <[email protected]> wrote:

> Fengguang Wu <[email protected]> writes:
> > On Tue, Mar 19, 2013 at 09:10:25AM -0400, Konrad Rzeszutek Wilk wrote:
> >> On Mon, Mar 18, 2013 at 11:50:58PM -0700, Andrew Morton wrote:
> >> > On Tue, 19 Mar 2013 14:31:40 +0800 kbuild test robot <[email protected]> wrote:
> >> >
> >> > > tree: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next master
> >> > > head: 0e78c0989334e9c1d578ba25621de14e8441d8b4
> >> > > commit: 7cac5501aa2bd4777906fa0cdccc1b1ce18b3166 staging: zcache: enable zcache to be built/loaded as a module
> >> > > date: 26 hours ago
> >> > > config: make ARCH=i386 allmodconfig
> >> > >
> >> > > All error/warnings:
> >> > >
> >> > > >> make[2]: execvp: /bin/bash: Argument list too long
> >> > > make[2]: *** [__modpost] Error 127
> >> > > make[2]: Target `_modpost' not remade because of errors.
> >> > >
> >> >
> >> > Hey, I see that very occasionally, but it goes away all by itself. Are
> >> > you sure that
> >> > staging-zcache-enable-ramster-to-be-built-loaded-as-a-module.patch
> >> > causes it?
> >
> > Sorry, I confirmed that it's a wrong bisect..
> >
> >> Is there a way to print out what the argument list is?
> >
> > Good idea! I managed to catch the error command with
> >
> > strace -e trace=process -s 4096 -f -o argtoolong make -j1 --debug=j V=1 ARCH=i386 modules
>
> Wow, nice!

That's what I thought. A better approach would be to delete a few
thousand drivers ;)

I worry that we'll also explode some internal limit in make(1) when
preparing that list. We'll see.

> modpost really does want all the modules at once, so it can check for
> unresolved symbols. So xargs is out, we need to implement stdin-reading
> directly.
>
> Bikeshedding on the option name reveals no established standard:
> -S/--stdin-file-list in shar, -T/--files-from=i in tar, --files-from=-
> in rsync.

Could just read the filenames from stdin if none were provided on the
command line, but whatever.

> Now, if someone can find a better way of getting the module list into a
> file/stdin, I'm all ears. I'm not sure the find works in all cases...

How is that list generated at present?

So we have a vast string within make(1) and need to get it into a temp
file without using shell commands? Tricky.

> diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost
> index cf82c83..421e14f 100644
> --- a/scripts/Makefile.modpost
> +++ b/scripts/Makefile.modpost
> @@ -78,12 +78,13 @@ modpost = scripts/mod/modpost \
> $(if $(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \
> $(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w)
>
> -quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules
> - cmd_modpost = $(modpost) -s
> +# We can go over command line length here, so be careful.
> +quiet_cmd_modpost = MODPOST modules
> + cmd_modpost = find * -name '*.ko' | $(modpost) -s -T -

I guess that's OK, as long as modpost handles non-object files
gracefully.

What's the risk that the find stumbles across random .ko files from
last month? Pretty small, I guess - a `make clean' appears to rubs out
all .o files, even for different architectures.

> PHONY += __modpost
> __modpost: $(modules:.ko=.o) FORCE
> - $(call cmd,modpost) $(wildcard vmlinux) $(filter-out FORCE,$^)
> + $(call cmd,modpost) $(wildcard vmlinux)
>
> quiet_cmd_kernel-mod = MODPOST $@
> cmd_kernel-mod = $(modpost) $@
> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index 282decf..ff6b40b 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -15,6 +15,7 @@
> #include <stdio.h>
> #include <ctype.h>
> #include <string.h>
> +#include <limits.h>
> #include "modpost.h"
> #include "../../include/generated/autoconf.h"
> #include "../../include/linux/license.h"
> @@ -1756,6 +1757,28 @@ static void read_symbols(char *modname)
> mod->unres = alloc_symbol("module_layout", 0, mod->unres);
> }
>
> +static void read_symbols_from_files(const char *filename)
> +{
> + FILE *in = stdin;
> + char fname[PATH_MAX];
> +
> + if (strcmp(filename, "-") != 0) {
> + in = fopen(filename, "r");
> + if (!in)
> + fatal("Can't open filenames file %s: %m", filename);
> + }
> +
> + while (fgets(fname, PATH_MAX, in) != NULL) {
> + /* Strip \n */
> + if (strlen(fname))
> + fname[strlen(fname)-1] = '\0';

That'll screw up if the file doesn't end in \n?

> + read_symbols(fname);
> + }
> +
> + if (in != stdin)
> + fclose(in);
> +}
> +

2013-03-21 01:46:35

by Rusty Russell

[permalink] [raw]
Subject: Re: make[2]: execvp: /bin/bash: Argument list too long

Andrew Morton <[email protected]> writes:
> On Wed, 20 Mar 2013 13:41:07 +1030 Rusty Russell <[email protected]> wrote:
>
>> Fengguang Wu <[email protected]> writes:
>> > On Tue, Mar 19, 2013 at 09:10:25AM -0400, Konrad Rzeszutek Wilk wrote:
>> >> On Mon, Mar 18, 2013 at 11:50:58PM -0700, Andrew Morton wrote:
>> >> > On Tue, 19 Mar 2013 14:31:40 +0800 kbuild test robot <[email protected]> wrote:
>> >> >
>> >> > > tree: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next master
>> >> > > head: 0e78c0989334e9c1d578ba25621de14e8441d8b4
>> >> > > commit: 7cac5501aa2bd4777906fa0cdccc1b1ce18b3166 staging: zcache: enable zcache to be built/loaded as a module
>> >> > > date: 26 hours ago
>> >> > > config: make ARCH=i386 allmodconfig
>> >> > >
>> >> > > All error/warnings:
>> >> > >
>> >> > > >> make[2]: execvp: /bin/bash: Argument list too long
>> >> > > make[2]: *** [__modpost] Error 127
>> >> > > make[2]: Target `_modpost' not remade because of errors.
>> >> > >
>> >> >
>> >> > Hey, I see that very occasionally, but it goes away all by itself. Are
>> >> > you sure that
>> >> > staging-zcache-enable-ramster-to-be-built-loaded-as-a-module.patch
>> >> > causes it?
>> >
>> > Sorry, I confirmed that it's a wrong bisect..
>> >
>> >> Is there a way to print out what the argument list is?
>> >
>> > Good idea! I managed to catch the error command with
>> >
>> > strace -e trace=process -s 4096 -f -o argtoolong make -j1 --debug=j V=1 ARCH=i386 modules
>>
>> Wow, nice!
>
> That's what I thought. A better approach would be to delete a few
> thousand drivers ;)
>
> I worry that we'll also explode some internal limit in make(1) when
> preparing that list. We'll see.

make is used in some pretty unweildy projects, so I'd be surprised if we
hit that.

>> modpost really does want all the modules at once, so it can check for
>> unresolved symbols. So xargs is out, we need to implement stdin-reading
>> directly.
>>
>> Bikeshedding on the option name reveals no established standard:
>> -S/--stdin-file-list in shar, -T/--files-from=i in tar, --files-from=-
>> in rsync.
>
> Could just read the filenames from stdin if none were provided on the
> command line, but whatever.

That wouldn't be very unixy...

>> Now, if someone can find a better way of getting the module list into a
>> file/stdin, I'm all ears. I'm not sure the find works in all cases...
>
> How is that list generated at present?
>
> So we have a vast string within make(1) and need to get it into a temp
> file without using shell commands? Tricky.

Actually, this patch is *crap*. modpost is what generates the .ko
files: we need the .o file equivalents. The find command wouldn't work
on a clean tree...

But that's OK, we actually generate the module list above, so we can
reuse that same logic.

>> + while (fgets(fname, PATH_MAX, in) != NULL) {
>> + /* Strip \n */
>> + if (strlen(fname))
>> + fname[strlen(fname)-1] = '\0';
>
> That'll screw up if the file doesn't end in \n?

In a break-compile way, yes. But fixed...

If this passes review, I'll split properly into three patches.

Thanks,
Rusty.

modpost: handle huge numbers of modules.

(FIXME: Split into multiple patches).

strace shows:
72102 execve("/bin/sh", ["/bin/sh", "-c", "echo ' scripts/mod/modpost -m -a
-o /cc/wfg/sound-compiletest/Module.symvers -s'; scripts/
mod/modpost -m -a -o /cc/wfg/sound-compiletest/Module.symvers -s vmlinux
arch/x86/crypto/ablk_helper.o arch/x86/crypto/aes-i586.o arch
/x86/crypto/aesni-intel.o arch/x86/crypto/crc32-pclmul.o
...
drivers/ata/sata_promise.o "...], [/* 119 vars */] <unfinished ...>
71827 wait4(-1, <unfinished ...>
72102 <... execve resumed> ) = -1 E2BIG (Argument list too long)

Reported-by: Fengguang Wu <[email protected]>
Signed-off-by: Rusty Russell <[email protected]>

diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost
index cf82c83..8dcdca2 100644
--- a/scripts/Makefile.modpost
+++ b/scripts/Makefile.modpost
@@ -60,7 +60,8 @@ kernelsymfile := $(objtree)/Module.symvers
modulesymfile := $(firstword $(KBUILD_EXTMOD))/Module.symvers

# Step 1), find all modules listed in $(MODVERDIR)/
-__modules := $(sort $(shell grep -h '\.ko$$' /dev/null $(wildcard $(MODVERDIR)/*.mod)))
+MODLISTCMD := find $(MODVERDIR) -name '*.mod' | xargs -r grep -h '\.ko$$' | sort -u
+__modules := $(shell $(MODLISTCMD))
modules := $(patsubst %.o,%.ko, $(wildcard $(__modules:.ko=.o)))

# Stop after building .o files if NOFINAL is set. Makes compile tests quicker
@@ -78,12 +79,13 @@ modpost = scripts/mod/modpost \
$(if $(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \
$(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w)

+# We can go over command line length here, so be careful.
quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules
- cmd_modpost = $(modpost) -s
+ cmd_modpost = $(MODLISTCMD) | sed 's/\.ko$$/.o/' | $(modpost) -s -T -

PHONY += __modpost
__modpost: $(modules:.ko=.o) FORCE
- $(call cmd,modpost) $(wildcard vmlinux) $(filter-out FORCE,$^)
+ $(call cmd,modpost) $(wildcard vmlinux)

quiet_cmd_kernel-mod = MODPOST $@
cmd_kernel-mod = $(modpost) $@
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index f6913db..1f90961 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -15,6 +15,8 @@
#include <stdio.h>
#include <ctype.h>
#include <string.h>
+#include <limits.h>
+#include <stdbool.h>
#include "modpost.h"
#include "../../include/generated/autoconf.h"
#include "../../include/linux/license.h"
@@ -78,6 +80,14 @@ PRINTF void merror(const char *fmt, ...)
va_end(arglist);
}

+static inline bool strends(const char *str, const char *postfix)
+{
+ if (strlen(str) < strlen(postfix))
+ return false;
+
+ return strcmp(str + strlen(str) - strlen(postfix), postfix) == 0;
+}
+
static int is_vmlinux(const char *modname)
{
const char *myname;
@@ -113,22 +123,20 @@ static struct module *find_module(char *modname)
return mod;
}

-static struct module *new_module(char *modname)
+static struct module *new_module(const char *modname)
{
struct module *mod;
- char *p, *s;
+ char *p;

mod = NOFAIL(malloc(sizeof(*mod)));
memset(mod, 0, sizeof(*mod));
p = NOFAIL(strdup(modname));

/* strip trailing .o */
- s = strrchr(p, '.');
- if (s != NULL)
- if (strcmp(s, ".o") == 0) {
- *s = '\0';
- mod->is_dot_o = 1;
- }
+ if (strends(p, ".o")) {
+ p[strlen(p) - 2] = '\0';
+ mod->is_dot_o = 1;
+ }

/* add to list */
mod->name = p;
@@ -1756,6 +1764,27 @@ static void read_symbols(char *modname)
mod->unres = alloc_symbol("module_layout", 0, mod->unres);
}

+static void read_symbols_from_files(const char *filename)
+{
+ FILE *in = stdin;
+ char fname[PATH_MAX];
+
+ if (strcmp(filename, "-") != 0) {
+ in = fopen(filename, "r");
+ if (!in)
+ fatal("Can't open filenames file %s: %m", filename);
+ }
+
+ while (fgets(fname, PATH_MAX, in) != NULL) {
+ if (strends(fname, "\n"))
+ fname[strlen(fname)-1] = '\0';
+ read_symbols(fname);
+ }
+
+ if (in != stdin)
+ fclose(in);
+}
+
#define SZ 500

/* We first write the generated file into memory using the
@@ -2117,13 +2146,13 @@ int main(int argc, char **argv)
struct module *mod;
struct buffer buf = { };
char *kernel_read = NULL, *module_read = NULL;
- char *dump_write = NULL;
+ char *dump_write = NULL, *files_source = NULL;
int opt;
int err;
struct ext_sym_list *extsym_iter;
struct ext_sym_list *extsym_start = NULL;

- while ((opt = getopt(argc, argv, "i:I:e:msSo:awM:K:")) != -1) {
+ while ((opt = getopt(argc, argv, "i:I:e:msST:o:awM:K:")) != -1) {
switch (opt) {
case 'i':
kernel_read = optarg;
@@ -2155,6 +2184,9 @@ int main(int argc, char **argv)
case 'S':
sec_mismatch_verbose = 0;
break;
+ case 'T':
+ files_source = optarg;
+ break;
case 'w':
warn_unresolved = 1;
break;
@@ -2177,6 +2209,9 @@ int main(int argc, char **argv)
while (optind < argc)
read_symbols(argv[optind++]);

+ if (files_source)
+ read_symbols_from_files(files_source);
+
for (mod = modules; mod; mod = mod->next) {
if (mod->skip)
continue;

2013-04-04 07:51:30

by Rusty Russell

[permalink] [raw]
Subject: Re: make[2]: execvp: /bin/bash: Argument list too long

Rusty Russell <[email protected]> writes:
> If this passes review, I'll split properly into three patches.
>
> Thanks,
> Rusty.

Noone commented, so split into 3 and into modules-next it goes...

Cheers,
Rusty.

> modpost: handle huge numbers of modules.
>
> (FIXME: Split into multiple patches).
>
> strace shows:
> 72102 execve("/bin/sh", ["/bin/sh", "-c", "echo ' scripts/mod/modpost -m -a
> -o /cc/wfg/sound-compiletest/Module.symvers -s'; scripts/
> mod/modpost -m -a -o /cc/wfg/sound-compiletest/Module.symvers -s vmlinux
> arch/x86/crypto/ablk_helper.o arch/x86/crypto/aes-i586.o arch
> /x86/crypto/aesni-intel.o arch/x86/crypto/crc32-pclmul.o
> ...
> drivers/ata/sata_promise.o "...], [/* 119 vars */] <unfinished ...>
> 71827 wait4(-1, <unfinished ...>
> 72102 <... execve resumed> ) = -1 E2BIG (Argument list too long)
>
> Reported-by: Fengguang Wu <[email protected]>
> Signed-off-by: Rusty Russell <[email protected]>
>
> diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost
> index cf82c83..8dcdca2 100644
> --- a/scripts/Makefile.modpost
> +++ b/scripts/Makefile.modpost
> @@ -60,7 +60,8 @@ kernelsymfile := $(objtree)/Module.symvers
> modulesymfile := $(firstword $(KBUILD_EXTMOD))/Module.symvers
>
> # Step 1), find all modules listed in $(MODVERDIR)/
> -__modules := $(sort $(shell grep -h '\.ko$$' /dev/null $(wildcard $(MODVERDIR)/*.mod)))
> +MODLISTCMD := find $(MODVERDIR) -name '*.mod' | xargs -r grep -h '\.ko$$' | sort -u
> +__modules := $(shell $(MODLISTCMD))
> modules := $(patsubst %.o,%.ko, $(wildcard $(__modules:.ko=.o)))
>
> # Stop after building .o files if NOFINAL is set. Makes compile tests quicker
> @@ -78,12 +79,13 @@ modpost = scripts/mod/modpost \
> $(if $(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \
> $(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w)
>
> +# We can go over command line length here, so be careful.
> quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules
> - cmd_modpost = $(modpost) -s
> + cmd_modpost = $(MODLISTCMD) | sed 's/\.ko$$/.o/' | $(modpost) -s -T -
>
> PHONY += __modpost
> __modpost: $(modules:.ko=.o) FORCE
> - $(call cmd,modpost) $(wildcard vmlinux) $(filter-out FORCE,$^)
> + $(call cmd,modpost) $(wildcard vmlinux)
>
> quiet_cmd_kernel-mod = MODPOST $@
> cmd_kernel-mod = $(modpost) $@
> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index f6913db..1f90961 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -15,6 +15,8 @@
> #include <stdio.h>
> #include <ctype.h>
> #include <string.h>
> +#include <limits.h>
> +#include <stdbool.h>
> #include "modpost.h"
> #include "../../include/generated/autoconf.h"
> #include "../../include/linux/license.h"
> @@ -78,6 +80,14 @@ PRINTF void merror(const char *fmt, ...)
> va_end(arglist);
> }
>
> +static inline bool strends(const char *str, const char *postfix)
> +{
> + if (strlen(str) < strlen(postfix))
> + return false;
> +
> + return strcmp(str + strlen(str) - strlen(postfix), postfix) == 0;
> +}
> +
> static int is_vmlinux(const char *modname)
> {
> const char *myname;
> @@ -113,22 +123,20 @@ static struct module *find_module(char *modname)
> return mod;
> }
>
> -static struct module *new_module(char *modname)
> +static struct module *new_module(const char *modname)
> {
> struct module *mod;
> - char *p, *s;
> + char *p;
>
> mod = NOFAIL(malloc(sizeof(*mod)));
> memset(mod, 0, sizeof(*mod));
> p = NOFAIL(strdup(modname));
>
> /* strip trailing .o */
> - s = strrchr(p, '.');
> - if (s != NULL)
> - if (strcmp(s, ".o") == 0) {
> - *s = '\0';
> - mod->is_dot_o = 1;
> - }
> + if (strends(p, ".o")) {
> + p[strlen(p) - 2] = '\0';
> + mod->is_dot_o = 1;
> + }
>
> /* add to list */
> mod->name = p;
> @@ -1756,6 +1764,27 @@ static void read_symbols(char *modname)
> mod->unres = alloc_symbol("module_layout", 0, mod->unres);
> }
>
> +static void read_symbols_from_files(const char *filename)
> +{
> + FILE *in = stdin;
> + char fname[PATH_MAX];
> +
> + if (strcmp(filename, "-") != 0) {
> + in = fopen(filename, "r");
> + if (!in)
> + fatal("Can't open filenames file %s: %m", filename);
> + }
> +
> + while (fgets(fname, PATH_MAX, in) != NULL) {
> + if (strends(fname, "\n"))
> + fname[strlen(fname)-1] = '\0';
> + read_symbols(fname);
> + }
> +
> + if (in != stdin)
> + fclose(in);
> +}
> +
> #define SZ 500
>
> /* We first write the generated file into memory using the
> @@ -2117,13 +2146,13 @@ int main(int argc, char **argv)
> struct module *mod;
> struct buffer buf = { };
> char *kernel_read = NULL, *module_read = NULL;
> - char *dump_write = NULL;
> + char *dump_write = NULL, *files_source = NULL;
> int opt;
> int err;
> struct ext_sym_list *extsym_iter;
> struct ext_sym_list *extsym_start = NULL;
>
> - while ((opt = getopt(argc, argv, "i:I:e:msSo:awM:K:")) != -1) {
> + while ((opt = getopt(argc, argv, "i:I:e:msST:o:awM:K:")) != -1) {
> switch (opt) {
> case 'i':
> kernel_read = optarg;
> @@ -2155,6 +2184,9 @@ int main(int argc, char **argv)
> case 'S':
> sec_mismatch_verbose = 0;
> break;
> + case 'T':
> + files_source = optarg;
> + break;
> case 'w':
> warn_unresolved = 1;
> break;
> @@ -2177,6 +2209,9 @@ int main(int argc, char **argv)
> while (optind < argc)
> read_symbols(argv[optind++]);
>
> + if (files_source)
> + read_symbols_from_files(files_source);
> +
> for (mod = modules; mod; mod = mod->next) {
> if (mod->skip)
> continue;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/