patches/uClibc/0.9.30.2/200-clean-up-O_CLOEXEC-handling.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Jul 28 21:32:42 2010 +0200 (2010-07-28)
changeset 2040 c0162f201864
parent 1819 66fcfb3d6745
permissions -rw-r--r--
config: allow unconditional usage of tristates
yann@1819
     1
From 74ca5695cd9913691192e075449b8be5794d50f0 Mon Sep 17 00:00:00 2001
yann@1819
     2
From: Mike Frysinger <vapier@gentoo.org>
yann@1819
     3
Date: Thu, 8 Oct 2009 02:51:55 +0000
yann@1819
     4
Subject: [PATCH 12/15] clean up O_CLOEXEC handling
yann@1819
     5
yann@1819
     6
Drop the "#ifndef O_CLOEXEC" cruft, enable O_CLOEXEC in most fcntl.h
yann@1819
     7
headers, and import __ASSUME_O_CLOEXEC from glibc.
yann@1819
     8
yann@1819
     9
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
yann@1819
    10
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
yann@1819
    11
---
yann@1819
    12
 libc/pwd_grp/lckpwdf.c                     |    8 +++++++-
yann@1819
    13
 libc/sysdeps/linux/alpha/bits/fcntl.h      |    2 --
yann@1819
    14
 libc/sysdeps/linux/arm/bits/fcntl.h        |    2 --
yann@1819
    15
 libc/sysdeps/linux/avr32/bits/fcntl.h      |    1 +
yann@1819
    16
 libc/sysdeps/linux/bfin/bits/fcntl.h       |    2 ++
yann@1819
    17
 libc/sysdeps/linux/cris/bits/fcntl.h       |    1 +
yann@1819
    18
 libc/sysdeps/linux/frv/bits/fcntl.h        |    2 ++
yann@1819
    19
 libc/sysdeps/linux/hppa/bits/fcntl.h       |    1 +
yann@1819
    20
 libc/sysdeps/linux/i386/bits/fcntl.h       |    2 --
yann@1819
    21
 libc/sysdeps/linux/ia64/bits/fcntl.h       |    2 --
yann@1819
    22
 libc/sysdeps/linux/m68k/bits/fcntl.h       |    1 +
yann@1819
    23
 libc/sysdeps/linux/microblaze/bits/fcntl.h |    2 ++
yann@1819
    24
 libc/sysdeps/linux/mips/bits/fcntl.h       |    1 +
yann@1819
    25
 libc/sysdeps/linux/powerpc/bits/fcntl.h    |    2 --
yann@1819
    26
 libc/sysdeps/linux/sh/bits/fcntl.h         |    2 --
yann@1819
    27
 libc/sysdeps/linux/sh64/bits/fcntl.h       |    2 ++
yann@1819
    28
 libc/sysdeps/linux/sparc/bits/fcntl.h      |    2 --
yann@1819
    29
 libc/sysdeps/linux/x86_64/bits/fcntl.h     |    2 --
yann@1819
    30
 libc/sysdeps/linux/xtensa/bits/fcntl.h     |    1 +
yann@1819
    31
 19 files changed, 21 insertions(+), 17 deletions(-)
yann@1819
    32
yann@1819
    33
diff --git a/libc/pwd_grp/lckpwdf.c b/libc/pwd_grp/lckpwdf.c
yann@1819
    34
index 0b0fb47..aec6283 100644
yann@1819
    35
--- a/libc/pwd_grp/lckpwdf.c
yann@1819
    36
+++ b/libc/pwd_grp/lckpwdf.c
yann@1819
    37
@@ -75,7 +75,7 @@ lckpwdf (void)
yann@1819
    38
   /* Prevent problems caused by multiple threads.  */
yann@1819
    39
   __UCLIBC_MUTEX_LOCK(mylock);
yann@1819
    40
 
yann@1819
    41
-  lock_fd = open (_PATH_PASSWD, O_WRONLY);
yann@1819
    42
