Hi Christian, kernel test robot noticed the following build errors: [auto build test ERROR on robh/for-next] [also build test ERROR on linus/master v6.11-rc1 next-20240802] [cannot apply to mtd/mtd/next mtd/mtd/fixes] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Christian-Marangi/dt-bindings-nvme-Document-nvme-card-compatible/20240804-194357 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next patch link: https://lore.kernel.org/r/20240804114108.1893-5-ansuelsmth%40gmail.com patch subject: [PATCH 4/6] block2mtd: attach device OF node to MTD device config: i386-buildonly-randconfig-001-20240804 (https://download.01.org/0day-ci/archive/20240804/202408042135.nXaBv2UM-lkp@xxxxxxxxx/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240804/202408042135.nXaBv2UM-lkp@xxxxxxxxx/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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202408042135.nXaBv2UM-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): drivers/mtd/devices/block2mtd.c: In function 'add_device': >> drivers/mtd/devices/block2mtd.c:332:9: error: 'ddev' undeclared (first use in this function); did you mean 'dev'? 332 | ddev = disk_to_dev(dev->blkdev->bd_disk); | ^~~~ | dev drivers/mtd/devices/block2mtd.c:332:9: note: each undeclared identifier is reported only once for each function it appears in In file included from drivers/mtd/devices/block2mtd.c:22: >> drivers/mtd/devices/block2mtd.c:332:31: error: 'struct block2mtd_dev' has no member named 'blkdev' 332 | ddev = disk_to_dev(dev->blkdev->bd_disk); | ^~ include/linux/blkdev.h:258:13: note: in definition of macro 'disk_to_dev' 258 | (&((disk)->part0->bd_device)) | ^~~~ drivers/mtd/devices/block2mtd.c:333:25: error: 'struct block2mtd_dev' has no member named 'blkdev' 333 | if (ddev == &dev->blkdev->bd_device) | ^~ vim +332 drivers/mtd/devices/block2mtd.c 260 261 static struct block2mtd_dev *add_device(char *devname, int erase_size, 262 char *label, int timeout) 263 { 264 const blk_mode_t mode = BLK_OPEN_READ | BLK_OPEN_WRITE; 265 struct file *bdev_file; 266 struct block_device *bdev; 267 struct block2mtd_dev *dev; 268 loff_t size; 269 char *name; 270 271 if (!devname) 272 return NULL; 273 274 dev = kzalloc(sizeof(struct block2mtd_dev), GFP_KERNEL); 275 if (!dev) 276 return NULL; 277 278 /* Get a handle on the device */ 279 bdev_file = bdev_file_open_by_path(devname, mode, dev, NULL); 280 if (IS_ERR(bdev_file)) 281 bdev_file = mdtblock_early_get_bdev(devname, mode, timeout, 282 dev); 283 if (IS_ERR(bdev_file)) { 284 pr_err("error: cannot open device %s\n", devname); 285 goto err_free_block2mtd; 286 } 287 dev->bdev_file = bdev_file; 288 bdev = file_bdev(bdev_file); 289 290 if (MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) { 291 pr_err("attempting to use an MTD device as a block device\n"); 292 goto err_free_block2mtd; 293 } 294 295 size = bdev_nr_bytes(bdev); 296 if ((long)size % erase_size) { 297 pr_err("erasesize must be a divisor of device size\n"); 298 goto err_free_block2mtd; 299 } 300 301 mutex_init(&dev->write_mutex); 302 303 /* Setup the MTD structure */ 304 /* make the name contain the block device in */ 305 if (!label) 306 name = kasprintf(GFP_KERNEL, "block2mtd: %s", devname); 307 else 308 name = kstrdup(label, GFP_KERNEL); 309 if (!name) 310 goto err_destroy_mutex; 311 312 dev->mtd.name = name; 313 314 dev->mtd.size = size & PAGE_MASK; 315 dev->mtd.erasesize = erase_size; 316 dev->mtd.writesize = 1; 317 dev->mtd.writebufsize = PAGE_SIZE; 318 dev->mtd.type = MTD_RAM; 319 dev->mtd.flags = MTD_CAP_RAM; 320 dev->mtd._erase = block2mtd_erase; 321 dev->mtd._write = block2mtd_write; 322 dev->mtd._sync = block2mtd_sync; 323 dev->mtd._read = block2mtd_read; 324 dev->mtd.priv = dev; 325 dev->mtd.owner = THIS_MODULE; 326 327 /* 328 * Check if we are using root blockdev. 329 * If it's the case, connect the MTD of_node to the ddev parent 330 * to support providing partition in DT node. 331 */ > 332 ddev = disk_to_dev(dev->blkdev->bd_disk); 333 if (ddev == &dev->blkdev->bd_device) 334 dev->mtd.dev.of_node = of_node_get(ddev->parent->of_node); 335 336 if (mtd_device_register(&dev->mtd, NULL, 0)) { 337 /* Device didn't get added, so free the entry */ 338 goto err_destroy_mutex; 339 } 340 341 list_add(&dev->list, &blkmtd_device_list); 342 pr_info("mtd%d: [%s] erase_size = %dKiB [%d]\n", 343 dev->mtd.index, 344 label ? label : dev->mtd.name + strlen("block2mtd: "), 345 dev->mtd.erasesize >> 10, dev->mtd.erasesize); 346 return dev; 347 348 err_destroy_mutex: 349 of_node_put(dev->mtd.dev.of_node); 350 mutex_destroy(&dev->write_mutex); 351 err_free_block2mtd: 352 block2mtd_free_device(dev); 353 return NULL; 354 } 355 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki