]> git.ipfire.org Git - people/stevee/ipfire-2.x.git/blob - src/patches/glibc-2.38/0012-io-Fix-record-locking-contants-for-powerpc64-with-__.patch
4752c800a51c1e3ecb64522a8d92051b8e85f820
[people/stevee/ipfire-2.x.git] / src / patches / glibc-2.38 / 0012-io-Fix-record-locking-contants-for-powerpc64-with-__.patch
1 From 5bdef6f27c91f45505ed5444147be4ed0e9bc3c7 Mon Sep 17 00:00:00 2001
2 From: Aurelien Jarno <aurelien@aurel32.net>
3 Date: Mon, 28 Aug 2023 23:30:37 +0200
4 Subject: [PATCH 12/44] io: Fix record locking contants for powerpc64 with
5 __USE_FILE_OFFSET64
6
7 Commit 5f828ff824e3b7cd1 ("io: Fix F_GETLK, F_SETLK, and F_SETLKW for
8 powerpc64") fixed an issue with the value of the lock constants on
9 powerpc64 when not using __USE_FILE_OFFSET64, but it ended-up also
10 changing the value when using __USE_FILE_OFFSET64 causing an API change.
11
12 Fix that by also checking that define, restoring the pre
13 4d0fe291aed3a476a commit values:
14
15 Default values:
16 - F_GETLK: 5
17 - F_SETLK: 6
18 - F_SETLKW: 7
19
20 With -D_FILE_OFFSET_BITS=64:
21 - F_GETLK: 12
22 - F_SETLK: 13
23 - F_SETLKW: 14
24
25 At the same time, it has been noticed that there was no test for io lock
26 with __USE_FILE_OFFSET64, so just add one.
27
28 Tested on x86_64-linux-gnu, i686-linux-gnu and
29 powerpc64le-unknown-linux-gnu.
30
31 Resolves: BZ #30804.
32 Co-authored-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
33 Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
34 (cherry picked from commit 434bf72a94de68f0cc7fbf3c44bf38c1911b70cb)
35 ---
36 NEWS | 2 ++
37 io/Makefile | 1 +
38 io/tst-fcntl-lock-lfs.c | 2 ++
39 sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h | 2 +-
40 4 files changed, 6 insertions(+), 1 deletion(-)
41 create mode 100644 io/tst-fcntl-lock-lfs.c
42
43 diff --git a/NEWS b/NEWS
44 index c339cb444e..8156572cdf 100644
45 --- a/NEWS
46 +++ b/NEWS
47 @@ -133,6 +133,8 @@ The following bugs are resolved with this release:
48 [30579] malloc: trim_threshold in realloc lead to high memory usage
49 [30662] nscd: Group and password cache use errno in place of errval
50 [30723] posix_memalign repeatedly scans long bin lists
51 + [30804] F_GETLK, F_SETLK, and F_SETLKW value change for powerpc64 with
52 + -D_FILE_OFFSET_BITS=64
53 \f
54 Version 2.37
55
56 diff --git a/io/Makefile b/io/Makefile
57 index 6ccc0e8691..8a3c83a3bb 100644
58 --- a/io/Makefile
59 +++ b/io/Makefile
60 @@ -192,6 +192,7 @@ tests := \
61 tst-fchownat \
62 tst-fcntl \
63 tst-fcntl-lock \
64 + tst-fcntl-lock-lfs \
65 tst-fstatat \
66 tst-fts \
67 tst-fts-lfs \
68 diff --git a/io/tst-fcntl-lock-lfs.c b/io/tst-fcntl-lock-lfs.c
69 new file mode 100644
70 index 0000000000..f2a909fb02
71 --- /dev/null
72 +++ b/io/tst-fcntl-lock-lfs.c
73 @@ -0,0 +1,2 @@
74 +#define _FILE_OFFSET_BITS 64
75 +#include <io/tst-fcntl-lock.c>
76 diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h b/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
77 index f7615a447e..d8a291a331 100644
78 --- a/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
79 +++ b/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
80 @@ -33,7 +33,7 @@
81 # define __O_LARGEFILE 0200000
82 #endif
83
84 -#if __WORDSIZE == 64
85 +#if __WORDSIZE == 64 && !defined __USE_FILE_OFFSET64
86 # define F_GETLK 5
87 # define F_SETLK 6
88 # define F_SETLKW 7
89 --
90 2.39.2
91