+  lock_fd = open (_PATH_PASSWD, O_WRONLY | O_CLOEXEC);
yann@1819
    43
   if (lock_fd == -1) {
yann@1819
    44
     /* Cannot create lock file.  */
yann@1819
    45
 	goto DONE;
yann@1819
    46
@@ -97,6 +97,12 @@ lckpwdf (void)
yann@1819
    47
 	goto DONE;
yann@1819
    48
   }
yann@1819
    49
 
yann@1819
    50
+#ifndef __ASSUME_O_CLOEXEC
yann@1819
    51
+    /* Make sure file gets correctly closed when process finished.  */
yann@1819
    52
+   fcntl (lock_fd, F_SETFD, FD_CLOEXEC);
yann@1819
    53
+#endif
yann@1819
    54
+
yann@1819
    55
+
yann@1819
    56
   /* Now we have to get exclusive write access.  Since multiple
yann@1819
    57
      process could try this we won't stop when it first fails.
yann@1819
    58
      Instead we set a timeout for the system call.  Once the timer
yann@1819
    59
diff --git a/libc/sysdeps/linux/alpha/bits/fcntl.h b/libc/sysdeps/linux/alpha/bits/fcntl.h
yann@1819
    60
index 2a6b9ea..649c563 100644
yann@1819
    61
--- a/libc/sysdeps/linux/alpha/bits/fcntl.h
yann@1819
    62
+++ b/libc/sysdeps/linux/alpha/bits/fcntl.h
yann@1819
    63
@@ -50,9 +50,7 @@
yann@1819
    64
 # define O_NOFOLLOW	0200000	/* Do not follow links.  */
yann@1819
    65
 # define O_DIRECT	02000000 /* Direct disk access.  */
yann@1819
    66
 # define O_NOATIME	04000000 /* Do not set atime.  */
yann@1819
    67
-# if 0
yann@1819
    68
 # define O_CLOEXEC      010000000 /* Set close_on_exec.  */
yann@1819
    69
-# endif
yann@1819
    70
 #endif
yann@1819
    71
 
yann@1819
    72
 #ifdef __USE_LARGEFILE64
yann@1819
    73
diff --git a/libc/sysdeps/linux/arm/bits/fcntl.h b/libc/sysdeps/linux/arm/bits/fcntl.h
yann@1819
    74
index 86cea4b..7cc5a9d 100644
yann@1819
    75
--- a/libc/sysdeps/linux/arm/bits/fcntl.h
yann@1819
    76
+++ b/libc/sysdeps/linux/arm/bits/fcntl.h
yann@1819
    77
@@ -50,9 +50,7 @@
yann@1819
    78
 # define O_NOFOLLOW	0100000	/* Do not follow links.	 */
yann@1819
    79
 # define O_DIRECT	0200000	/* Direct disk access.	*/
yann@1819
    80
 # define O_NOATIME     01000000 /* Do not set atime.  */
yann@1819
    81
-# if 0
yann@1819
    82
 # define O_CLOEXEC     02000000 /* Set close_on_exec.  */
yann@1819
    83
-# endif
yann@1819
    84
 #endif
yann@1819
    85
 
yann@1819
    86
 /* For now Linux has synchronisity options for data and read operations.
yann@1819
    87
diff --git a/libc/sysdeps/linux/avr32/bits/fcntl.h b/libc/sysdeps/linux/avr32/bits/fcntl.h
yann@1819
    88
index 2301e22..767243e 100644
yann@1819
    89
--- a/libc/sysdeps/linux/avr32/bits/fcntl.h
yann@1819
    90
+++ b/libc/sysdeps/linux/avr32/bits/fcntl.h
yann@1819
    91
@@ -30,6 +30,7 @@
yann@1819
    92
 # define O_DIRECTORY	00200000	/* direct disk access */
yann@1819
    93
 # define O_NOFOLLOW	00400000	/* don't follow links */
yann@1819
    94
 # define O_NOATIME	01000000	/* don't set atime */
yann@1819
    95
+# define O_CLOEXEC	02000000	/* set close_on_exec */
yann@1819
    96
 #endif
yann@1819
    97
 
yann@1819
    98
 #ifdef __USE_LARGEFILE64
yann@1819
    99
diff --git a/libc/sysdeps/linux/bfin/bits/fcntl.h b/libc/sysdeps/linux/bfin/bits/fcntl.h
yann@1819
   100
index 7d0bcf9..aabf94d 100644
yann@1819
   101
--- a/libc/sysdeps/linux/bfin/bits/fcntl.h
yann@1819
   102
+++ b/libc/sysdeps/linux/bfin/bits/fcntl.h
yann@1819
   103
@@ -48,6 +48,8 @@
yann@1819
   104
 # define O_DIRECTORY	 040000	/* Must be a directory.	 */
yann@1819
   105
 # define O_NOFOLLOW	0100000	/* Do not follow links.	 */
yann@1819
   106
 # define O_DIRECT	0200000	/* Direct disk access.	*/
yann@1819
   107
+# define O_NOATIME     01000000 /* don't set atime */
thomas@1886
   108
+# define O_CLOEXEC     02000000 /* set close_on_exec */
yann@1819
   109
 #endif
yann@1819
   110
 
yann@1819
   111
 /* For now Linux has synchronisity options for data and read operations.
yann@1819
   112
diff --git a/libc/sysdeps/linux/cris/bits/fcntl.h b/libc/sysdeps/linux/cris/bits/fcntl.h
yann@1819
   113
index a2106ef..29443ba 100644
yann@1819
   114
--- a/libc/sysdeps/linux/cris/bits/fcntl.h
yann@1819
   115
+++ b/libc/sysdeps/linux/cris/bits/fcntl.h
yann@1819
   116
@@ -50,6 +50,7 @@
yann@1819
   117
 # define O_DIRECTORY	0200000	/* Must be a directory.	 */
yann@1819
   118
 # define O_NOFOLLOW	0400000	/* Do not follow links.	 */
yann@1819
   119
 # define O_NOATIME	01000000 /* Do not set atime.  */
yann@1819
   120
+# define O_CLOEXEC	02000000 /* set close_on_exec */
yann@1819
   121
 #endif
yann@1819
   122
 
yann@1819
   123
 /* For now Linux has synchronisity options for data and read operations.
yann@1819
   124
diff --git a/libc/sysdeps/linux/frv/bits/fcntl.h b/libc/sysdeps/linux/frv/bits/fcntl.h
yann@1819
   125
index 06e8860..5bff4d3 100644
yann@1819
   126
--- a/libc/sysdeps/linux/frv/bits/fcntl.h
yann@1819
   127
+++ b/libc/sysdeps/linux/frv/bits/fcntl.h
yann@1819
   128
@@ -45,6 +45,8 @@
yann@1819
   129
 # define O_DIRECT	 040000	/* Direct disk access.  */
yann@1819
   130
 # define O_DIRECTORY	0200000	/* Must be a directory.  */
yann@1819
   131
 # define O_NOFOLLOW	0400000	/* Do not follow links.  */
yann@1819
   132
+# define O_NOATIME     01000000 /* don't set atime */
yann@1819
   133
+# define O_CLOEXEC     02000000 /* set close_on_exec */
yann@1819
   134
 #endif
yann@1819
   135
 
yann@1819
   136
 /* For now Linux has synchronisity options for data and read operations.
yann@1819
   137
diff --git a/libc/sysdeps/linux/hppa/bits/fcntl.h b/libc/sysdeps/linux/hppa/bits/fcntl.h
yann@1819
   138
index cc23bf8..86e3b6f 100644
yann@1819
   139
--- a/libc/sysdeps/linux/hppa/bits/fcntl.h
yann@1819
   140
+++ b/libc/sysdeps/linux/hppa/bits/fcntl.h
yann@1819
   141
@@ -50,6 +50,7 @@
yann@1819
   142
 # define O_DIRECTORY	00010000 /* Must be a directory. */
yann@1819
   143
 # define O_NOFOLLOW	00000200 /* Do not follow links. */
yann@1819
   144
 # define O_NOATIME	04000000 /* Do not set atime. */
yann@1819
   145
+# define O_CLOEXEC	010000000 /* set close_on_exec */
yann@1819
   146
 #endif
yann@1819
   147
 
yann@1819
   148
 #ifdef __USE_LARGEFILE64
yann@1819
   149
diff --git a/libc/sysdeps/linux/i386/bits/fcntl.h b/libc/sysdeps/linux/i386/bits/fcntl.h
yann@1819
   150
index 7f0b552..22e073b 100644
yann@1819
   151
--- a/libc/sysdeps/linux/i386/bits/fcntl.h
yann@1819
   152
+++ b/libc/sysdeps/linux/i386/bits/fcntl.h
yann@1819
   153
@@ -50,9 +50,7 @@
yann@1819
   154
 # define O_DIRECTORY	0200000	/* Must be a directory.	 */
yann@1819
   155
 # define O_NOFOLLOW	0400000	/* Do not follow links.	 */
yann@1819
   156
 # define O_NOATIME     01000000 /* Do not set atime.  */
yann@1819
   157
-# if 0
yann@1819
   158
 # define O_CLOEXEC     02000000 /* Set close_on_exec.  */
yann@1819
   159
-# endif
yann@1819
   160
 #endif
yann@1819
   161
 
yann@1819
   162
 /* For now Linux has synchronisity options for data and read operations.
yann@1819
   163
diff --git a/libc/sysdeps/linux/ia64/bits/fcntl.h b/libc/sysdeps/linux/ia64/bits/fcntl.h
yann@1819
   164
index d134c4b..85a55f6 100644
yann@1819
   165
--- a/libc/sysdeps/linux/ia64/bits/fcntl.h
yann@1819
   166
+++ b/libc/sysdeps/linux/ia64/bits/fcntl.h
yann@1819
   167
@@ -49,9 +49,7 @@
yann@1819
   168
 # define O_DIRECTORY	0200000	/* must be a directory */
yann@1819
   169
 # define O_NOFOLLOW	0400000 /* don't follow links */
yann@1819
   170
 # define O_NOATIME	01000000 /* Do not set atime.  */
yann@1819
   171
-# if 0
yann@1819
   172
 # define O_CLOEXEC	02000000 /* Set close_on_exec.  */
yann@1819
   173
-# endif
yann@1819
   174
 #endif
yann@1819
   175
 
yann@1819
   176
 #ifdef __USE_LARGEFILE64
yann@1819
   177
diff --git a/libc/sysdeps/linux/m68k/bits/fcntl.h b/libc/sysdeps/linux/m68k/bits/fcntl.h
yann@1819
   178
index d36198d..e564b42 100644
yann@1819
   179
--- a/libc/sysdeps/linux/m68k/bits/fcntl.h
yann@1819
   180
+++ b/libc/sysdeps/linux/m68k/bits/fcntl.h
yann@1819
   181
@@ -49,6 +49,7 @@
yann@1819
   182
 # define O_NOFOLLOW	0100000	/* Do not follow links.	 */
yann@1819
   183
 # define O_DIRECT	0200000	/* Direct disk access.	*/
yann@1819
   184
 # define O_NOATIME	01000000 /* Do not set atime.  */
yann@1819
   185
+# define O_CLOEXEC	02000000 /* set close_on_exec */
yann@1819
   186
 #endif
yann@1819
   187
 
yann@1819
   188
 /* For now Linux has synchronisity options for data and read operations.
yann@1819
   189
diff --git a/libc/sysdeps/linux/microblaze/bits/fcntl.h b/libc/sysdeps/linux/microblaze/bits/fcntl.h
yann@1819
   190
index c8aeb91..da35209 100644
yann@1819
   191
--- a/libc/sysdeps/linux/microblaze/bits/fcntl.h
yann@1819
   192
+++ b/libc/sysdeps/linux/microblaze/bits/fcntl.h
yann@1819
   193
@@ -45,6 +45,8 @@
yann@1819
   194
 # define O_DIRECTORY	 040000	/* Must be a directory.	 */
yann@1819
   195
 # define O_NOFOLLOW	0100000	/* Do not follow links.	 */
