return pfn_to_nid(pfn);
 }
 
-static int do_register_memory_block_under_node(int nid,
-                                              struct memory_block *mem_blk)
+static void do_register_memory_block_under_node(int nid,
+                                               struct memory_block *mem_blk)
 {
        int ret;
 
        ret = sysfs_create_link_nowarn(&node_devices[nid]->dev.kobj,
                                       &mem_blk->dev.kobj,
                                       kobject_name(&mem_blk->dev.kobj));
-       if (ret)
-               return ret;
+       if (ret && ret != -EEXIST)
+               dev_err_ratelimited(&node_devices[nid]->dev,
+                                   "can't create link to %s in sysfs (%d)\n",
+                                   kobject_name(&mem_blk->dev.kobj), ret);
 
-       return sysfs_create_link_nowarn(&mem_blk->dev.kobj,
+       ret = sysfs_create_link_nowarn(&mem_blk->dev.kobj,
                                &node_devices[nid]->dev.kobj,
                                kobject_name(&node_devices[nid]->dev.kobj));
+       if (ret && ret != -EEXIST)
+               dev_err_ratelimited(&mem_blk->dev,
+                                   "can't create link to %s in sysfs (%d)\n",
+                                   kobject_name(&node_devices[nid]->dev.kobj),
+                                   ret);
 }
 
 /* register memory section under specified node if it spans that node */
                if (page_nid != nid)
                        continue;
 
-               return do_register_memory_block_under_node(nid, mem_blk);
+               do_register_memory_block_under_node(nid, mem_blk);
+               return 0;
        }
        /* mem section does not span the specified node */
        return 0;
 {
        int nid = *(int *)arg;
 
-       return do_register_memory_block_under_node(nid, mem_blk);
+       do_register_memory_block_under_node(nid, mem_blk);
+       return 0;
 }
 
 /*
                          kobject_name(&node_devices[mem_blk->nid]->dev.kobj));
 }
 
-int link_mem_sections(int nid, unsigned long start_pfn, unsigned long end_pfn,
-                     enum meminit_context context)
+void link_mem_sections(int nid, unsigned long start_pfn, unsigned long end_pfn,
+                      enum meminit_context context)
 {
        walk_memory_blocks_func_t func;
 
        else
                func = register_mem_block_under_node_early;
 
-       return walk_memory_blocks(PFN_PHYS(start_pfn),
-                                 PFN_PHYS(end_pfn - start_pfn), (void *)&nid,
-                                 func);
+       walk_memory_blocks(PFN_PHYS(start_pfn), PFN_PHYS(end_pfn - start_pfn),
+                          (void *)&nid, func);
+       return;
 }
 
 #ifdef CONFIG_HUGETLBFS
 
 typedef  void (*node_registration_func_t)(struct node *);
 
 #if defined(CONFIG_MEMORY_HOTPLUG_SPARSE) && defined(CONFIG_NUMA)
-int link_mem_sections(int nid, unsigned long start_pfn,
-                     unsigned long end_pfn,
-                     enum meminit_context context);
+void link_mem_sections(int nid, unsigned long start_pfn,
+                      unsigned long end_pfn,
+                      enum meminit_context context);
 #else
-static inline int link_mem_sections(int nid, unsigned long start_pfn,
-                                   unsigned long end_pfn,
-                                   enum meminit_context context)
+static inline void link_mem_sections(int nid, unsigned long start_pfn,
+                                    unsigned long end_pfn,
+                                    enum meminit_context context)
 {
-       return 0;
 }
 #endif
 
                if (error)
                        return error;
                /* link memory sections under this node */
-               error = link_mem_sections(nid, start_pfn, end_pfn,
-                                         MEMINIT_EARLY);
+               link_mem_sections(nid, start_pfn, end_pfn, MEMINIT_EARLY);
        }
 
        return error;