patches/uClibc/0.9.30.2/200-clean-up-O_CLOEXEC-handling.patch
author Arnaud Lacombe <lacombar@gmail.com>
Tue Aug 03 06:17:51 2010 +0200 (2010-08-03)
changeset 2064 f5ebe8c429dc
parent 1819 66fcfb3d6745
permissions -rw-r--r--
libc/uClibc: add uClibc 0.9.30.3

This version has been released a couple of month ago, but it never reached
crosstool-ng tree. This may be linked to the fact that the current 0.9.30.2,
once patched, has nothing much different from 0.9.30.3, released.

I'm not including any patch with this upgrade, on purpose.

Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
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