提交 b0a478ed 编写于 作者: N Nathan Fontenot 提交者: Michael Ellerman

powerpc/pseries: Correct memory hotplug locking

Memory dlpar handling can return from dlpar_memory() without releasing the
device_hotplug lock. Correct this routine to ensure the lock is released.

Fixes: 5f97b2a0 ("powerpc/pseries: Implement memory hotplug add in the kernel")
Signed-off-by: NNathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
上级 3a29dd6d
...@@ -562,13 +562,15 @@ int dlpar_memory(struct pseries_hp_errorlog *hp_elog) ...@@ -562,13 +562,15 @@ int dlpar_memory(struct pseries_hp_errorlog *hp_elog)
lock_device_hotplug(); lock_device_hotplug();
dn = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory"); dn = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory");
if (!dn) if (!dn) {
return -EINVAL; rc = -EINVAL;
goto dlpar_memory_out;
}
prop = dlpar_clone_drconf_property(dn); prop = dlpar_clone_drconf_property(dn);
if (!prop) { if (!prop) {
of_node_put(dn); rc = -EINVAL;
return -EINVAL; goto dlpar_memory_out;
} }
switch (hp_elog->action) { switch (hp_elog->action) {
...@@ -599,6 +601,7 @@ int dlpar_memory(struct pseries_hp_errorlog *hp_elog) ...@@ -599,6 +601,7 @@ int dlpar_memory(struct pseries_hp_errorlog *hp_elog)
else else
dlpar_update_drconf_property(dn, prop); dlpar_update_drconf_property(dn, prop);
dlpar_memory_out:
of_node_put(dn); of_node_put(dn);
unlock_device_hotplug(); unlock_device_hotplug();
return rc; return rc;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册