CC: kbuild-all(a)lists.01.org In-Reply-To: <20200510202436.63222-10-keescook@chromium.org> References: <20200510202436.63222-10-keescook@chromium.org> TO: Kees Cook Hi Kees, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on next-20200508] [cannot apply to kees/for-next/pstore ia64/next linus/master v5.7-rc4 v5.7-rc3 v5.7-rc2 v5.7-rc4] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Kees-Cook/pstore-mtd-support-crash-log-to-block-and-mtd-device/20200511-043555 base: 30e2206e11ce27ae910cc0dab21472429e400a87 :::::: branch date: 2 hours ago :::::: commit date: 2 hours ago If you fix the issue, kindly add following tag as appropriate Reported-by: kbuild test robot cppcheck warnings: (new ones prefixed by >>) >> fs/pstore/ram.c:927:19: warning: Variable 'pdata.max_reason' is reassigned a value before the old one has been used. [redundantAssignment] pdata.max_reason = ramoops_max_reason; ^ fs/pstore/ram.c:925:20: note: pdata.max_reason is assigned pdata.max_reason = ramoops_dump_oops ? KMSG_DUMP_OOPS ^ fs/pstore/ram.c:927:19: note: pdata.max_reason is overwritten pdata.max_reason = ramoops_max_reason; ^ -- >> fs/pstore/zone.c:433:6: warning: Redundant initialization for 'ret'. The initialized value is overwritten before it is read. [redundantInitialization] ret = psz_kmsg_recover(cxt); ^ fs/pstore/zone.c:428:10: note: ret is initialized int ret = -EBUSY; ^ fs/pstore/zone.c:433:6: note: ret is overwritten ret = psz_kmsg_recover(cxt); ^ >> fs/pstore/zone.c:895:6: warning: Redundant initialization for 'err'. The initialized value is overwritten before it is read. [redundantInitialization] err = psz_alloc_zones(cxt); ^ fs/pstore/zone.c:839:10: note: err is initialized int err = -EINVAL; ^ fs/pstore/zone.c:895:6: note: err is overwritten err = psz_alloc_zones(cxt); ^ >> fs/pstore/blk.c:193:7: warning: Redundant initialization for 'bdev'. The initialized value is overwritten before it is read. [redundantInitialization] bdev = blkdev_get_by_path(blkdev, mode, holder); ^ fs/pstore/blk.c:178:28: note: bdev is initialized struct block_device *bdev = ERR_PTR(-ENODEV); ^ fs/pstore/blk.c:193:7: note: bdev is overwritten bdev = blkdev_get_by_path(blkdev, mode, holder); ^ >> fs/pstore/blk.c:359:6: warning: Redundant initialization for 'ret'. The initialized value is overwritten before it is read. [redundantInitialization] ret = psblk_register_do(&dev); ^ fs/pstore/blk.c:321:10: note: ret is initialized int ret = -ENODEV; ^ fs/pstore/blk.c:359:6: note: ret is overwritten ret = psblk_register_do(&dev); ^ # https://github.com/0day-ci/linux/commit/1fe49524a73cc357622236b617f4ccf861dde190 git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout 1fe49524a73cc357622236b617f4ccf861dde190 vim +/bdev +193 fs/pstore/blk.c 1fe49524a73cc3 WeiXiong Liao 2020-05-10 164 1fe49524a73cc3 WeiXiong Liao 2020-05-10 165 /** 1fe49524a73cc3 WeiXiong Liao 2020-05-10 166 * psblk_get_bdev() - open block device 1fe49524a73cc3 WeiXiong Liao 2020-05-10 167 * 1fe49524a73cc3 WeiXiong Liao 2020-05-10 168 * @holder: Exclusive holder identifier 1fe49524a73cc3 WeiXiong Liao 2020-05-10 169 * @info: Information about bdev to fill in 1fe49524a73cc3 WeiXiong Liao 2020-05-10 170 * 1fe49524a73cc3 WeiXiong Liao 2020-05-10 171 * Return: pointer to block device on success and others on error. 1fe49524a73cc3 WeiXiong Liao 2020-05-10 172 * 1fe49524a73cc3 WeiXiong Liao 2020-05-10 173 * On success, the returned block_device has reference count of one. 1fe49524a73cc3 WeiXiong Liao 2020-05-10 174 */ 1fe49524a73cc3 WeiXiong Liao 2020-05-10 175 static struct block_device *psblk_get_bdev(void *holder, 1fe49524a73cc3 WeiXiong Liao 2020-05-10 176 struct bdev_info *info) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 177 { 1fe49524a73cc3 WeiXiong Liao 2020-05-10 178 struct block_device *bdev = ERR_PTR(-ENODEV); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 179 fmode_t mode = FMODE_READ | FMODE_WRITE; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 180 sector_t nr_sects; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 181 1fe49524a73cc3 WeiXiong Liao 2020-05-10 182 if (WARN_ON(!mutex_is_locked(&pstore_blk_lock))) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 183 return ERR_PTR(-EINVAL); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 184 1fe49524a73cc3 WeiXiong Liao 2020-05-10 185 if (pstore_zone_info) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 186 return ERR_PTR(-EBUSY); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 187 1fe49524a73cc3 WeiXiong Liao 2020-05-10 188 if (!blkdev[0]) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 189 return ERR_PTR(-ENODEV); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 190 1fe49524a73cc3 WeiXiong Liao 2020-05-10 191 if (holder) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 192 mode |= FMODE_EXCL; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 @193 bdev = blkdev_get_by_path(blkdev, mode, holder); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 194 if (IS_ERR(bdev)) { 1fe49524a73cc3 WeiXiong Liao 2020-05-10 195 dev_t devt; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 196 1fe49524a73cc3 WeiXiong Liao 2020-05-10 197 devt = name_to_dev_t(blkdev); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 198 if (devt == 0) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 199 return ERR_PTR(-ENODEV); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 200 bdev = blkdev_get_by_dev(devt, mode, holder); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 201 } 1fe49524a73cc3 WeiXiong Liao 2020-05-10 202 1fe49524a73cc3 WeiXiong Liao 2020-05-10 203 nr_sects = part_nr_sects_read(bdev->bd_part); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 204 if (!nr_sects) { 1fe49524a73cc3 WeiXiong Liao 2020-05-10 205 pr_err("not enough space for '%s'\n", blkdev); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 206 blkdev_put(bdev, mode); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 207 return ERR_PTR(-ENOSPC); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 208 } 1fe49524a73cc3 WeiXiong Liao 2020-05-10 209 1fe49524a73cc3 WeiXiong Liao 2020-05-10 210 if (info) { 1fe49524a73cc3 WeiXiong Liao 2020-05-10 211 info->devt = bdev->bd_dev; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 212 info->nr_sects = nr_sects; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 213 info->start_sect = get_start_sect(bdev); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 214 } 1fe49524a73cc3 WeiXiong Liao 2020-05-10 215 1fe49524a73cc3 WeiXiong Liao 2020-05-10 216 return bdev; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 217 } 1fe49524a73cc3 WeiXiong Liao 2020-05-10 218 1fe49524a73cc3 WeiXiong Liao 2020-05-10 219 static void psblk_put_bdev(struct block_device *bdev, void *holder) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 220 { 1fe49524a73cc3 WeiXiong Liao 2020-05-10 221 fmode_t mode = FMODE_READ | FMODE_WRITE; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 222 1fe49524a73cc3 WeiXiong Liao 2020-05-10 223 if (!bdev) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 224 return; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 225 1fe49524a73cc3 WeiXiong Liao 2020-05-10 226 if (WARN_ON(!mutex_is_locked(&pstore_blk_lock))) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 227 return; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 228 1fe49524a73cc3 WeiXiong Liao 2020-05-10 229 if (holder) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 230 mode |= FMODE_EXCL; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 231 blkdev_put(bdev, mode); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 232 } 1fe49524a73cc3 WeiXiong Liao 2020-05-10 233 1fe49524a73cc3 WeiXiong Liao 2020-05-10 234 static ssize_t psblk_generic_blk_read(char *buf, size_t bytes, loff_t pos) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 235 { 1fe49524a73cc3 WeiXiong Liao 2020-05-10 236 struct block_device *bdev = psblk_bdev; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 237 struct file file; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 238 struct kiocb kiocb; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 239 struct iov_iter iter; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 240 struct kvec iov = {.iov_base = buf, .iov_len = bytes}; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 241 1fe49524a73cc3 WeiXiong Liao 2020-05-10 242 if (!bdev) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 243 return -ENODEV; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 244 1fe49524a73cc3 WeiXiong Liao 2020-05-10 245 memset(&file, 0, sizeof(struct file)); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 246 file.f_mapping = bdev->bd_inode->i_mapping; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 247 file.f_flags = O_DSYNC | __O_SYNC | O_NOATIME; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 248 file.f_inode = bdev->bd_inode; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 249 file_ra_state_init(&file.f_ra, file.f_mapping); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 250 1fe49524a73cc3 WeiXiong Liao 2020-05-10 251 init_sync_kiocb(&kiocb, &file); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 252 kiocb.ki_pos = pos; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 253 iov_iter_kvec(&iter, READ, &iov, 1, bytes); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 254 1fe49524a73cc3 WeiXiong Liao 2020-05-10 255 return generic_file_read_iter(&kiocb, &iter); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 256 } 1fe49524a73cc3 WeiXiong Liao 2020-05-10 257 1fe49524a73cc3 WeiXiong Liao 2020-05-10 258 static ssize_t psblk_generic_blk_write(const char *buf, size_t bytes, 1fe49524a73cc3 WeiXiong Liao 2020-05-10 259 loff_t pos) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 260 { 1fe49524a73cc3 WeiXiong Liao 2020-05-10 261 struct block_device *bdev = psblk_bdev; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 262 struct iov_iter iter; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 263 struct kiocb kiocb; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 264 struct file file; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 265 ssize_t ret; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 266 struct kvec iov = {.iov_base = (void *)buf, .iov_len = bytes}; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 267 1fe49524a73cc3 WeiXiong Liao 2020-05-10 268 if (!bdev) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 269 return -ENODEV; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 270 1fe49524a73cc3 WeiXiong Liao 2020-05-10 271 /* Console/Ftrace backend may handle buffer until flush dirty zones */ 1fe49524a73cc3 WeiXiong Liao 2020-05-10 272 if (in_interrupt() || irqs_disabled()) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 273 return -EBUSY; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 274 1fe49524a73cc3 WeiXiong Liao 2020-05-10 275 memset(&file, 0, sizeof(struct file)); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 276 file.f_mapping = bdev->bd_inode->i_mapping; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 277 file.f_flags = O_DSYNC | __O_SYNC | O_NOATIME; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 278 file.f_inode = bdev->bd_inode; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 279 1fe49524a73cc3 WeiXiong Liao 2020-05-10 280 init_sync_kiocb(&kiocb, &file); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 281 kiocb.ki_pos = pos; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 282 iov_iter_kvec(&iter, WRITE, &iov, 1, bytes); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 283 1fe49524a73cc3 WeiXiong Liao 2020-05-10 284 inode_lock(bdev->bd_inode); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 285 ret = generic_write_checks(&kiocb, &iter); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 286 if (ret > 0) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 287 ret = generic_perform_write(&file, &iter, pos); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 288 inode_unlock(bdev->bd_inode); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 289 1fe49524a73cc3 WeiXiong Liao 2020-05-10 290 if (likely(ret > 0)) { 1fe49524a73cc3 WeiXiong Liao 2020-05-10 291 const struct file_operations f_op = {.fsync = blkdev_fsync}; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 292 1fe49524a73cc3 WeiXiong Liao 2020-05-10 293 file.f_op = &f_op; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 294 kiocb.ki_pos += ret; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 295 ret = generic_write_sync(&kiocb, ret); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 296 } 1fe49524a73cc3 WeiXiong Liao 2020-05-10 297 return ret; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 298 } 1fe49524a73cc3 WeiXiong Liao 2020-05-10 299 1fe49524a73cc3 WeiXiong Liao 2020-05-10 300 static ssize_t psblk_blk_panic_write(const char *buf, size_t size, 1fe49524a73cc3 WeiXiong Liao 2020-05-10 301 loff_t off) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 302 { 1fe49524a73cc3 WeiXiong Liao 2020-05-10 303 int ret; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 304 1fe49524a73cc3 WeiXiong Liao 2020-05-10 305 if (!blkdev_panic_write) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 306 return -EOPNOTSUPP; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 307 1fe49524a73cc3 WeiXiong Liao 2020-05-10 308 /* size and off must align to SECTOR_SIZE for block device */ 1fe49524a73cc3 WeiXiong Liao 2020-05-10 309 ret = blkdev_panic_write(buf, off >> SECTOR_SHIFT, 1fe49524a73cc3 WeiXiong Liao 2020-05-10 310 size >> SECTOR_SHIFT); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 311 return ret ? -EIO : size; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 312 } 1fe49524a73cc3 WeiXiong Liao 2020-05-10 313 1fe49524a73cc3 WeiXiong Liao 2020-05-10 314 static int __register_pstore_blk(struct pstore_blk_info *info) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 315 { 1fe49524a73cc3 WeiXiong Liao 2020-05-10 316 char bdev_name[BDEVNAME_SIZE]; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 317 struct block_device *bdev; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 318 struct pstore_device_info dev; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 319 struct bdev_info binfo; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 320 void *holder = blkdev; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 321 int ret = -ENODEV; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 322 1fe49524a73cc3 WeiXiong Liao 2020-05-10 323 if (WARN_ON(!mutex_is_locked(&pstore_blk_lock))) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 324 return -EINVAL; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 325 1fe49524a73cc3 WeiXiong Liao 2020-05-10 326 /* hold bdev exclusively */ 1fe49524a73cc3 WeiXiong Liao 2020-05-10 327 memset(&binfo, 0, sizeof(binfo)); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 328 bdev = psblk_get_bdev(holder, &binfo); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 329 if (IS_ERR(bdev)) { 1fe49524a73cc3 WeiXiong Liao 2020-05-10 330 pr_err("failed to open '%s'!\n", blkdev); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 331 ret = PTR_ERR(bdev); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 332 goto err_put_bdev; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 333 } 1fe49524a73cc3 WeiXiong Liao 2020-05-10 334 1fe49524a73cc3 WeiXiong Liao 2020-05-10 335 /* only allow driver matching the @blkdev */ 1fe49524a73cc3 WeiXiong Liao 2020-05-10 336 if (!binfo.devt || MAJOR(binfo.devt) != info->major) { 1fe49524a73cc3 WeiXiong Liao 2020-05-10 337 pr_debug("invalid major %u (expect %u)\n", 1fe49524a73cc3 WeiXiong Liao 2020-05-10 338 info->major, MAJOR(binfo.devt)); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 339 ret = -ENODEV; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 340 goto err_put_bdev; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 341 } 1fe49524a73cc3 WeiXiong Liao 2020-05-10 342 1fe49524a73cc3 WeiXiong Liao 2020-05-10 343 /* psblk_bdev must be assigned before register to pstore/blk */ 1fe49524a73cc3 WeiXiong Liao 2020-05-10 344 psblk_bdev = bdev; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 345 blkdev_panic_write = info->panic_write; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 346 1fe49524a73cc3 WeiXiong Liao 2020-05-10 347 /* Copy back block device details. */ 1fe49524a73cc3 WeiXiong Liao 2020-05-10 348 info->devt = binfo.devt; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 349 info->nr_sects = binfo.nr_sects; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 350 info->start_sect = binfo.start_sect; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 351 1fe49524a73cc3 WeiXiong Liao 2020-05-10 352 memset(&dev, 0, sizeof(dev)); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 353 dev.total_size = info->nr_sects << SECTOR_SHIFT; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 354 dev.flags = info->flags; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 355 dev.read = psblk_generic_blk_read; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 356 dev.write = psblk_generic_blk_write; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 357 dev.panic_write = info->panic_write ? psblk_blk_panic_write : NULL; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 358 1fe49524a73cc3 WeiXiong Liao 2020-05-10 @359 ret = psblk_register_do(&dev); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 360 if (ret) 1fe49524a73cc3 WeiXiong Liao 2020-05-10 361 goto err_put_bdev; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 362 1fe49524a73cc3 WeiXiong Liao 2020-05-10 363 bdevname(bdev, bdev_name); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 364 pr_info("attached %s%s\n", bdev_name, 1fe49524a73cc3 WeiXiong Liao 2020-05-10 365 info->panic_write ? "" : " (no dedicated panic_write!)"); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 366 return 0; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 367 1fe49524a73cc3 WeiXiong Liao 2020-05-10 368 err_put_bdev: 1fe49524a73cc3 WeiXiong Liao 2020-05-10 369 psblk_bdev = NULL; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 370 blkdev_panic_write = NULL; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 371 psblk_put_bdev(bdev, holder); 1fe49524a73cc3 WeiXiong Liao 2020-05-10 372 return ret; 1fe49524a73cc3 WeiXiong Liao 2020-05-10 373 } 1fe49524a73cc3 WeiXiong Liao 2020-05-10 374 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org