fix AS-safety of close when aio is in use and fd map is expanded
authorRich Felker <dalias@aerifal.cx>
Fri, 7 Oct 2022 22:51:36 +0000 (18:51 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 19 Oct 2022 18:01:32 +0000 (14:01 -0400)
commitd8f35e29d0e35a90f44c04de585470c211afddf9
treea00ce19cc0fe9699ab2ad5baef543a2d621ad276
parent26c76a908b8613ea8a77d40f3bd51b02f984501c
fix AS-safety of close when aio is in use and fd map is expanded

the aio operations that lead to calling __aio_get_queue with the
possibility to expand the fd map are not AS-safe, but if they are
interrupted by a signal handler, the signal handler may call close,
which is required to be AS-safe. due to __aio_get_queue taking the
write lock without blocking signals, such a call to close from a
signal handler could deadlock.

change __aio_get_queue to block signals if it needs to obtain a write
lock, and restore when finished.
src/aio/aio.c