| From 6f2c84721f447d4829cf5c7d3032a840dac7d2fe Mon Sep 17 00:00:00 2001 |
| From: Eric Biggers <ebiggers@google.com> |
| Date: Tue, 11 Aug 2020 18:35:39 -0700 |
| Subject: [PATCH] fs/minix: remove expected error message in block_to_path() |
| |
| commit f666f9fb9a36f1c833b9d18923572f0e4d304754 upstream. |
| |
| When truncating a file to a size within the last allowed logical block, |
| block_to_path() is called with the *next* block. This exceeds the limit, |
| causing the "block %ld too big" error message to be printed. |
| |
| This case isn't actually an error; there are just no more blocks past that |
| point. So, remove this error message. |
| |
| Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") |
| Signed-off-by: Eric Biggers <ebiggers@google.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Cc: Alexander Viro <viro@zeniv.linux.org.uk> |
| Cc: Qiujun Huang <anenbupt@gmail.com> |
| Link: http://lkml.kernel.org/r/20200628060846.682158-7-ebiggers@kernel.org |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/fs/minix/itree_v1.c b/fs/minix/itree_v1.c |
| index 405573a79aab..1fed906042aa 100644 |
| --- a/fs/minix/itree_v1.c |
| +++ b/fs/minix/itree_v1.c |
| @@ -29,12 +29,12 @@ static int block_to_path(struct inode * inode, long block, int offsets[DEPTH]) |
| if (block < 0) { |
| printk("MINIX-fs: block_to_path: block %ld < 0 on dev %pg\n", |
| block, inode->i_sb->s_bdev); |
| - } else if ((u64)block * BLOCK_SIZE >= inode->i_sb->s_maxbytes) { |
| - if (printk_ratelimit()) |
| - printk("MINIX-fs: block_to_path: " |
| - "block %ld too big on dev %pg\n", |
| - block, inode->i_sb->s_bdev); |
| - } else if (block < 7) { |
| + return 0; |
| + } |
| + if ((u64)block * BLOCK_SIZE >= inode->i_sb->s_maxbytes) |
| + return 0; |
| + |
| + if (block < 7) { |
| offsets[n++] = block; |
| } else if ((block -= 7) < 512) { |
| offsets[n++] = 7; |
| diff --git a/fs/minix/itree_v2.c b/fs/minix/itree_v2.c |
| index ee8af2f9e282..9d00f31a2d9d 100644 |
| --- a/fs/minix/itree_v2.c |
| +++ b/fs/minix/itree_v2.c |
| @@ -32,12 +32,12 @@ static int block_to_path(struct inode * inode, long block, int offsets[DEPTH]) |
| if (block < 0) { |
| printk("MINIX-fs: block_to_path: block %ld < 0 on dev %pg\n", |
| block, sb->s_bdev); |
| - } else if ((u64)block * (u64)sb->s_blocksize >= sb->s_maxbytes) { |
| - if (printk_ratelimit()) |
| - printk("MINIX-fs: block_to_path: " |
| - "block %ld too big on dev %pg\n", |
| - block, sb->s_bdev); |
| - } else if (block < DIRCOUNT) { |
| + return 0; |
| + } |
| + if ((u64)block * (u64)sb->s_blocksize >= sb->s_maxbytes) |
| + return 0; |
| + |
| + if (block < DIRCOUNT) { |
| offsets[n++] = block; |
| } else if ((block -= DIRCOUNT) < INDIRCOUNT(sb)) { |
| offsets[n++] = DIRCOUNT; |
| -- |
| 2.27.0 |
| |