summaryrefslogtreecommitdiff
path: root/libc/stdio/refill.c
diff options
context:
space:
mode:
authorRyan Prichard <rprichard@google.com>2019-04-30 14:47:34 -0700
committerRyan Prichard <rprichard@google.com>2019-05-06 16:46:30 -0700
commitc8e263becfa01afecba84edf6a8a18da27a78e89 (patch)
tree701c30ea09b1e4529b0e1ee2f6246115f2bf2326 /libc/stdio/refill.c
parent125d32cb469d8e31f656543c3ad7b82154bc1689 (diff)
Revert fwalk/sfp locking to fix concurrent reads
The locking can fail in a couple of ways: - A concurrent fread from an unbuffered or line-buffered file flushes the output of other line-buffered files, and if _fwalk locks every file, then the fread blocks until other file reads have completed. - __sfp can initialize a file lock while _fwalk is locking/unlocking it. For now, revert to the behavior Bionic had in previous releases. This commit reverts the file locking parts of commit 468efc80da2504f4ae7de8b5e137426d44dda9d7. Bug: http://b/131251441 Bug: http://b/130189834 Test: bionic unit tests Change-Id: I9e20b9cd8ccd14e7962f7308e174f08af72b56c6 (cherry picked from commit c485cdb0249415b8aee5968b2b8854921e152854)
Diffstat (limited to 'libc/stdio/refill.c')
-rw-r--r--libc/stdio/refill.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libc/stdio/refill.c b/libc/stdio/refill.c
index cfa2bfd45..1df419180 100644
--- a/libc/stdio/refill.c
+++ b/libc/stdio/refill.c
@@ -40,7 +40,7 @@ static int
lflush(FILE *fp)
{
if ((fp->_flags & (__SLBF|__SWR)) == (__SLBF|__SWR))
- return (__sflush(fp)); /* ignored... */
+ return (__sflush_locked(fp)); /* ignored... */
return (0);
}