From: kernel test robot <lkp@intel.com>
To: cros-kernel-buildreports@googlegroups.com
Cc: oe-kbuild-all@lists.linux.dev
Subject: [android-common:android-mainline 2/8] drivers/md/dm-bow.c:97:10: sparse: sparse: symbol 'range_top' was not declared. Should it be static?
Date: Tue, 29 Oct 2024 14:58:12 +0800 [thread overview]
Message-ID: <202410291459.pczz2AmT-lkp@intel.com> (raw)
Hi Paul,
First bad commit (maybe != root cause):
tree: https://android.googlesource.com/kernel/common android-mainline
head: 962c205e7ed308760a15b79cc7ccfd028a013022
commit: 7a96549fc9ff33f14b4ed1b4c5f49a0fb51ce9c9 [2/8] ANDROID: dm-bow: Fix up revert remove dm-bow
config: i386-randconfig-r111-20241028 (https://download.01.org/0day-ci/archive/20241029/202410291459.pczz2AmT-lkp@intel.com/config)
compiler: clang version 19.1.2 (https://github.com/llvm/llvm-project 7ba7d8e2f7b6445b60679da826210cdde29eaf8b)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241029/202410291459.pczz2AmT-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/202410291459.pczz2AmT-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/md/dm-bow.c:97:10: sparse: sparse: symbol 'range_top' was not declared. Should it be static?
>> drivers/md/dm-bow.c:148:6: sparse: sparse: symbol 'add_before' was not declared. Should it be static?
>> drivers/md/dm-bow.c:178:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:178:24: sparse: expected int
drivers/md/dm-bow.c:178:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:186:32: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:186:32: sparse: expected int
drivers/md/dm-bow.c:186:32: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:205:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:205:24: sparse: expected int
drivers/md/dm-bow.c:205:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:282:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:282:24: sparse: expected int
drivers/md/dm-bow.c:282:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:395:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:395:24: sparse: expected int
drivers/md/dm-bow.c:395:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:339:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:339:24: sparse: expected int
drivers/md/dm-bow.c:339:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:344:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:344:24: sparse: expected int
drivers/md/dm-bow.c:344:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:350:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:350:24: sparse: expected int
drivers/md/dm-bow.c:350:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:358:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:358:24: sparse: expected int
drivers/md/dm-bow.c:358:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:422:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:422:24: sparse: expected int
drivers/md/dm-bow.c:422:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:427:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:427:24: sparse: expected int
drivers/md/dm-bow.c:427:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:437:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:437:24: sparse: expected int
drivers/md/dm-bow.c:437:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:443:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:443:24: sparse: expected int
drivers/md/dm-bow.c:443:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:462:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:462:24: sparse: expected int
drivers/md/dm-bow.c:462:24: sparse: got restricted blk_status_t [usertype]
>> drivers/md/dm-bow.c:553:53: sparse: sparse: Using plain integer as NULL pointer
drivers/md/dm-bow.c:820:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:820:24: sparse: expected int
drivers/md/dm-bow.c:820:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:839:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:839:24: sparse: expected int
drivers/md/dm-bow.c:839:24: sparse: got restricted blk_status_t [usertype]
drivers/md/dm-bow.c:932:24: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted blk_status_t [usertype] @@
drivers/md/dm-bow.c:932:24: sparse: expected int
drivers/md/dm-bow.c:932:24: sparse: got restricted blk_status_t [usertype]
>> drivers/md/dm-bow.c:968:32: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted blk_status_t [usertype] bi_status @@ got int [assigned] ret @@
drivers/md/dm-bow.c:968:32: sparse: expected restricted blk_status_t [usertype] bi_status
drivers/md/dm-bow.c:968:32: sparse: got int [assigned] ret
>> drivers/md/dm-bow.c:1096:5: sparse: sparse: symbol 'remap_unless_illegal_trim' was not declared. Should it be static?
>> drivers/md/dm-bow.c:1252:5: sparse: sparse: symbol 'dm_bow_prepare_ioctl' was not declared. Should it be static?
>> drivers/md/dm-bow.c:1284:12: sparse: sparse: symbol 'dm_bow_init' was not declared. Should it be static?
>> drivers/md/dm-bow.c:1293:6: sparse: sparse: symbol 'dm_bow_exit' was not declared. Should it be static?
drivers/md/dm-bow.c: note: in included file (through include/linux/wait.h, include/linux/wait_bit.h, include/linux/fs.h, drivers/md/dm.h):
include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true
include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true
vim +/range_top +97 drivers/md/dm-bow.c
dcb994383d2b16 Paul Lawrence 2023-01-25 96
dcb994383d2b16 Paul Lawrence 2023-01-25 @97 sector_t range_top(struct bow_range *br)
dcb994383d2b16 Paul Lawrence 2023-01-25 98 {
dcb994383d2b16 Paul Lawrence 2023-01-25 99 return container_of(rb_next(&br->node), struct bow_range, node)
dcb994383d2b16 Paul Lawrence 2023-01-25 100 ->sector;
dcb994383d2b16 Paul Lawrence 2023-01-25 101 }
dcb994383d2b16 Paul Lawrence 2023-01-25 102
dcb994383d2b16 Paul Lawrence 2023-01-25 103 u64 range_size(struct bow_range *br)
dcb994383d2b16 Paul Lawrence 2023-01-25 104 {
dcb994383d2b16 Paul Lawrence 2023-01-25 105 return (range_top(br) - br->sector) * SECTOR_SIZE;
dcb994383d2b16 Paul Lawrence 2023-01-25 106 }
dcb994383d2b16 Paul Lawrence 2023-01-25 107
dcb994383d2b16 Paul Lawrence 2023-01-25 108 static sector_t bvec_top(struct bvec_iter *bi_iter)
dcb994383d2b16 Paul Lawrence 2023-01-25 109 {
dcb994383d2b16 Paul Lawrence 2023-01-25 110 return bi_iter->bi_sector + bi_iter->bi_size / SECTOR_SIZE;
dcb994383d2b16 Paul Lawrence 2023-01-25 111 }
dcb994383d2b16 Paul Lawrence 2023-01-25 112
dcb994383d2b16 Paul Lawrence 2023-01-25 113 /*
dcb994383d2b16 Paul Lawrence 2023-01-25 114 * Find the first range that overlaps with bi_iter
dcb994383d2b16 Paul Lawrence 2023-01-25 115 * bi_iter is set to the size of the overlapping sub-range
dcb994383d2b16 Paul Lawrence 2023-01-25 116 */
dcb994383d2b16 Paul Lawrence 2023-01-25 117 static struct bow_range *find_first_overlapping_range(struct rb_root *ranges,
dcb994383d2b16 Paul Lawrence 2023-01-25 118 struct bvec_iter *bi_iter)
dcb994383d2b16 Paul Lawrence 2023-01-25 119 {
dcb994383d2b16 Paul Lawrence 2023-01-25 120 struct rb_node *node = ranges->rb_node;
dcb994383d2b16 Paul Lawrence 2023-01-25 121 struct bow_range *br;
dcb994383d2b16 Paul Lawrence 2023-01-25 122
dcb994383d2b16 Paul Lawrence 2023-01-25 123 while (node) {
dcb994383d2b16 Paul Lawrence 2023-01-25 124 br = container_of(node, struct bow_range, node);
dcb994383d2b16 Paul Lawrence 2023-01-25 125
dcb994383d2b16 Paul Lawrence 2023-01-25 126 if (br->sector <= bi_iter->bi_sector
dcb994383d2b16 Paul Lawrence 2023-01-25 127 && bi_iter->bi_sector < range_top(br))
dcb994383d2b16 Paul Lawrence 2023-01-25 128 break;
dcb994383d2b16 Paul Lawrence 2023-01-25 129
dcb994383d2b16 Paul Lawrence 2023-01-25 130 if (bi_iter->bi_sector < br->sector)
dcb994383d2b16 Paul Lawrence 2023-01-25 131 node = node->rb_left;
dcb994383d2b16 Paul Lawrence 2023-01-25 132 else
dcb994383d2b16 Paul Lawrence 2023-01-25 133 node = node->rb_right;
dcb994383d2b16 Paul Lawrence 2023-01-25 134 }
dcb994383d2b16 Paul Lawrence 2023-01-25 135
dcb994383d2b16 Paul Lawrence 2023-01-25 136 WARN_ON(!node);
dcb994383d2b16 Paul Lawrence 2023-01-25 137 if (!node)
dcb994383d2b16 Paul Lawrence 2023-01-25 138 return NULL;
dcb994383d2b16 Paul Lawrence 2023-01-25 139
dcb994383d2b16 Paul Lawrence 2023-01-25 140 if (range_top(br) - bi_iter->bi_sector
dcb994383d2b16 Paul Lawrence 2023-01-25 141 < bi_iter->bi_size >> SECTOR_SHIFT)
dcb994383d2b16 Paul Lawrence 2023-01-25 142 bi_iter->bi_size = (range_top(br) - bi_iter->bi_sector)
dcb994383d2b16 Paul Lawrence 2023-01-25 143 << SECTOR_SHIFT;
dcb994383d2b16 Paul Lawrence 2023-01-25 144
dcb994383d2b16 Paul Lawrence 2023-01-25 145 return br;
dcb994383d2b16 Paul Lawrence 2023-01-25 146 }
dcb994383d2b16 Paul Lawrence 2023-01-25 147
dcb994383d2b16 Paul Lawrence 2023-01-25 @148 void add_before(struct rb_root *ranges, struct bow_range *new_br,
dcb994383d2b16 Paul Lawrence 2023-01-25 149 struct bow_range *existing)
dcb994383d2b16 Paul Lawrence 2023-01-25 150 {
dcb994383d2b16 Paul Lawrence 2023-01-25 151 struct rb_node *parent = &(existing->node);
dcb994383d2b16 Paul Lawrence 2023-01-25 152 struct rb_node **link = &(parent->rb_left);
dcb994383d2b16 Paul Lawrence 2023-01-25 153
dcb994383d2b16 Paul Lawrence 2023-01-25 154 while (*link) {
dcb994383d2b16 Paul Lawrence 2023-01-25 155 parent = *link;
dcb994383d2b16 Paul Lawrence 2023-01-25 156 link = &((*link)->rb_right);
dcb994383d2b16 Paul Lawrence 2023-01-25 157 }
dcb994383d2b16 Paul Lawrence 2023-01-25 158
dcb994383d2b16 Paul Lawrence 2023-01-25 159 rb_link_node(&new_br->node, parent, link);
dcb994383d2b16 Paul Lawrence 2023-01-25 160 rb_insert_color(&new_br->node, ranges);
dcb994383d2b16 Paul Lawrence 2023-01-25 161 }
dcb994383d2b16 Paul Lawrence 2023-01-25 162
dcb994383d2b16 Paul Lawrence 2023-01-25 163 /*
dcb994383d2b16 Paul Lawrence 2023-01-25 164 * Given a range br returned by find_first_overlapping_range, split br into a
dcb994383d2b16 Paul Lawrence 2023-01-25 165 * leading range, a range matching the bi_iter and a trailing range.
dcb994383d2b16 Paul Lawrence 2023-01-25 166 * Leading and trailing may end up size 0 and will then be deleted. The
dcb994383d2b16 Paul Lawrence 2023-01-25 167 * new range matching the bi_iter is then returned and should have its type
dcb994383d2b16 Paul Lawrence 2023-01-25 168 * and type specific fields populated.
dcb994383d2b16 Paul Lawrence 2023-01-25 169 * If bi_iter runs off the end of the range, bi_iter is truncated accordingly
dcb994383d2b16 Paul Lawrence 2023-01-25 170 */
dcb994383d2b16 Paul Lawrence 2023-01-25 171 static int split_range(struct bow_context *bc, struct bow_range **br,
dcb994383d2b16 Paul Lawrence 2023-01-25 172 struct bvec_iter *bi_iter)
dcb994383d2b16 Paul Lawrence 2023-01-25 173 {
dcb994383d2b16 Paul Lawrence 2023-01-25 174 struct bow_range *new_br;
dcb994383d2b16 Paul Lawrence 2023-01-25 175
dcb994383d2b16 Paul Lawrence 2023-01-25 176 if (bi_iter->bi_sector < (*br)->sector) {
dcb994383d2b16 Paul Lawrence 2023-01-25 177 WARN_ON(true);
dcb994383d2b16 Paul Lawrence 2023-01-25 @178 return BLK_STS_IOERR;
dcb994383d2b16 Paul Lawrence 2023-01-25 179 }
dcb994383d2b16 Paul Lawrence 2023-01-25 180
dcb994383d2b16 Paul Lawrence 2023-01-25 181 if (bi_iter->bi_sector > (*br)->sector) {
dcb994383d2b16 Paul Lawrence 2023-01-25 182 struct bow_range *leading_br =
dcb994383d2b16 Paul Lawrence 2023-01-25 183 kzalloc(sizeof(*leading_br), GFP_KERNEL);
dcb994383d2b16 Paul Lawrence 2023-01-25 184
dcb994383d2b16 Paul Lawrence 2023-01-25 185 if (!leading_br)
dcb994383d2b16 Paul Lawrence 2023-01-25 186 return BLK_STS_RESOURCE;
dcb994383d2b16 Paul Lawrence 2023-01-25 187
dcb994383d2b16 Paul Lawrence 2023-01-25 188 *leading_br = **br;
dcb994383d2b16 Paul Lawrence 2023-01-25 189 if (leading_br->type == TRIMMED)
dcb994383d2b16 Paul Lawrence 2023-01-25 190 list_add(&leading_br->trimmed_list, &bc->trimmed_list);
dcb994383d2b16 Paul Lawrence 2023-01-25 191
dcb994383d2b16 Paul Lawrence 2023-01-25 192 add_before(&bc->ranges, leading_br, *br);
dcb994383d2b16 Paul Lawrence 2023-01-25 193 (*br)->sector = bi_iter->bi_sector;
dcb994383d2b16 Paul Lawrence 2023-01-25 194 }
dcb994383d2b16 Paul Lawrence 2023-01-25 195
dcb994383d2b16 Paul Lawrence 2023-01-25 196 if (bvec_top(bi_iter) >= range_top(*br)) {
dcb994383d2b16 Paul Lawrence 2023-01-25 197 bi_iter->bi_size = (range_top(*br) - (*br)->sector)
dcb994383d2b16 Paul Lawrence 2023-01-25 198 * SECTOR_SIZE;
dcb994383d2b16 Paul Lawrence 2023-01-25 199 return BLK_STS_OK;
dcb994383d2b16 Paul Lawrence 2023-01-25 200 }
dcb994383d2b16 Paul Lawrence 2023-01-25 201
dcb994383d2b16 Paul Lawrence 2023-01-25 202 /* new_br will be the beginning, existing br will be the tail */
dcb994383d2b16 Paul Lawrence 2023-01-25 203 new_br = kzalloc(sizeof(*new_br), GFP_KERNEL);
dcb994383d2b16 Paul Lawrence 2023-01-25 204 if (!new_br)
dcb994383d2b16 Paul Lawrence 2023-01-25 205 return BLK_STS_RESOURCE;
dcb994383d2b16 Paul Lawrence 2023-01-25 206
dcb994383d2b16 Paul Lawrence 2023-01-25 207 new_br->sector = (*br)->sector;
dcb994383d2b16 Paul Lawrence 2023-01-25 208 (*br)->sector = bvec_top(bi_iter);
dcb994383d2b16 Paul Lawrence 2023-01-25 209 add_before(&bc->ranges, new_br, *br);
dcb994383d2b16 Paul Lawrence 2023-01-25 210 *br = new_br;
dcb994383d2b16 Paul Lawrence 2023-01-25 211
dcb994383d2b16 Paul Lawrence 2023-01-25 212 return BLK_STS_OK;
dcb994383d2b16 Paul Lawrence 2023-01-25 213 }
dcb994383d2b16 Paul Lawrence 2023-01-25 214
:::::: The code at line 97 was first introduced by commit
:::::: dcb994383d2b1641ebe7b518caab88d2d9dbfa72 Revert "ANDROID: dm-bow: remove dm-bow"
:::::: TO: Paul Lawrence <paullawrence@google.com>
:::::: CC: Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2024-10-29 6:59 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202410291459.pczz2AmT-lkp@intel.com \
--to=lkp@intel.com \
--cc=cros-kernel-buildreports@googlegroups.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.