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

Анастасия Белова posted 1 patch 2 years, 7 months ago
fs/btrfs/print-tree.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH] btrfs: parent bytenr must be aligned to sector size
Posted by Анастасия Белова 2 years, 7 months ago
From: Anastasia Belova <abelova@astralinux.ru>

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 <abelova@astralinux.ru>
---
 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
Re: [PATCH] btrfs: parent bytenr must be aligned to sector size
Posted by David Sterba 2 years, 7 months ago
On Wed, Apr 26, 2023 at 02:53:23PM +0300, Анастасия Белова wrote:
> From: Anastasia Belova <abelova@astralinux.ru>
> 
> 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 <abelova@astralinux.ru>

Added to misc-next, thanks.
Re: [PATCH] btrfs: parent bytenr must be aligned to sector size
Posted by Qu Wenruo 2 years, 7 months ago

On 2023/4/26 19:53, Анастасия Белова wrote:
> From: Anastasia Belova <abelova@astralinux.ru>
> 
> 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 <abelova@astralinux.ru>

Reviewed-by: Qu Wenruo <wqu@suse.com>

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);
Re: [PATCH] btrfs: parent bytenr must be aligned to sector size
Posted by David Sterba 2 years, 7 months ago
On Wed, Apr 26, 2023 at 08:25:14PM +0800, Qu Wenruo wrote:
> 
> 
> On 2023/4/26 19:53, Анастасия Белова wrote:
> > From: Anastasia Belova <abelova@astralinux.ru>
> > 
> > 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 <abelova@astralinux.ru>
> 
> Reviewed-by: Qu Wenruo <wqu@suse.com>
> 
> 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.