]> xenbits.xensource.com Git - qemu-xen.git/commit
block/graph-lock: Make WITH_GRAPH_RDLOCK_GUARD() fully checked
authorKevin Wolf <kwolf@redhat.com>
Thu, 27 Jun 2024 18:12:45 +0000 (20:12 +0200)
committerKevin Wolf <kwolf@redhat.com>
Tue, 6 Aug 2024 18:12:39 +0000 (20:12 +0200)
commit7e1711164683b1036f7da5f87c5f66c17a043ab1
tree1837e95dfae1161ff325b7aba492e86316b9638a
parentd5f6cbb263662af585b866481382c3f5ba5cd638
block/graph-lock: Make WITH_GRAPH_RDLOCK_GUARD() fully checked

Upstream clang 18 (and backports to clang 17 in Fedora and RHEL)
implemented support for __attribute__((cleanup())) in its Thread Safety
Analysis, so we can now actually have a proper implementation of
WITH_GRAPH_RDLOCK_GUARD() that understands when we acquire and when we
release the lock.

-Wthread-safety is now only enabled if the compiler is new enough to
understand this pattern. In theory, we could have used some #ifdefs to
keep the existing basic checks on old compilers, but as long as someone
runs a newer compiler (and our CI does), we will catch locking problems,
so it's probably not worth keeping multiple implementations for this.

The implementation can't use g_autoptr any more because the glib macros
define wrapper functions that don't have the right TSA attributes, so
the compiler would complain about them. Just use the cleanup attribute
directly instead.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-ID: <20240627181245.281403-3-kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
include/block/graph-lock.h
meson.build