* [bcachefs:bcachefs-testing 79/139] fs/bcachefs/btree_io.c:893:6: warning: format specifies type 'unsigned long' but the argument has type 'unsigned int'
@ 2024-04-13 7:03 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-04-13 7:03 UTC (permalink / raw)
To: Kent Overstreet; +Cc: llvm, oe-kbuild-all, Kent Overstreet
tree: https://evilpiepirate.org/git/bcachefs.git bcachefs-testing
head: c5ff0e7dfafa4898b8cc873266d71b465bb062dc
commit: efa71a63d7d88348ef4dc6421e353f5bb8dd3662 [79/139] bcachefs: Check for packed bkeys that are too big
config: hexagon-allyesconfig (https://download.01.org/0day-ci/archive/20240413/202404131536.HdAMBOVc-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 8b3b4a92adee40483c27f26c478a384cd69c6f05)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240413/202404131536.HdAMBOVc-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404131536.HdAMBOVc-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from fs/bcachefs/btree_io.c:3:
In file included from fs/bcachefs/bcachefs.h:188:
In file included from include/linux/bio.h:10:
In file included from include/linux/blk_types.h:10:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:10:
In file included from include/linux/mm.h:2208:
include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
In file included from fs/bcachefs/btree_io.c:3:
In file included from fs/bcachefs/bcachefs.h:188:
In file included from include/linux/bio.h:10:
In file included from include/linux/blk_types.h:10:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:12:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:328:
include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
547 | val = __raw_readb(PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
560 | val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
| ~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
37 | #define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
| ^
In file included from fs/bcachefs/btree_io.c:3:
In file included from fs/bcachefs/bcachefs.h:188:
In file included from include/linux/bio.h:10:
In file included from include/linux/blk_types.h:10:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:12:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:328:
include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
573 | val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
| ~~~~~~~~~~ ^
include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
35 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
| ^
In file included from fs/bcachefs/btree_io.c:3:
In file included from fs/bcachefs/bcachefs.h:188:
In file included from include/linux/bio.h:10:
In file included from include/linux/blk_types.h:10:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:12:
In file included from include/linux/hardirq.h:11:
In file included from ./arch/hexagon/include/generated/asm/hardirq.h:1:
In file included from include/asm-generic/hardirq.h:17:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/hexagon/include/asm/io.h:328:
include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
584 | __raw_writeb(value, PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
594 | __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
604 | __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
>> fs/bcachefs/btree_io.c:893:6: warning: format specifies type 'unsigned long' but the argument has type 'unsigned int' [-Wformat]
887 | if (btree_err_on(!bkeyp_u64s_valid(&b->format, k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
888 | -BCH_ERR_btree_node_read_err_fixable,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
889 | c, NULL, b, i,
| ~~~~~~~~~~~~~~
890 | btree_node_bkey_bad_u64s,
| ~~~~~~~~~~~~~~~~~~~~~~~~~
891 | "bad k->u64s %u (min %u max %lu)", k->u64s,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| %u
892 | bkeyp_key_u64s(&b->format, k),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
893 | U8_MAX - BKEY_U64s + bkeyp_key_u64s(&b->format, k)))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/limits.h:15:17: note: expanded from macro 'U8_MAX'
15 | #define U8_MAX ((u8)~0U)
| ^
fs/bcachefs/btree_io.c:613:53: note: expanded from macro 'btree_err_on'
613 | #define btree_err_on(cond, ...) ((cond) ? btree_err(__VA_ARGS__) : false)
| ~~~~~~~~~~^~~~~~~~~~~~
fs/bcachefs/btree_io.c:603:18: note: expanded from macro 'btree_err'
603 | msg, ##__VA_ARGS__); \
| ~~~ ^~~~~~~~~~~
fs/bcachefs/btree_io.c:1870:36: warning: bitwise operation between different enumeration types ('enum bch_watermark' and 'enum bch_trans_commit_flags') [-Wenum-enum-conversion]
1870 | BCH_WATERMARK_interior_updates|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
1871 | BCH_TRANS_COMMIT_journal_reclaim|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fs/bcachefs/btree_update.h:188:71: note: expanded from macro 'bch2_trans_do'
188 | bch2_trans_run(_c, commit_do(trans, _disk_res, _journal_seq, _flags, _do))
| ^~~
fs/bcachefs/btree_update.h:172:25: note: expanded from macro 'commit_do'
172 | lockrestart_do(_trans, _do ?: bch2_trans_commit(_trans, (_disk_res),\
| ^~~
fs/bcachefs/btree_iter.h:662:11: note: expanded from macro 'lockrestart_do'
662 | _ret2 = (_do); \
| ^~~
fs/bcachefs/btree_update.h:182:14: note: expanded from macro 'bch2_trans_run'
182 | int _ret = (_do); \
| ^~~
9 warnings generated.
vim +893 fs/bcachefs/btree_io.c
853
854 static int validate_bset_keys(struct bch_fs *c, struct btree *b,
855 struct bset *i, int write,
856 bool have_retry, bool *saw_error)
857 {
858 unsigned version = le16_to_cpu(i->version);
859 struct bkey_packed *k, *prev = NULL;
860 struct printbuf buf = PRINTBUF;
861 bool updated_range = b->key.k.type == KEY_TYPE_btree_ptr_v2 &&
862 BTREE_PTR_RANGE_UPDATED(&bkey_i_to_btree_ptr_v2(&b->key)->v);
863 int ret = 0;
864
865 for (k = i->start;
866 k != vstruct_last(i);) {
867 struct bkey_s u;
868 struct bkey tmp;
869 unsigned next_good_key;
870
871 if (btree_err_on(bkey_p_next(k) > vstruct_last(i),
872 -BCH_ERR_btree_node_read_err_fixable,
873 c, NULL, b, i,
874 btree_node_bkey_past_bset_end,
875 "key extends past end of bset")) {
876 i->u64s = cpu_to_le16((u64 *) k - i->_data);
877 break;
878 }
879
880 if (btree_err_on(k->format > KEY_FORMAT_CURRENT,
881 -BCH_ERR_btree_node_read_err_fixable,
882 c, NULL, b, i,
883 btree_node_bkey_bad_format,
884 "invalid bkey format %u", k->format))
885 goto drop_this_key;
886
887 if (btree_err_on(!bkeyp_u64s_valid(&b->format, k),
888 -BCH_ERR_btree_node_read_err_fixable,
889 c, NULL, b, i,
890 btree_node_bkey_bad_u64s,
891 "bad k->u64s %u (min %u max %lu)", k->u64s,
892 bkeyp_key_u64s(&b->format, k),
> 893 U8_MAX - BKEY_U64s + bkeyp_key_u64s(&b->format, k)))
894 goto drop_this_key;
895
896 if (!write)
897 bch2_bkey_compat(b->c.level, b->c.btree_id, version,
898 BSET_BIG_ENDIAN(i), write,
899 &b->format, k);
900
901 u = __bkey_disassemble(b, k, &tmp);
902
903 printbuf_reset(&buf);
904 if (bset_key_invalid(c, b, u.s_c, updated_range, write, &buf)) {
905 printbuf_reset(&buf);
906 bset_key_invalid(c, b, u.s_c, updated_range, write, &buf);
907 prt_printf(&buf, "\n ");
908 bch2_bkey_val_to_text(&buf, c, u.s_c);
909
910 btree_err(-BCH_ERR_btree_node_read_err_fixable,
911 c, NULL, b, i,
912 btree_node_bad_bkey,
913 "invalid bkey: %s", buf.buf);
914 goto drop_this_key;
915 }
916
917 if (write)
918 bch2_bkey_compat(b->c.level, b->c.btree_id, version,
919 BSET_BIG_ENDIAN(i), write,
920 &b->format, k);
921
922 if (prev && bkey_iter_cmp(b, prev, k) > 0) {
923 struct bkey up = bkey_unpack_key(b, prev);
924
925 printbuf_reset(&buf);
926 prt_printf(&buf, "keys out of order: ");
927 bch2_bkey_to_text(&buf, &up);
928 prt_printf(&buf, " > ");
929 bch2_bkey_to_text(&buf, u.k);
930
931 if (btree_err(-BCH_ERR_btree_node_read_err_fixable,
932 c, NULL, b, i,
933 btree_node_bkey_out_of_order,
934 "%s", buf.buf))
935 goto drop_this_key;
936 }
937
938 prev = k;
939 k = bkey_p_next(k);
940 continue;
941 drop_this_key:
942 next_good_key = k->u64s;
943
944 if (!next_good_key ||
945 (BSET_BIG_ENDIAN(i) == CPU_BIG_ENDIAN &&
946 version >= bcachefs_metadata_version_snapshot)) {
947 /*
948 * only do scanning if bch2_bkey_compat() has nothing to
949 * do
950 */
951
952 if (!bkey_packed_valid(c, b, i, (void *) ((u64 *) k + next_good_key))) {
953 for (next_good_key = 1;
954 next_good_key < (u64 *) vstruct_last(i) - (u64 *) k;
955 next_good_key++)
956 if (bkey_packed_valid(c, b, i, (void *) ((u64 *) k + next_good_key)))
957 goto got_good_key;
958 }
959
960 /*
961 * didn't find a good key, have to truncate the rest of
962 * the bset
963 */
964 next_good_key = (u64 *) vstruct_last(i) - (u64 *) k;
965 }
966 got_good_key:
967 le16_add_cpu(&i->u64s, -next_good_key);
968 memmove_u64s_down(k, bkey_p_next(k), (u64 *) vstruct_end(i) - (u64 *) k);
969 }
970 fsck_err:
971 printbuf_exit(&buf);
972 return ret;
973 }
974
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-04-13 7:04 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-13 7:03 [bcachefs:bcachefs-testing 79/139] fs/bcachefs/btree_io.c:893:6: warning: format specifies type 'unsigned long' but the argument has type 'unsigned int' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.