Re: fs/zonefs/./trace.h:22:1: sparse: sparse: cast to restricted blk_opf_t

From: Bart Van Assche
Date: Wed Aug 10 2022 - 14:08:20 EST


On 8/10/22 07:36, Damien Le Moal wrote:
On 2022/08/08 8:37, Bart Van Assche wrote:
Thanks for having taken a look. Please help with verifying whether the
following patch is sufficient to fix the reported warning: "[PATCH]
tracing: Suppress sparse warnings triggered by is_signed_type()"
(https://lore.kernel.org/all/20220717151047.19220-1-bvanassche@xxxxxxx/).

With the current Linus tree, I do not see this sparse warning. However, applying
the above patch, "make M=fs/zonefs C=1" generates a lot of warnings:

That doesn't make sense to me. My patch reduces the number of sparse warnings that are reported.

make -j64 M=fs/zonefs C=1
CC [M] fs/zonefs/super.o
CC [M] fs/zonefs/sysfs.o
CHECK fs/zonefs/sysfs.c
CHECK fs/zonefs/super.c
fs/zonefs/sysfs.c: note: in included file (through include/linux/bitops.h,
include/linux/kernel.h, arch/x86/include/asm/percpu.h,
arch/x86/include/asm/preempt.h, include/linux/preempt.h,
include/linux/spinlock.h, ...):
./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'

I think that you are hitting a bug in sparse. See also https://lore.kernel.org/all/e91d351c-3c16-e48d-7e9d-9f096c4acbc9@xxxxxxxxxx/T/. I also see the above warnings if I use the sparse binary from Debian testing. I do not see these sparse warnings if I download the sparse source code and compile that source code myself.

Bart.