Commit 8dff01f7 authored by David Kershner's avatar David Kershner Committed by Greg Kroah-Hartman

staging: unisys: visorbus: save_crash_message add error handling

Add proper error handling to the function save_crash_message.
Signed-off-by: default avatarDavid Kershner <david.kershner@unisys.com>
Reported-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 2c4ef563
...@@ -579,57 +579,63 @@ enum crash_obj_type { ...@@ -579,57 +579,63 @@ enum crash_obj_type {
CRASH_BUS, CRASH_BUS,
}; };
static void static int
save_crash_message(struct controlvm_message *msg, enum crash_obj_type typ) save_crash_message(struct controlvm_message *msg, enum crash_obj_type typ)
{ {
u32 local_crash_msg_offset; u32 local_crash_msg_offset;
u16 local_crash_msg_count; u16 local_crash_msg_count;
int err;
if (visorchannel_read(controlvm_channel, err = visorchannel_read(controlvm_channel,
offsetof(struct spar_controlvm_channel_protocol, offsetof(struct spar_controlvm_channel_protocol,
saved_crash_message_count), saved_crash_message_count),
&local_crash_msg_count, sizeof(u16)) < 0) { &local_crash_msg_count, sizeof(u16));
if (err) {
POSTCODE_LINUX_2(CRASH_DEV_CTRL_RD_FAILURE_PC, POSTCODE_LINUX_2(CRASH_DEV_CTRL_RD_FAILURE_PC,
POSTCODE_SEVERITY_ERR); POSTCODE_SEVERITY_ERR);
return; return err;
} }
if (local_crash_msg_count != CONTROLVM_CRASHMSG_MAX) { if (local_crash_msg_count != CONTROLVM_CRASHMSG_MAX) {
POSTCODE_LINUX_3(CRASH_DEV_COUNT_FAILURE_PC, POSTCODE_LINUX_3(CRASH_DEV_COUNT_FAILURE_PC,
local_crash_msg_count, local_crash_msg_count,
POSTCODE_SEVERITY_ERR); POSTCODE_SEVERITY_ERR);
return; return -EIO;
} }
if (visorchannel_read(controlvm_channel, err = visorchannel_read(controlvm_channel,
offsetof(struct spar_controlvm_channel_protocol, offsetof(struct spar_controlvm_channel_protocol,
saved_crash_message_offset), saved_crash_message_offset),
&local_crash_msg_offset, sizeof(u32)) < 0) { &local_crash_msg_offset, sizeof(u32));
if (err) {
POSTCODE_LINUX_2(CRASH_DEV_CTRL_RD_FAILURE_PC, POSTCODE_LINUX_2(CRASH_DEV_CTRL_RD_FAILURE_PC,
POSTCODE_SEVERITY_ERR); POSTCODE_SEVERITY_ERR);
return; return err;
} }
if (typ == CRASH_BUS) { if (typ == CRASH_BUS) {
if (visorchannel_write(controlvm_channel, err = visorchannel_write(controlvm_channel,
local_crash_msg_offset, local_crash_msg_offset,
msg, msg,
sizeof(struct controlvm_message)) < 0) { sizeof(struct controlvm_message));
if (err) {
POSTCODE_LINUX_2(SAVE_MSG_BUS_FAILURE_PC, POSTCODE_LINUX_2(SAVE_MSG_BUS_FAILURE_PC,
POSTCODE_SEVERITY_ERR); POSTCODE_SEVERITY_ERR);
return; return err;
} }
} else { } else {
local_crash_msg_offset += sizeof(struct controlvm_message); local_crash_msg_offset += sizeof(struct controlvm_message);
if (visorchannel_write(controlvm_channel, err = visorchannel_write(controlvm_channel,
local_crash_msg_offset, local_crash_msg_offset,
msg, msg,
sizeof(struct controlvm_message)) < 0) { sizeof(struct controlvm_message));
if (err) {
POSTCODE_LINUX_2(SAVE_MSG_DEV_FAILURE_PC, POSTCODE_LINUX_2(SAVE_MSG_DEV_FAILURE_PC,
POSTCODE_SEVERITY_ERR); POSTCODE_SEVERITY_ERR);
return; return err;
} }
} }
return 0;
} }
static void static void
......
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