diff options
author | Ryan Prichard <rprichard@google.com> | 2019-04-30 14:47:34 -0700 |
---|---|---|
committer | Ryan Prichard <rprichard@google.com> | 2019-05-06 16:46:30 -0700 |
commit | c8e263becfa01afecba84edf6a8a18da27a78e89 (patch) | |
tree | 701c30ea09b1e4529b0e1ee2f6246115f2bf2326 /libc/stdio/refill.c | |
parent | 125d32cb469d8e31f656543c3ad7b82154bc1689 (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.c | 2 |
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); } |