Add the lock context annotations that are required by Clang. Enable lock context analysis in the Makefile. Reviewed-by: Sergey Senozhatsky Signed-off-by: Bart Van Assche --- drivers/block/zram/Makefile | 2 ++ drivers/block/zram/zcomp.c | 3 ++- drivers/block/zram/zcomp.h | 6 ++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/block/zram/Makefile b/drivers/block/zram/Makefile index 0fdefd576691..a5663ab01653 100644 --- a/drivers/block/zram/Makefile +++ b/drivers/block/zram/Makefile @@ -1,5 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only +CONTEXT_ANALYSIS := y + zram-y := zcomp.o zram_drv.o zram-$(CONFIG_ZRAM_BACKEND_LZO) += backend_lzorle.o backend_lzo.o diff --git a/drivers/block/zram/zcomp.c b/drivers/block/zram/zcomp.c index 974c4691887e..155dbeacab1b 100644 --- a/drivers/block/zram/zcomp.c +++ b/drivers/block/zram/zcomp.c @@ -112,7 +112,8 @@ ssize_t zcomp_available_show(const char *comp, char *buf, ssize_t at) return at; } -struct zcomp_strm *zcomp_stream_get(struct zcomp *comp) +struct zcomp_strm *__zcomp_stream_get(struct zcomp *comp) + __context_unsafe(uses raw_cpu_ptr()) { for (;;) { struct zcomp_strm *zstrm = raw_cpu_ptr(comp->stream); diff --git a/drivers/block/zram/zcomp.h b/drivers/block/zram/zcomp.h index 81a0f3f6ff48..afe0c1bf348d 100644 --- a/drivers/block/zram/zcomp.h +++ b/drivers/block/zram/zcomp.h @@ -85,8 +85,10 @@ const char *zcomp_lookup_backend_name(const char *comp); struct zcomp *zcomp_create(const char *alg, struct zcomp_params *params); void zcomp_destroy(struct zcomp *comp); -struct zcomp_strm *zcomp_stream_get(struct zcomp *comp); -void zcomp_stream_put(struct zcomp_strm *zstrm); +#define zcomp_stream_get(...) __acquire_ret(__zcomp_stream_get(__VA_ARGS__), &__ret->lock) +struct zcomp_strm *__zcomp_stream_get(struct zcomp *comp); +void zcomp_stream_put(struct zcomp_strm *zstrm) + __releases(&zstrm->lock); int zcomp_compress(struct zcomp *comp, struct zcomp_strm *zstrm, const void *src, unsigned int *dst_len);