2023-04-26 12:08:19

by Anastasia Belova

[permalink] [raw]
Subject: [PATCH] btrfs: parent bytenr must be aligned to sector size

From: Anastasia Belova <[email protected]>

Change nodesize to sectorsize in alignment check
in print_extent_item. Change requirement in comment.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: ea57788eb76d ("btrfs: require only sector size alignment for parent eb bytenr")
Signed-off-by: Anastasia Belova <[email protected]>
---
fs/btrfs/print-tree.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/btrfs/print-tree.c b/fs/btrfs/print-tree.c
index b93c96213304..cee005fb8209 100644
--- a/fs/btrfs/print-tree.c
+++ b/fs/btrfs/print-tree.c
@@ -152,9 +152,9 @@ static void print_extent_item(struct extent_buffer *eb, int slot, int type)
offset, btrfs_shared_data_ref_count(eb, sref));
/*
* offset is supposed to be a tree block which
- * must be aligned to nodesize.
+ * must be aligned to sectorsize.
*/
- if (!IS_ALIGNED(offset, eb->fs_info->nodesize))
+ if (!IS_ALIGNED(offset, eb->fs_info->sectorsize))
pr_info(
"\t\t\t(parent %llu not aligned to sectorsize %u)\n",
offset, eb->fs_info->sectorsize);
--
2.30.2


2023-04-26 12:30:47

by Qu Wenruo

[permalink] [raw]
Subject: Re: [PATCH] btrfs: parent bytenr must be aligned to sector size



On 2023/4/26 19:53, Анастасия Белова wrote:
> From: Anastasia Belova <[email protected]>
>
> Change nodesize to sectorsize in alignment check
> in print_extent_item. Change requirement in comment.
>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>
> Fixes: ea57788eb76d ("btrfs: require only sector size alignment for parent eb bytenr")
> Signed-off-by: Anastasia Belova <[email protected]>

Reviewed-by: Qu Wenruo <[email protected]>

A little surprised that a static checker can even find such hidden problem.

Thanks,
Qu
> ---
> fs/btrfs/print-tree.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/btrfs/print-tree.c b/fs/btrfs/print-tree.c
> index b93c96213304..cee005fb8209 100644
> --- a/fs/btrfs/print-tree.c
> +++ b/fs/btrfs/print-tree.c
> @@ -152,9 +152,9 @@ static void print_extent_item(struct extent_buffer *eb, int slot, int type)
> offset, btrfs_shared_data_ref_count(eb, sref));
> /*
> * offset is supposed to be a tree block which
> - * must be aligned to nodesize.
> + * must be aligned to sectorsize.
> */
> - if (!IS_ALIGNED(offset, eb->fs_info->nodesize))
> + if (!IS_ALIGNED(offset, eb->fs_info->sectorsize))
> pr_info(
> "\t\t\t(parent %llu not aligned to sectorsize %u)\n",
> offset, eb->fs_info->sectorsize);

2023-04-28 16:53:35

by David Sterba

[permalink] [raw]
Subject: Re: [PATCH] btrfs: parent bytenr must be aligned to sector size

On Wed, Apr 26, 2023 at 02:53:23PM +0300, Анастасия Белова wrote:
> From: Anastasia Belova <[email protected]>
>
> Change nodesize to sectorsize in alignment check
> in print_extent_item. Change requirement in comment.
>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>
> Fixes: ea57788eb76d ("btrfs: require only sector size alignment for parent eb bytenr")
> Signed-off-by: Anastasia Belova <[email protected]>

Added to misc-next, thanks.

2023-04-28 16:54:31

by David Sterba

[permalink] [raw]
Subject: Re: [PATCH] btrfs: parent bytenr must be aligned to sector size

On Wed, Apr 26, 2023 at 08:25:14PM +0800, Qu Wenruo wrote:
>
>
> On 2023/4/26 19:53, Анастасия Белова wrote:
> > From: Anastasia Belova <[email protected]>
> >
> > Change nodesize to sectorsize in alignment check
> > in print_extent_item. Change requirement in comment.
> >
> > Found by Linux Verification Center (linuxtesting.org) with SVACE.
> >
> > Fixes: ea57788eb76d ("btrfs: require only sector size alignment for parent eb bytenr")
> > Signed-off-by: Anastasia Belova <[email protected]>
>
> Reviewed-by: Qu Wenruo <[email protected]>
>
> A little surprised that a static checker can even find such hidden problem.

I've seen in Coverity a fuzzy report like "there are 8 cases that do
thing X and this one does not, is it expected?" which is basically just
pattern matching but can be caused by copy&paste mistakes.