Red Hat Bugzilla – Bug 1330705
open() and openat() ignore 'mode' with O_TMPFILE on newer kernels
Last modified: 2017-08-01 14:06:55 EDT
Created attachment 1151054 [details] reproducer and test program Description of problem: The RHEL Server for ARM kernel is based on upstream kernel-4.5.0, and this kernel adds a new O_TMPFILE flag to the open() and openat() syscalls. glibc needs an update to support setting the file permissions when using O_TMPFILE without O_CREAT. See upstream bug https://sourceware.org/bugzilla/show_bug.cgi?id=17523 Attached are two patches that (1) define O_TMPFILE and (2) update the open() and openat() syscall wrappers to support the mode. Version-Release number of selected component (if applicable): glibc-2.17-105.el7 How reproducible: always Steps to Reproduce: 1. on a 64-bit ARM system, compile and run the attached o_tmpfile.c test program Actual results: ~]# ./a.out /proc/self/fd/3 -> /root/#201425340 (deleted) file created with O_TMPFILE /proc/self/fd/3 has mode 00 FAIL: mode is not 0600 Expected results: ~]# ./a.out /proc/self/fd/3 -> /root/#201867825 (deleted) file created with O_TMPFILE /proc/self/fd/3 has mode 0600 Additional info: The problem was originally discovered by LTP's openat03 and open14 tests. This is another method to reproduce and test the bug.
*** Bug 1375984 has been marked as a duplicate of this bug. ***
I posted a test case upstream: https://sourceware.org/ml/libc-alpha/2016-09/msg00341.html
*** Bug 1386506 has been marked as a duplicate of this bug. ***
*** Bug 1451173 has been marked as a duplicate of this bug. ***
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2017:1916