This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] Don't touch user-controlled stdio locks in forked child
- From: Andreas Schwab <schwab at suse dot de>
- To: libc-alpha at sourceware dot org
- Date: Wed, 10 Dec 2014 12:01:02 +0100
- Subject: [PATCH] Don't touch user-controlled stdio locks in forked child
- Authentication-results: sourceware.org; auth=none
The stdio locks for streams with the _IO_USER_LOCK flag should not be
touched by internal code.
Andreas.
[BZ #12847]
* sysdeps/nptl/fork.c (fresetlockfiles): Skip files with
user-controlled locks.
---
sysdeps/nptl/fork.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
index a7dafa8..7ef693d 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -46,7 +46,8 @@ fresetlockfiles (void)
_IO_ITER i;
for (i = _IO_iter_begin(); i != _IO_iter_end(); i = _IO_iter_next(i))
- _IO_lock_init (*((_IO_lock_t *) _IO_iter_file(i)->_lock));
+ if ((_IO_iter_file (i)->_flags & _IO_USER_LOCK) == 0)
+ _IO_lock_init (*((_IO_lock_t *) _IO_iter_file(i)->_lock));
}
--
2.2.0
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."