@@ -199,7 +199,7 @@ int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm,
acpi_handle handle;
unsigned int func;
const u8 *uuid;
- int rc, i;
+ int rc = 0, xlat_rc, i;
func = cmd;
if (cmd == ND_CMD_CALL) {
@@ -343,21 +343,20 @@ int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm,
* unfilled in the output buffer
*/
rc = buf_len - offset - in_buf.buffer.length;
- if (cmd_rc)
- *cmd_rc = xlat_status(nvdimm, buf, cmd,
- fw_status);
} else {
dev_err(dev, "%s:%s underrun cmd: %s buf_len: %d out_len: %d\n",
__func__, dimm_name, cmd_name, buf_len,
offset);
rc = -ENXIO;
+ goto out;
}
- } else {
- rc = 0;
- if (cmd_rc)
- *cmd_rc = xlat_status(nvdimm, buf, cmd, fw_status);
}
+ xlat_rc = xlat_status(nvdimm, buf, cmd, fw_status);
+
+ if (cmd_rc)
+ *cmd_rc = xlat_rc;
+
out:
ACPI_FREE(out_obj);
Make sure that xlat_status is unconditionally called. Signed-off-by: Dave Jiang <dave.jiang@intel.com> --- drivers/acpi/nfit/core.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)