yann@1819
   196
 # define O_DIRECT	0200000	/* Direct disk access.	*/
yann@1819
   197
+# define O_NOATIME     01000000 /* Do not set atime.  */
yann@1819
   198
+# define O_CLOEXEC     02000000 /* set close_on_exec */
yann@1819
   199
 #endif
yann@1819
   200
 
yann@1819
   201
 /* For now Linux has synchronisity options for data and read operations.
yann@1819
   202
diff --git a/libc/sysdeps/linux/mips/bits/fcntl.h b/libc/sysdeps/linux/mips/bits/fcntl.h
yann@1819
   203
index ef015a4..f0072fd 100644
yann@1819
   204
--- a/libc/sysdeps/linux/mips/bits/fcntl.h
yann@1819
   205
+++ b/libc/sysdeps/linux/mips/bits/fcntl.h
yann@1819
   206
@@ -51,6 +51,7 @@
yann@1819
   207
 # define O_DIRECT	0x8000	/* Direct disk access hint.  */
yann@1819
   208
 # define O_DIRECTORY	0x10000	/* Must be a directory.	 */
yann@1819
   209
 # define O_NOATIME	0x40000	/* Do not set atime.  */
yann@1819
   210
+# define O_CLOEXEC	02000000 /* set close_on_exec */
yann@1819
   211
 #endif
yann@1819
   212
 
yann@1819
   213
 /* For now Linux has no synchronisity options for data and read operations.
yann@1819
   214
diff --git a/libc/sysdeps/linux/powerpc/bits/fcntl.h b/libc/sysdeps/linux/powerpc/bits/fcntl.h
yann@1819
   215
index ceb75b4..0759c6a 100644
yann@1819
   216
--- a/libc/sysdeps/linux/powerpc/bits/fcntl.h
yann@1819
   217
+++ b/libc/sysdeps/linux/powerpc/bits/fcntl.h
yann@1819
   218
@@ -50,9 +50,7 @@
yann@1819
   219
 # define O_DIRECTORY	 040000	/* Must be a directory.	 */
yann@1819
   220
 # define O_NOFOLLOW	0100000	/* Do not follow links.	 */
yann@1819
   221
 # define O_NOATIME	01000000 /* Do not set atime.  */
yann@1819
   222
-# if 0
yann@1819
   223
 # define O_CLOEXEC	02000000 /* Set close_on_exec.  */
yann@1819
   224
-# endif
yann@1819
   225
 #endif
yann@1819
   226
 
yann@1819
   227
 #ifdef __USE_LARGEFILE64
yann@1819
   228
diff --git a/libc/sysdeps/linux/sh/bits/fcntl.h b/libc/sysdeps/linux/sh/bits/fcntl.h
yann@1819
   229
index 570484c..adb7377 100644
yann@1819
   230
--- a/libc/sysdeps/linux/sh/bits/fcntl.h
yann@1819
   231
+++ b/libc/sysdeps/linux/sh/bits/fcntl.h
yann@1819
   232
@@ -50,9 +50,7 @@
yann@1819
   233
 # define O_DIRECTORY	0200000	/* Must be a directory.	 */
yann@1819
   234
 # define O_NOFOLLOW	0400000	/* Do not follow links.	 */
yann@1819
   235
 # define O_NOATIME     01000000 /* Do not set atime.  */
yann@1819
   236
-# if 0
yann@1819
   237
 # define O_CLOEXEC     02000000 /* Set close_on_exec.  */
yann@1819
   238
-# endif
yann@1819
   239
 #endif
yann@1819
   240
 
yann@1819
   241
 /* For now Linux has synchronisity options for data and read operations.
yann@1819
   242
diff --git a/libc/sysdeps/linux/sh64/bits/fcntl.h b/libc/sysdeps/linux/sh64/bits/fcntl.h
yann@1819
   243
index 06e8860..245d35a 100644
yann@1819
   244
--- a/libc/sysdeps/linux/sh64/bits/fcntl.h
yann@1819
   245
+++ b/libc/sysdeps/linux/sh64/bits/fcntl.h
yann@1819
   246
@@ -45,6 +45,8 @@
yann@1819
   247
 # define O_DIRECT	 040000	/* Direct disk access.  */
