From a13a50047ef1814a7bda2392f728bf28f81b17ce Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Sun, 2 May 2021 18:16:17 +0200 Subject: Fortran: Async I/O - avoid unlocked unlocking [PR100352] Follow up to PR100352, which moved unit unlocking to st_*_done_worker to avoid lock order reversal; however, as async_io uses a different lock, the (unlocked locked) unit lock shall not be unlocked there. libgfortran/ChangeLog: PR libgomp/100352 * io/transfer.c (st_read_done_worker, st_write_done_worker): Add new arg whether to unlock unit. (st_read_done, st_write_done): Call it with true. * io/async.c (async_io): Call it with false. * io/io.h (st_write_done_worker, st_read_done_worker): Update prototype. --- libgfortran/io/io.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libgfortran/io/io.h') diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h index e0007c6..3355bc2 100644 --- a/libgfortran/io/io.h +++ b/libgfortran/io/io.h @@ -1083,11 +1083,11 @@ default_precision_for_float (int kind) #endif extern void -st_write_done_worker (st_parameter_dt *); +st_write_done_worker (st_parameter_dt *, bool); internal_proto (st_write_done_worker); extern void -st_read_done_worker (st_parameter_dt *); +st_read_done_worker (st_parameter_dt *, bool); internal_proto (st_read_done_worker); extern void -- cgit v1.1