]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
Reduce maximum possible memory limit on MIPS32
authorIvan A. Melnikov <iv@altlinux.org>
Fri, 9 Apr 2021 08:45:10 +0000 (11:45 +0300)
committerLasse Collin <lasse.collin@tukaani.org>
Sun, 11 Apr 2021 16:50:41 +0000 (19:50 +0300)
Due to architectural limitations, address space available to a single
userspace process on MIPS32 is limited to 2 GiB, not 4, even on systems
that have more physical RAM -- e.g. 64-bit systems with 32-bit
userspace, or systems that use XPA (an extension similar to x86's PAE).

So, for MIPS32, we have to impose stronger memory limits. I've chosen
2000MiB to give the process some headroom.

src/xz/hardware.c

index 7cb335822eeff3bcee5a861db9cdd0f9f303d288..0ad8c6586201e241dfc1596794d2c2af9a89d905 100644 (file)
@@ -91,7 +91,13 @@ hardware_memlimit_set(uint64_t new_memlimit,
                // Use a value less than SIZE_MAX so that there's some room
                // for the xz program and so on. Don't use 4000 MiB because
                // it could look like someone mixed up base-2 and base-10.
+#ifdef __mips__
+               // For MIPS32, due to architectural pecularities,
+               // the limit is even lower.
+               const uint64_t limit_max = UINT64_C(2000) << 20;
+#else
                const uint64_t limit_max = UINT64_C(4020) << 20;
+#endif
 
                // UINT64_MAX is a special case for the string "max" so
                // that has to be handled specially.