2022-05-19 07:10:29

by Zhang Jianhua

[permalink] [raw]
Subject: [PATCH -next v2] fs-verity: Use struct_size() helper in enable_verity()

Make use of the struct_size() helper to calculate the size of struct
fsverity_digest instead of an open-coded version, in order to get rid
of the warning by sparse.

Also, address the following sparse warning:
fs/verity/enable.c:205:28: warning: using sizeof on a flexible structure

Signed-off-by: Zhang Jianhua <[email protected]>
---
v2:
- change the commit message from bugfix to cleanup

fs/verity/enable.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/verity/enable.c b/fs/verity/enable.c
index f75d2c010f36..075dc0aa5416 100644
--- a/fs/verity/enable.c
+++ b/fs/verity/enable.c
@@ -201,7 +201,7 @@ static int enable_verity(struct file *filp,
const struct fsverity_operations *vops = inode->i_sb->s_vop;
struct merkle_tree_params params = { };
struct fsverity_descriptor *desc;
- size_t desc_size = sizeof(*desc) + arg->sig_size;
+ size_t desc_size = struct_size(desc, signature, arg->sig_size);
struct fsverity_info *vi;
int err;

--
2.31.0



2022-05-19 07:52:05

by Zhang Jianhua

[permalink] [raw]
Subject: Re: [PATCH -next v2] fs-verity: Use struct_size() helper in enable_verity()

Thanks, I will do more work about sparse and maybe find some answers.


Zhang Jianhua

在 2022/5/19 12:22, Eric Biggers 写道:
> [Please use reply all, not just reply!]
>
> On Thu, May 19, 2022 at 11:54:48AM +0800, zhangjianhua (E) wrote:
>> Hi Eric
>>
>> The warnings in commit message are from the build log in Jan 2022, and I
>> find these sizeof are still here, so I submit
>>
>> these two patches. I build the kernel just now and encounter the same
>> situation with you, there are lots of warnings.
>>
>> Maybe you are right, there should be some mechanism to solve this problem
>> completely.
>>
>>
> I've updated the commit message and applied this patch, but not the other one,
> as the other one wasn't actually dealing with a variable length which made it
> pretty much pointless, as I mentioned.
>
> If you'd like to look into making sparse enable this warning by default, I'd
> certainly encourage you to do so. But it looks like the warning itself could
> use some more work. It probably should only warn if the
> sizeof(struct_with_flexible_array) is actually being added to another value, and
> where that value is not a compile-time constant.
>
> - Eric
> .

2022-05-19 09:16:17

by Eric Biggers

[permalink] [raw]
Subject: Re: [PATCH -next v2] fs-verity: Use struct_size() helper in enable_verity()

On Thu, May 19, 2022 at 10:24:50AM +0800, Zhang Jianhua wrote:
> Also, address the following sparse warning:
> fs/verity/enable.c:205:28: warning: using sizeof on a flexible structure

How can I reproduce this warning? I am using the latest version of sparse, and
I don't see any of these warnings you're reporting.

$ sparse --version
v0.6.4
$ make C=2 fs/verity/
CHECK scripts/mod/empty.c
CALL scripts/checksyscalls.sh
CALL scripts/atomic/check-atomics.sh
DESCEND objtool
CHECK fs/verity/enable.c
CHECK fs/verity/hash_algs.c
CHECK fs/verity/init.c
CHECK fs/verity/measure.c
CHECK fs/verity/open.c
CHECK fs/verity/read_metadata.c
CHECK fs/verity/verify.c
CHECK fs/verity/signature.c

- Eric

2022-05-20 09:07:04

by Eric Biggers

[permalink] [raw]
Subject: Re: [PATCH -next v2] fs-verity: Use struct_size() helper in enable_verity()

[Please use reply all, not just reply!]

On Thu, May 19, 2022 at 11:54:48AM +0800, zhangjianhua (E) wrote:
> Hi Eric
>
> The warnings in commit message are from the build log in Jan 2022, and I
> find these sizeof are still here, so I submit
>
> these two patches. I build the kernel just now and encounter the same
> situation with you, there are lots of warnings.
>
> Maybe you are right, there should be some mechanism to solve this problem
> completely.
>
>

I've updated the commit message and applied this patch, but not the other one,
as the other one wasn't actually dealing with a variable length which made it
pretty much pointless, as I mentioned.

If you'd like to look into making sparse enable this warning by default, I'd
certainly encourage you to do so. But it looks like the warning itself could
use some more work. It probably should only warn if the
sizeof(struct_with_flexible_array) is actually being added to another value, and
where that value is not a compile-time constant.

- Eric