linux-testing: Fix arg list too long in modinst
With the default kernel and thus with the build I have tested in 74ec94bfa2e57e2c0beeee0e469de58391d04a7b, we get an error during modules_install: make[2]: execvp: /nix/store/.../bin/bash: Argument list too long I haven't noticed this build until I actually tried booting using this kernel because make didn't fail here. The reason this happens within Nix and probably didn't yet surface in other distros is that programs only have a limited amount of memory available for storing the environment and the arguments. Environment variables however are quite common on Nix and thus we stumble on problems like this way earlier - in this case Linux 4.8 - but I have noticed this in 4.7-next as well already. The fix is far from perfect and suffers performance overhead because we now run grep for every *.mod file instead of passing all *.mod files into one single invocation of grep. But comparing the performance overhead (around 1s on my machine) with the overall build time of the kernel I think the overhead really is neglicible. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
This commit is contained in:
parent
e7b2f05d20
commit
f19c961b4e
@ -0,0 +1,14 @@
|
|||||||
|
diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst
|
||||||
|
index 07650ee..934a7a8 100644
|
||||||
|
--- a/scripts/Makefile.modinst
|
||||||
|
+++ b/scripts/Makefile.modinst
|
||||||
|
@@ -9,7 +9,8 @@ include scripts/Kbuild.include
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
-__modules := $(sort $(shell grep -h '\.ko$$' /dev/null $(wildcard $(MODVERDIR)/*.mod)))
|
||||||
|
+__modules := $(sort $(foreach f,$(wildcard $(MODVERDIR)/*.mod),$(shell \
|
||||||
|
+ grep -h '\.ko$$' '$f')))
|
||||||
|
modules := $(patsubst %.o,%.ko,$(wildcard $(__modules:.ko=.o)))
|
||||||
|
|
||||||
|
PHONY += $(modules)
|
@ -74,6 +74,11 @@ rec {
|
|||||||
patch = ./mips-ext3-n32.patch;
|
patch = ./mips-ext3-n32.patch;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
modinst_arg_list_too_long =
|
||||||
|
{ name = "modinst-arglist-too-long";
|
||||||
|
patch = ./modinst-arg-list-too-long.patch;
|
||||||
|
};
|
||||||
|
|
||||||
ubuntu_fan_4_4 =
|
ubuntu_fan_4_4 =
|
||||||
{ name = "ubuntu-fan";
|
{ name = "ubuntu-fan";
|
||||||
patch = ./ubuntu-fan-4.4.patch;
|
patch = ./ubuntu-fan-4.4.patch;
|
||||||
|
@ -11185,9 +11185,11 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
linux_testing = callPackage ../os-specific/linux/kernel/linux-testing.nix {
|
linux_testing = callPackage ../os-specific/linux/kernel/linux-testing.nix {
|
||||||
kernelPatches = [ kernelPatches.bridge_stp_helper ]
|
kernelPatches = [
|
||||||
++ lib.optionals ((platform.kernelArch or null) == "mips")
|
kernelPatches.bridge_stp_helper
|
||||||
[ kernelPatches.mips_fpureg_emu
|
kernelPatches.modinst_arg_list_too_long
|
||||||
|
] ++ lib.optionals ((platform.kernelArch or null) == "mips") [
|
||||||
|
kernelPatches.mips_fpureg_emu
|
||||||
kernelPatches.mips_fpu_sigill
|
kernelPatches.mips_fpu_sigill
|
||||||
kernelPatches.mips_ext3_n32
|
kernelPatches.mips_ext3_n32
|
||||||
];
|
];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user