yann@1819
   248
 # define O_DIRECTORY	0200000	/* Must be a directory.  */
yann@1819
   249
 # define O_NOFOLLOW	0400000	/* Do not follow links.  */
yann@1819
   250
+# define O_NOATIME     01000000 /* Do not set atime.  */
yann@1819
   251
+# define O_CLOEXEC     02000000 /* set close_on_exec */
yann@1819
   252
 #endif
yann@1819
   253
 
yann@1819
   254
 /* For now Linux has synchronisity options for data and read operations.
yann@1819
   255
diff --git a/libc/sysdeps/linux/sparc/bits/fcntl.h b/libc/sysdeps/linux/sparc/bits/fcntl.h
yann@1819
   256
index 29c09a9..31a6d9b 100644
yann@1819
   257
--- a/libc/sysdeps/linux/sparc/bits/fcntl.h
yann@1819
   258
+++ b/libc/sysdeps/linux/sparc/bits/fcntl.h
yann@1819
   259
@@ -49,9 +49,7 @@
yann@1819
   260
 # define O_NOFOLLOW	0x20000 /* don't follow links */
yann@1819
   261
 # define O_DIRECT	0x100000 /* direct disk access hint */
yann@1819
   262
 # define O_NOATIME	0x200000 /* Do not set atime.  */
yann@1819
   263
-# if 0
yann@1819
   264
 # define O_CLOEXEC	0x400000 /* Set close_on_exit.  */
yann@1819
   265
-# endif
yann@1819
   266
 #endif
yann@1819
   267
 
yann@1819
   268
 #ifdef __USE_LARGEFILE64
yann@1819
   269
diff --git a/libc/sysdeps/linux/x86_64/bits/fcntl.h b/libc/sysdeps/linux/x86_64/bits/fcntl.h
yann@1819
   270
index be00e4a..f1cf388 100644
yann@1819
   271
--- a/libc/sysdeps/linux/x86_64/bits/fcntl.h
yann@1819
   272
+++ b/libc/sysdeps/linux/x86_64/bits/fcntl.h
yann@1819
   273
@@ -50,9 +50,7 @@
yann@1819
   274
 # define O_DIRECTORY	0200000	/* Must be a directory.	 */
yann@1819
   275
 # define O_NOFOLLOW	0400000	/* Do not follow links.	 */
yann@1819
   276
 # define O_NOATIME     01000000 /* Do not set atime.  */
yann@1819
   277
-# if 0
yann@1819
   278
 # define O_CLOEXEC     02000000 /* Set close_on_exec.  */
yann@1819
   279
-# endif
yann@1819
   280
 #endif
yann@1819
   281
 
yann@1819
   282
 /* For now Linux has synchronisity options for data and read operations.
yann@1819
   283
diff --git a/libc/sysdeps/linux/xtensa/bits/fcntl.h b/libc/sysdeps/linux/xtensa/bits/fcntl.h
yann@1819
   284
index a89362e..921a626 100644
yann@1819
   285
--- a/libc/sysdeps/linux/xtensa/bits/fcntl.h
yann@1819
   286
+++ b/libc/sysdeps/linux/xtensa/bits/fcntl.h
yann@1819
   287
@@ -50,6 +50,7 @@
yann@1819
   288
 # define O_DIRECTORY	0200000	/* Must be a directory.	 */
yann@1819
   289
 # define O_NOFOLLOW	0400000	/* Do not follow links.	 */
yann@1819
   290
 # define O_NOATIME     01000000 /* Do not set atime.  */
yann@1819
   291
+# define O_CLOEXEC     02000000 /* set close_on_exec */
yann@1819
   292
 #endif
yann@1819
   293
 
yann@1819
   294
 /* For now Linux has synchronisity options for data and read operations.
yann@1819
   295
-- 
yann@1819
   296
1.6.6.1
yann@1819
   297