* [bcache:dev 2/23] drivers/md/bcache/super.c:108:24: sparse: sparse: incorrect type in argument 2 (different base types)
@ 2020-01-11 1:41 kbuild test robot
0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2020-01-11 1:41 UTC (permalink / raw
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 19089 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/colyli/linux-bcache.git dev
head: c3e9389f4390acbc08c4306d75d148f683d47655
commit: 4ada1393f2837bb4190f79fbdaaa153eadafd473 [2/23] bcache: use a separate data structure for the on-disk super block
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-129-g341daf20-dirty
git checkout 4ada1393f2837bb4190f79fbdaaa153eadafd473
make ARCH=x86_64 allmodconfig
make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/md/bcache/super.c:108:24: sparse: sparse: incorrect type in argument 2 (different base types)
>> drivers/md/bcache/super.c:108:24: sparse: expected unsigned int nr_keys
>> drivers/md/bcache/super.c:108:24: sparse: got restricted __le16 [usertype] keys
>> drivers/md/bcache/super.c:108:14: sparse: sparse: restricted __le64 degrades to integer
drivers/md/bcache/super.c:237:21: sparse: sparse: incorrect type in argument 2 (different base types)
drivers/md/bcache/super.c:237:21: sparse: expected unsigned int nr_keys
drivers/md/bcache/super.c:237:21: sparse: got restricted __le16 [usertype] keys
drivers/md/bcache/super.c:237:19: sparse: sparse: incorrect type in assignment (different base types)
>> drivers/md/bcache/super.c:237:19: sparse: expected restricted __le64 [usertype] csum
>> drivers/md/bcache/super.c:237:19: sparse: got unsigned long long
drivers/md/bcache/super.c:574:33: sparse: sparse: incorrect type in assignment (different base types)
drivers/md/bcache/super.c:574:33: sparse: expected unsigned short [usertype] prio
drivers/md/bcache/super.c:574:33: sparse: got restricted __le16 [usertype]
drivers/md/bcache/super.c:642:27: sparse: sparse: cast to restricted __le16
drivers/md/bcache/super.c:744:32: sparse: sparse: incorrect type in assignment (different base types)
drivers/md/bcache/super.c:744:32: sparse: expected unsigned int [usertype] invalidated
drivers/md/bcache/super.c:744:32: sparse: got restricted __le32 [usertype]
drivers/md/bcache/super.c:1104:26: sparse: sparse: incorrect type in initializer (different base types)
drivers/md/bcache/super.c:1104:26: sparse: expected unsigned int [usertype] rtime
drivers/md/bcache/super.c:1104:26: sparse: got restricted __le32 [usertype]
drivers/md/bcache/super.c:1148:32: sparse: sparse: incorrect type in assignment (different base types)
drivers/md/bcache/super.c:1148:32: sparse: expected unsigned int [usertype] invalidated
drivers/md/bcache/super.c:1148:32: sparse: got restricted __le32 [usertype]
drivers/md/bcache/super.c:1502:36: sparse: sparse: incorrect type in assignment (different base types)
drivers/md/bcache/super.c:1502:36: sparse: expected unsigned int [usertype] last_reg
drivers/md/bcache/super.c:1502:36: sparse: got restricted __le32 [usertype]
vim +108 drivers/md/bcache/super.c
cafe563591446c Kent Overstreet 2013-03-23 40
cafe563591446c Kent Overstreet 2013-03-23 41 static struct kobject *bcache_kobj;
cafe563591446c Kent Overstreet 2013-03-23 42 struct mutex bch_register_lock;
a59ff6ccc2bf2e Coly Li 2019-06-28 @43 bool bcache_is_reboot;
cafe563591446c Kent Overstreet 2013-03-23 44 LIST_HEAD(bch_cache_sets);
cafe563591446c Kent Overstreet 2013-03-23 45 static LIST_HEAD(uncached_devices);
cafe563591446c Kent Overstreet 2013-03-23 46
28935ab5163c49 Kent Overstreet 2013-07-31 47 static int bcache_major;
1dbe32ad0a82f3 Coly Li 2017-10-13 48 static DEFINE_IDA(bcache_device_idx);
cafe563591446c Kent Overstreet 2013-03-23 49 static wait_queue_head_t unregister_wait;
cafe563591446c Kent Overstreet 2013-03-23 50 struct workqueue_struct *bcache_wq;
0f843e65d9eef4 Guoju Fang 2018-09-27 51 struct workqueue_struct *bch_journal_wq;
cafe563591446c Kent Overstreet 2013-03-23 52
a59ff6ccc2bf2e Coly Li 2019-06-28 53
cafe563591446c Kent Overstreet 2013-03-23 54 #define BTREE_MAX_PAGES (256 * 1024 / PAGE_SIZE)
1dbe32ad0a82f3 Coly Li 2017-10-13 55 /* limitation of partitions number on single bcache device */
1dbe32ad0a82f3 Coly Li 2017-10-13 56 #define BCACHE_MINORS 128
1dbe32ad0a82f3 Coly Li 2017-10-13 57 /* limitation of bcache devices number on single system */
1dbe32ad0a82f3 Coly Li 2017-10-13 58 #define BCACHE_DEVICE_IDX_MAX ((1U << MINORBITS)/BCACHE_MINORS)
cafe563591446c Kent Overstreet 2013-03-23 59
cafe563591446c Kent Overstreet 2013-03-23 60 /* Superblock */
cafe563591446c Kent Overstreet 2013-03-23 61
cafe563591446c Kent Overstreet 2013-03-23 62 static const char *read_super(struct cache_sb *sb, struct block_device *bdev,
cafe563591446c Kent Overstreet 2013-03-23 63 struct page **res)
cafe563591446c Kent Overstreet 2013-03-23 64 {
cafe563591446c Kent Overstreet 2013-03-23 65 const char *err;
4ada1393f2837b Christoph Hellwig 2019-12-12 66 struct cache_sb_disk *s;
cafe563591446c Kent Overstreet 2013-03-23 67 struct buffer_head *bh = __bread(bdev, 1, SB_SIZE);
6f10f7d1b02b1b Coly Li 2018-08-11 68 unsigned int i;
cafe563591446c Kent Overstreet 2013-03-23 69
cafe563591446c Kent Overstreet 2013-03-23 70 if (!bh)
cafe563591446c Kent Overstreet 2013-03-23 71 return "IO error";
cafe563591446c Kent Overstreet 2013-03-23 72
4ada1393f2837b Christoph Hellwig 2019-12-12 73 s = (struct cache_sb_disk *)bh->b_data;
cafe563591446c Kent Overstreet 2013-03-23 74
cafe563591446c Kent Overstreet 2013-03-23 75 sb->offset = le64_to_cpu(s->offset);
cafe563591446c Kent Overstreet 2013-03-23 76 sb->version = le64_to_cpu(s->version);
cafe563591446c Kent Overstreet 2013-03-23 77
cafe563591446c Kent Overstreet 2013-03-23 78 memcpy(sb->magic, s->magic, 16);
cafe563591446c Kent Overstreet 2013-03-23 79 memcpy(sb->uuid, s->uuid, 16);
cafe563591446c Kent Overstreet 2013-03-23 80 memcpy(sb->set_uuid, s->set_uuid, 16);
cafe563591446c Kent Overstreet 2013-03-23 81 memcpy(sb->label, s->label, SB_LABEL_SIZE);
cafe563591446c Kent Overstreet 2013-03-23 82
cafe563591446c Kent Overstreet 2013-03-23 83 sb->flags = le64_to_cpu(s->flags);
cafe563591446c Kent Overstreet 2013-03-23 84 sb->seq = le64_to_cpu(s->seq);
cafe563591446c Kent Overstreet 2013-03-23 85 sb->last_mount = le32_to_cpu(s->last_mount);
cafe563591446c Kent Overstreet 2013-03-23 86 sb->first_bucket = le16_to_cpu(s->first_bucket);
cafe563591446c Kent Overstreet 2013-03-23 87 sb->keys = le16_to_cpu(s->keys);
cafe563591446c Kent Overstreet 2013-03-23 88
cafe563591446c Kent Overstreet 2013-03-23 89 for (i = 0; i < SB_JOURNAL_BUCKETS; i++)
cafe563591446c Kent Overstreet 2013-03-23 90 sb->d[i] = le64_to_cpu(s->d[i]);
cafe563591446c Kent Overstreet 2013-03-23 91
cafe563591446c Kent Overstreet 2013-03-23 92 pr_debug("read sb version %llu, flags %llu, seq %llu, journal size %u",
cafe563591446c Kent Overstreet 2013-03-23 93 sb->version, sb->flags, sb->seq, sb->keys);
cafe563591446c Kent Overstreet 2013-03-23 94
aaf8dbeab58657 Coly Li 2019-11-13 95 err = "Not a bcache superblock (bad offset)";
cafe563591446c Kent Overstreet 2013-03-23 96 if (sb->offset != SB_SECTOR)
cafe563591446c Kent Overstreet 2013-03-23 97 goto err;
cafe563591446c Kent Overstreet 2013-03-23 98
aaf8dbeab58657 Coly Li 2019-11-13 99 err = "Not a bcache superblock (bad magic)";
cafe563591446c Kent Overstreet 2013-03-23 100 if (memcmp(sb->magic, bcache_magic, 16))
cafe563591446c Kent Overstreet 2013-03-23 101 goto err;
cafe563591446c Kent Overstreet 2013-03-23 102
cafe563591446c Kent Overstreet 2013-03-23 103 err = "Too many journal buckets";
cafe563591446c Kent Overstreet 2013-03-23 104 if (sb->keys > SB_JOURNAL_BUCKETS)
cafe563591446c Kent Overstreet 2013-03-23 105 goto err;
cafe563591446c Kent Overstreet 2013-03-23 106
cafe563591446c Kent Overstreet 2013-03-23 107 err = "Bad checksum";
cafe563591446c Kent Overstreet 2013-03-23 @108 if (s->csum != csum_set(s))
cafe563591446c Kent Overstreet 2013-03-23 109 goto err;
cafe563591446c Kent Overstreet 2013-03-23 110
cafe563591446c Kent Overstreet 2013-03-23 111 err = "Bad UUID";
169ef1cf6171d3 Kent Overstreet 2013-03-28 112 if (bch_is_zero(sb->uuid, 16))
cafe563591446c Kent Overstreet 2013-03-23 113 goto err;
cafe563591446c Kent Overstreet 2013-03-23 114
8abb2a5dbadab9 Kent Overstreet 2013-04-23 115 sb->block_size = le16_to_cpu(s->block_size);
8abb2a5dbadab9 Kent Overstreet 2013-04-23 116
8abb2a5dbadab9 Kent Overstreet 2013-04-23 117 err = "Superblock block size smaller than device block size";
8abb2a5dbadab9 Kent Overstreet 2013-04-23 118 if (sb->block_size << 9 < bdev_logical_block_size(bdev))
8abb2a5dbadab9 Kent Overstreet 2013-04-23 119 goto err;
8abb2a5dbadab9 Kent Overstreet 2013-04-23 120
2903381fce7100 Kent Overstreet 2013-04-11 121 switch (sb->version) {
2903381fce7100 Kent Overstreet 2013-04-11 122 case BCACHE_SB_VERSION_BDEV:
2903381fce7100 Kent Overstreet 2013-04-11 123 sb->data_offset = BDEV_DATA_START_DEFAULT;
2903381fce7100 Kent Overstreet 2013-04-11 124 break;
2903381fce7100 Kent Overstreet 2013-04-11 125 case BCACHE_SB_VERSION_BDEV_WITH_OFFSET:
2903381fce7100 Kent Overstreet 2013-04-11 126 sb->data_offset = le64_to_cpu(s->data_offset);
cafe563591446c Kent Overstreet 2013-03-23 127
2903381fce7100 Kent Overstreet 2013-04-11 128 err = "Bad data offset";
2903381fce7100 Kent Overstreet 2013-04-11 129 if (sb->data_offset < BDEV_DATA_START_DEFAULT)
cafe563591446c Kent Overstreet 2013-03-23 130 goto err;
cafe563591446c Kent Overstreet 2013-03-23 131
2903381fce7100 Kent Overstreet 2013-04-11 132 break;
2903381fce7100 Kent Overstreet 2013-04-11 133 case BCACHE_SB_VERSION_CDEV:
2903381fce7100 Kent Overstreet 2013-04-11 134 case BCACHE_SB_VERSION_CDEV_WITH_UUID:
2903381fce7100 Kent Overstreet 2013-04-11 135 sb->nbuckets = le64_to_cpu(s->nbuckets);
2903381fce7100 Kent Overstreet 2013-04-11 136 sb->bucket_size = le16_to_cpu(s->bucket_size);
2903381fce7100 Kent Overstreet 2013-04-11 137
2903381fce7100 Kent Overstreet 2013-04-11 138 sb->nr_in_set = le16_to_cpu(s->nr_in_set);
2903381fce7100 Kent Overstreet 2013-04-11 139 sb->nr_this_dev = le16_to_cpu(s->nr_this_dev);
2903381fce7100 Kent Overstreet 2013-04-11 140
cafe563591446c Kent Overstreet 2013-03-23 141 err = "Too many buckets";
cafe563591446c Kent Overstreet 2013-03-23 142 if (sb->nbuckets > LONG_MAX)
cafe563591446c Kent Overstreet 2013-03-23 143 goto err;
cafe563591446c Kent Overstreet 2013-03-23 144
cafe563591446c Kent Overstreet 2013-03-23 145 err = "Not enough buckets";
cafe563591446c Kent Overstreet 2013-03-23 146 if (sb->nbuckets < 1 << 7)
cafe563591446c Kent Overstreet 2013-03-23 147 goto err;
cafe563591446c Kent Overstreet 2013-03-23 148
2903381fce7100 Kent Overstreet 2013-04-11 149 err = "Bad block/bucket size";
2903381fce7100 Kent Overstreet 2013-04-11 150 if (!is_power_of_2(sb->block_size) ||
2903381fce7100 Kent Overstreet 2013-04-11 151 sb->block_size > PAGE_SECTORS ||
2903381fce7100 Kent Overstreet 2013-04-11 152 !is_power_of_2(sb->bucket_size) ||
2903381fce7100 Kent Overstreet 2013-04-11 153 sb->bucket_size < PAGE_SECTORS)
2903381fce7100 Kent Overstreet 2013-04-11 154 goto err;
2903381fce7100 Kent Overstreet 2013-04-11 155
cafe563591446c Kent Overstreet 2013-03-23 156 err = "Invalid superblock: device too small";
b0d30981c05f32 Coly Li 2018-08-11 157 if (get_capacity(bdev->bd_disk) <
b0d30981c05f32 Coly Li 2018-08-11 158 sb->bucket_size * sb->nbuckets)
cafe563591446c Kent Overstreet 2013-03-23 159 goto err;
cafe563591446c Kent Overstreet 2013-03-23 160
cafe563591446c Kent Overstreet 2013-03-23 161 err = "Bad UUID";
169ef1cf6171d3 Kent Overstreet 2013-03-28 162 if (bch_is_zero(sb->set_uuid, 16))
cafe563591446c Kent Overstreet 2013-03-23 163 goto err;
cafe563591446c Kent Overstreet 2013-03-23 164
cafe563591446c Kent Overstreet 2013-03-23 165 err = "Bad cache device number in set";
cafe563591446c Kent Overstreet 2013-03-23 166 if (!sb->nr_in_set ||
cafe563591446c Kent Overstreet 2013-03-23 167 sb->nr_in_set <= sb->nr_this_dev ||
cafe563591446c Kent Overstreet 2013-03-23 168 sb->nr_in_set > MAX_CACHES_PER_SET)
cafe563591446c Kent Overstreet 2013-03-23 169 goto err;
cafe563591446c Kent Overstreet 2013-03-23 170
cafe563591446c Kent Overstreet 2013-03-23 171 err = "Journal buckets not sequential";
cafe563591446c Kent Overstreet 2013-03-23 172 for (i = 0; i < sb->keys; i++)
cafe563591446c Kent Overstreet 2013-03-23 173 if (sb->d[i] != sb->first_bucket + i)
cafe563591446c Kent Overstreet 2013-03-23 174 goto err;
cafe563591446c Kent Overstreet 2013-03-23 175
cafe563591446c Kent Overstreet 2013-03-23 176 err = "Too many journal buckets";
cafe563591446c Kent Overstreet 2013-03-23 177 if (sb->first_bucket + sb->keys > sb->nbuckets)
cafe563591446c Kent Overstreet 2013-03-23 178 goto err;
cafe563591446c Kent Overstreet 2013-03-23 179
cafe563591446c Kent Overstreet 2013-03-23 180 err = "Invalid superblock: first bucket comes before end of super";
cafe563591446c Kent Overstreet 2013-03-23 181 if (sb->first_bucket * sb->bucket_size < 16)
cafe563591446c Kent Overstreet 2013-03-23 182 goto err;
2903381fce7100 Kent Overstreet 2013-04-11 183
2903381fce7100 Kent Overstreet 2013-04-11 184 break;
2903381fce7100 Kent Overstreet 2013-04-11 185 default:
2903381fce7100 Kent Overstreet 2013-04-11 186 err = "Unsupported superblock version";
2903381fce7100 Kent Overstreet 2013-04-11 187 goto err;
2903381fce7100 Kent Overstreet 2013-04-11 188 }
2903381fce7100 Kent Overstreet 2013-04-11 189
75cbb3f1d84042 Arnd Bergmann 2018-07-26 190 sb->last_mount = (u32)ktime_get_real_seconds();
cafe563591446c Kent Overstreet 2013-03-23 191 err = NULL;
cafe563591446c Kent Overstreet 2013-03-23 192
cafe563591446c Kent Overstreet 2013-03-23 193 get_page(bh->b_page);
cafe563591446c Kent Overstreet 2013-03-23 194 *res = bh->b_page;
cafe563591446c Kent Overstreet 2013-03-23 195 err:
cafe563591446c Kent Overstreet 2013-03-23 196 put_bh(bh);
cafe563591446c Kent Overstreet 2013-03-23 197 return err;
cafe563591446c Kent Overstreet 2013-03-23 198 }
cafe563591446c Kent Overstreet 2013-03-23 199
4246a0b63bd8f5 Christoph Hellwig 2015-07-20 200 static void write_bdev_super_endio(struct bio *bio)
cafe563591446c Kent Overstreet 2013-03-23 201 {
cafe563591446c Kent Overstreet 2013-03-23 202 struct cached_dev *dc = bio->bi_private;
08ec1e6282f271 Coly Li 2019-06-28 203
08ec1e6282f271 Coly Li 2019-06-28 204 if (bio->bi_status)
08ec1e6282f271 Coly Li 2019-06-28 205 bch_count_backing_io_errors(dc, bio);
cafe563591446c Kent Overstreet 2013-03-23 206
cb7a583e6a6ace Kent Overstreet 2013-12-16 207 closure_put(&dc->sb_write);
cafe563591446c Kent Overstreet 2013-03-23 208 }
cafe563591446c Kent Overstreet 2013-03-23 209
cafe563591446c Kent Overstreet 2013-03-23 210 static void __write_super(struct cache_sb *sb, struct bio *bio)
cafe563591446c Kent Overstreet 2013-03-23 211 {
4ada1393f2837b Christoph Hellwig 2019-12-12 212 struct cache_sb_disk *out = page_address(bio_first_page_all(bio));
6f10f7d1b02b1b Coly Li 2018-08-11 213 unsigned int i;
cafe563591446c Kent Overstreet 2013-03-23 214
4f024f3797c43c Kent Overstreet 2013-10-11 215 bio->bi_iter.bi_sector = SB_SECTOR;
4f024f3797c43c Kent Overstreet 2013-10-11 216 bio->bi_iter.bi_size = SB_SIZE;
ad0d9e76a41247 Mike Christie 2016-06-05 217 bio_set_op_attrs(bio, REQ_OP_WRITE, REQ_SYNC|REQ_META);
169ef1cf6171d3 Kent Overstreet 2013-03-28 218 bch_bio_map(bio, NULL);
cafe563591446c Kent Overstreet 2013-03-23 219
cafe563591446c Kent Overstreet 2013-03-23 220 out->offset = cpu_to_le64(sb->offset);
cafe563591446c Kent Overstreet 2013-03-23 221 out->version = cpu_to_le64(sb->version);
cafe563591446c Kent Overstreet 2013-03-23 222
cafe563591446c Kent Overstreet 2013-03-23 223 memcpy(out->uuid, sb->uuid, 16);
cafe563591446c Kent Overstreet 2013-03-23 224 memcpy(out->set_uuid, sb->set_uuid, 16);
cafe563591446c Kent Overstreet 2013-03-23 225 memcpy(out->label, sb->label, SB_LABEL_SIZE);
cafe563591446c Kent Overstreet 2013-03-23 226
cafe563591446c Kent Overstreet 2013-03-23 227 out->flags = cpu_to_le64(sb->flags);
cafe563591446c Kent Overstreet 2013-03-23 228 out->seq = cpu_to_le64(sb->seq);
cafe563591446c Kent Overstreet 2013-03-23 229
cafe563591446c Kent Overstreet 2013-03-23 230 out->last_mount = cpu_to_le32(sb->last_mount);
cafe563591446c Kent Overstreet 2013-03-23 231 out->first_bucket = cpu_to_le16(sb->first_bucket);
cafe563591446c Kent Overstreet 2013-03-23 232 out->keys = cpu_to_le16(sb->keys);
cafe563591446c Kent Overstreet 2013-03-23 233
cafe563591446c Kent Overstreet 2013-03-23 234 for (i = 0; i < sb->keys; i++)
cafe563591446c Kent Overstreet 2013-03-23 235 out->d[i] = cpu_to_le64(sb->d[i]);
cafe563591446c Kent Overstreet 2013-03-23 236
cafe563591446c Kent Overstreet 2013-03-23 @237 out->csum = csum_set(out);
cafe563591446c Kent Overstreet 2013-03-23 238
cafe563591446c Kent Overstreet 2013-03-23 239 pr_debug("ver %llu, flags %llu, seq %llu",
cafe563591446c Kent Overstreet 2013-03-23 240 sb->version, sb->flags, sb->seq);
cafe563591446c Kent Overstreet 2013-03-23 241
4e49ea4a3d2763 Mike Christie 2016-06-05 242 submit_bio(bio);
cafe563591446c Kent Overstreet 2013-03-23 243 }
cafe563591446c Kent Overstreet 2013-03-23 244
:::::: The code at line 108 was first introduced by commit
:::::: cafe563591446cf80bfbc2fe3bc72a2e36cf1060 bcache: A block layer cache
:::::: TO: Kent Overstreet <koverstreet@google.com>
:::::: CC: Kent Overstreet <koverstreet@google.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corporation
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-01-11 1:41 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-01-11 1:41 [bcache:dev 2/23] drivers/md/bcache/super.c:108:24: sparse: sparse: incorrect type in argument 2 (different base types) kbuild 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.