All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.