RFR: 8368522: (fs) BasicFileAttributes Linux musl 1.2.5 incompatibility with statx

Aleksei Voitylov avoitylov at openjdk.org
Tue Oct 7 13:00:39 UTC 2025


This cleanup replaces #ifdefs with a standard #include <stdint.h>. Using standard types is more prone to errors.

JDK-8368522 was reported on ARM32 with musl libc, which is not a supported configuration, but I still believe this code cleanup is worth it.

After the introduction of statx with musl 1.2.5, a buffer overflow issue with statx() call handling started happening on ARM32. The root cause is incorrect size of __uint64_t type definition in the JDK for musl libc, where it was defined as 4 bytes (unsigned long int) for 32-bit systems instead of 8 bytes (unsigned long long).

The mismatch between JDK's my_statx structure and kernel's statx structure causes stack corruption when statx() writes beyond the statx_buf boundaries, overwriting adjacent variables, including the 'attrs' argument that was later passed to copy_statx_attributes() function and caused a segfault there.

Built and ran jtreg on standard OpenJDK platforms with no regressions, including the altered test.

-------------

Commit messages:
 - fix JDK-8368522

Changes: https://git.openjdk.org/jdk/pull/27674/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=27674&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8368522
  Stats: 51 lines in 2 files changed: 2 ins; 13 del; 36 mod
  Patch: https://git.openjdk.org/jdk/pull/27674.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/27674/head:pull/27674

PR: https://git.openjdk.org/jdk/pull/27674


More information about the nio-dev mailing list