Commit 638a405f authored by Tyrel Datwyler's avatar Tyrel Datwyler Committed by Benjamin Herrenschmidt

powerpc/pseries: Fix over writing of rtas return code in update_dt_node

The rc variable is initially used to store the return code from the
ibm,update-properties rtas call which returns 0 or 1 on success. A return
code of 1 indicates that ibm,update-properties must be called again for the
node. However, the rc variable is overwritten by a call to update_dt_prop
which returns 0 on success. This results in ibm,update-properties not being
called again for the given node when the rtas call rc was previously 1.
Signed-off-by: default avatarTyrel Datwyler <tyreld@linux.vnet.ibm.com>
Acked-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent d8e533b4
...@@ -130,7 +130,7 @@ static int update_dt_node(u32 phandle, s32 scope) ...@@ -130,7 +130,7 @@ static int update_dt_node(u32 phandle, s32 scope)
struct update_props_workarea *upwa; struct update_props_workarea *upwa;
struct device_node *dn; struct device_node *dn;
struct property *prop = NULL; struct property *prop = NULL;
int i, rc; int i, rc, rtas_rc;
char *prop_data; char *prop_data;
char *rtas_buf; char *rtas_buf;
int update_properties_token; int update_properties_token;
...@@ -154,9 +154,9 @@ static int update_dt_node(u32 phandle, s32 scope) ...@@ -154,9 +154,9 @@ static int update_dt_node(u32 phandle, s32 scope)
upwa->phandle = phandle; upwa->phandle = phandle;
do { do {
rc = mobility_rtas_call(update_properties_token, rtas_buf, rtas_rc = mobility_rtas_call(update_properties_token, rtas_buf,
scope); scope);
if (rc < 0) if (rtas_rc < 0)
break; break;
prop_data = rtas_buf + sizeof(*upwa); prop_data = rtas_buf + sizeof(*upwa);
...@@ -202,7 +202,7 @@ static int update_dt_node(u32 phandle, s32 scope) ...@@ -202,7 +202,7 @@ static int update_dt_node(u32 phandle, s32 scope)
prop_data += vd; prop_data += vd;
} }
} }
} while (rc == 1); } while (rtas_rc == 1);
of_node_put(dn); of_node_put(dn);
kfree(rtas_buf); kfree(rtas_buf);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment