Hi zhong, Thank you for the patch! Yet something to improve: [auto build test ERROR on driver-core/driver-core-testing] [also build test ERROR on v5.1-rc4 next-20190405] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/zhong-jiang/mm-memory_hotplug-Do-not-unlock-when-fails-to-take-the-device_hotplug_lock/20190408-142325 config: x86_64-randconfig-x007-201914 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): drivers/base/memory.c: In function 'probe_store': >> drivers/base/memory.c:509:3: error: label 'ret' used but not defined goto ret; ^~~~ vim +/ret +509 drivers/base/memory.c 485 486 /* 487 * Some architectures will have custom drivers to do this, and 488 * will not need to do it from userspace. The fake hot-add code 489 * as well as ppc64 will do all of their discovery in userspace 490 * and will require this interface. 491 */ 492 #ifdef CONFIG_ARCH_MEMORY_PROBE 493 static ssize_t probe_store(struct device *dev, struct device_attribute *attr, 494 const char *buf, size_t count) 495 { 496 u64 phys_addr; 497 int nid, ret; 498 unsigned long pages_per_block = PAGES_PER_SECTION * sections_per_block; 499 500 ret = kstrtoull(buf, 0, &phys_addr); 501 if (ret) 502 return ret; 503 504 if (phys_addr & ((pages_per_block << PAGE_SHIFT) - 1)) 505 return -EINVAL; 506 507 ret = lock_device_hotplug_sysfs(); 508 if (ret) > 509 goto ret; 510 511 nid = memory_add_physaddr_to_nid(phys_addr); 512 ret = __add_memory(nid, phys_addr, 513 MIN_MEMORY_BLOCK_SIZE * sections_per_block); 514 515 if (ret) 516 goto out; 517 518 ret = count; 519 out: 520 unlock_device_hotplug(); 521 return ret; 522 } 523 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation