Hello Wenruo and Dave,
This mini-series fixes two build warnings found while cross-compiling for arm,
using openSUSE's cross-arm-binutils and cross-arm-none-gcc9 packages.
Replacing BUG_ON() with btrfs_crit() error handling is noble work, but please
be careful not to hardcode format specifiers for x86_64's size_t.
https://www.kernel.org/doc/Documentation/printk-formats.txt
In one case it could've been noticed during review, in another it was hidden
through a macro and would've only been found through compile-testing.
Probably a 32-bit i386 build would do; otherwise ARCH=arm multi_v7_defconfig
plus CONFIG_BTRFS_FS should reproduce.
It's around for maybe three weeks, so I wonder why kbuild bot didn't catch it.
Cheers,
Andreas
Andreas Färber (2):
btrfs: tree-checker: Fix error format string
btrfs: extent-tree: Fix error format string
fs/btrfs/extent-tree.c | 2 +-
fs/btrfs/tree-checker.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
--
2.16.4
From: Andreas Färber <[email protected]>
sizeof() returns type size_t, thus we need %zu instead of %lu.
This fixes the following build warning on 32-bit arm:
In file included from ../include/linux/printk.h:7,
from ../include/linux/kernel.h:15,
from ../include/asm-generic/bug.h:19,
from ../arch/arm/include/asm/bug.h:60,
from ../include/linux/bug.h:5,
from ../include/linux/thread_info.h:12,
from ../include/asm-generic/current.h:5,
from ./arch/arm/include/generated/asm/current.h:1,
from ../include/linux/sched.h:12,
from ../fs/btrfs/extent-tree.c:6:
../fs/btrfs/extent-tree.c: In function '__btrfs_free_extent':
../include/linux/kern_levels.h:5:18: warning: format '%lu' expects argument of type 'long unsigned int', but argument 8 has type 'unsigned int' [-Wformat=]
5 | #define KERN_SOH "\001" /* ASCII Start Of Header */
| ^~~~~~
../include/linux/kern_levels.h:10:19: note: in expansion of macro 'KERN_SOH'
10 | #define KERN_CRIT KERN_SOH "2" /* critical conditions */
| ^~~~~~~~
../fs/btrfs/ctree.h:2986:24: note: in expansion of macro 'KERN_CRIT'
2986 | btrfs_printk(fs_info, KERN_CRIT fmt, ##args)
| ^~~~~~~~~
../fs/btrfs/extent-tree.c:3207:4: note: in expansion of macro 'btrfs_crit'
3207 | btrfs_crit(info,
| ^~~~~~~~~~
../fs/btrfs/extent-tree.c:3208:83: note: format string is defined here
3208 | "invalid extent item size for key (%llu, %u, %llu) owner %llu, has %u expect >= %lu",
| ~~^
| |
| long unsigned int
| %u
Fixes: 0c171e9095e4 ("btrfs: extent-tree: Kill BUG_ON() in __btrfs_free_extent() and do better comment")
Cc: Qu Wenruo <[email protected]>
Cc: David Sterba <[email protected]>
Signed-off-by: Andreas Färber <[email protected]>
---
fs/btrfs/extent-tree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 7c7a3e30e917..631c9743ddc7 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -3205,7 +3205,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
struct btrfs_tree_block_info *bi;
if (unlikely(item_size < sizeof(*ei) + sizeof(*bi))) {
btrfs_crit(info,
-"invalid extent item size for key (%llu, %u, %llu) owner %llu, has %u expect >= %lu",
+"invalid extent item size for key (%llu, %u, %llu) owner %llu, has %u expect >= %zu",
key.objectid, key.type, key.offset,
owner_objectid, item_size,
sizeof(*ei) + sizeof(*bi));
--
2.16.4