Commit 7c63ca24 authored by Zhouyang Jia's avatar Zhouyang Jia Committed by Juergen Gross

xen/scsiback: add error handling for xenbus_printf

When xenbus_printf fails, the lack of error-handling code may
cause unexpected results.

This patch adds error-handling code after calling xenbus_printf.
Signed-off-by: default avatarZhouyang Jia <jiazhouyang09@gmail.com>
Reviewed-by: default avatarJuergen Gross <jgross@suse.com>
Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
parent 93efbd39
...@@ -1012,6 +1012,7 @@ static void scsiback_do_add_lun(struct vscsibk_info *info, const char *state, ...@@ -1012,6 +1012,7 @@ static void scsiback_do_add_lun(struct vscsibk_info *info, const char *state,
{ {
struct v2p_entry *entry; struct v2p_entry *entry;
unsigned long flags; unsigned long flags;
int err;
if (try) { if (try) {
spin_lock_irqsave(&info->v2p_lock, flags); spin_lock_irqsave(&info->v2p_lock, flags);
...@@ -1027,8 +1028,11 @@ static void scsiback_do_add_lun(struct vscsibk_info *info, const char *state, ...@@ -1027,8 +1028,11 @@ static void scsiback_do_add_lun(struct vscsibk_info *info, const char *state,
scsiback_del_translation_entry(info, vir); scsiback_del_translation_entry(info, vir);
} }
} else if (!try) { } else if (!try) {
xenbus_printf(XBT_NIL, info->dev->nodename, state, err = xenbus_printf(XBT_NIL, info->dev->nodename, state,
"%d", XenbusStateClosed); "%d", XenbusStateClosed);
if (err)
xenbus_dev_error(info->dev, err,
"%s: writing %s", __func__, state);
} }
} }
...@@ -1067,8 +1071,11 @@ static void scsiback_do_1lun_hotplug(struct vscsibk_info *info, int op, ...@@ -1067,8 +1071,11 @@ static void scsiback_do_1lun_hotplug(struct vscsibk_info *info, int op,
snprintf(str, sizeof(str), "vscsi-devs/%s/p-dev", ent); snprintf(str, sizeof(str), "vscsi-devs/%s/p-dev", ent);
val = xenbus_read(XBT_NIL, dev->nodename, str, NULL); val = xenbus_read(XBT_NIL, dev->nodename, str, NULL);
if (IS_ERR(val)) { if (IS_ERR(val)) {
xenbus_printf(XBT_NIL, dev->nodename, state, err = xenbus_printf(XBT_NIL, dev->nodename, state,
"%d", XenbusStateClosed); "%d", XenbusStateClosed);
if (err)
xenbus_dev_error(info->dev, err,
"%s: writing %s", __func__, state);
return; return;
} }
strlcpy(phy, val, VSCSI_NAMELEN); strlcpy(phy, val, VSCSI_NAMELEN);
...@@ -1079,8 +1086,11 @@ static void scsiback_do_1lun_hotplug(struct vscsibk_info *info, int op, ...@@ -1079,8 +1086,11 @@ static void scsiback_do_1lun_hotplug(struct vscsibk_info *info, int op,
err = xenbus_scanf(XBT_NIL, dev->nodename, str, "%u:%u:%u:%u", err = xenbus_scanf(XBT_NIL, dev->nodename, str, "%u:%u:%u:%u",
&vir.hst, &vir.chn, &vir.tgt, &vir.lun); &vir.hst, &vir.chn, &vir.tgt, &vir.lun);
if (XENBUS_EXIST_ERR(err)) { if (XENBUS_EXIST_ERR(err)) {
xenbus_printf(XBT_NIL, dev->nodename, state, err = xenbus_printf(XBT_NIL, dev->nodename, state,
"%d", XenbusStateClosed); "%d", XenbusStateClosed);
if (err)
xenbus_dev_error(info->dev, err,
"%s: writing %s", __func__, state);
return; return;
} }
......
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