summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@redhat.com>2011-11-07 15:07:31 +0100
committerAndreas Schwab <schwab@redhat.com>2011-11-07 15:20:59 +0100
commit7583a88d1c7170caad26966bcea8bfc2c92093ba (patch)
treed21600c563ef8cdcad2d71dc0acfed02b7c498a6
parentae1bc2fa1c58b13ffa83483c24e547148762e24f (diff)
downloadglibc-7583a88d1c7170caad26966bcea8bfc2c92093ba.tar.gz
glibc-7583a88d1c7170caad26966bcea8bfc2c92093ba.tar.xz
glibc-7583a88d1c7170caad26966bcea8bfc2c92093ba.zip
Fix locking in _IO_flush_all_lockp
-rw-r--r--ChangeLog3
-rw-r--r--libio/genops.c4
2 files changed, 5 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index b09f5efe64..3a71044b6d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2011-11-07  Andreas Schwab  <schwab@redhat.com>
 
+	* libio/genops.c (_IO_flush_all_lockp): Only register cleanup
+	handler when locking.
+
 	* nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn):
 	Fix size of allocated buffer.
 
diff --git a/libio/genops.c b/libio/genops.c
index 5d21c42404..bb40c34356 100644
--- a/libio/genops.c
+++ b/libio/genops.c
@@ -826,7 +826,7 @@ _IO_flush_all_lockp (int do_lock)
   int last_stamp;
 
 #ifdef _IO_MTSAFE_IO
-  _IO_cleanup_region_start_noarg (flush_cleanup);
+  __libc_cleanup_region_start (do_lock, flush_cleanup, 0);
   if (do_lock)
     _IO_lock_lock (list_all_lock);
 #endif
@@ -866,7 +866,7 @@ _IO_flush_all_lockp (int do_lock)
 #ifdef _IO_MTSAFE_IO
   if (do_lock)
     _IO_lock_unlock (list_all_lock);
-  _IO_cleanup_region_end (0);
+  __libc_cleanup_region_end (0);
 #endif
 
   return result;