summaryrefslogtreecommitdiffstats
path: root/drivers/xen
diff options
context:
space:
mode:
authorZhouyang Jia <jiazhouyang09@gmail.com>2018-06-15 20:14:37 -0400
committerJuergen Gross <jgross@suse.com>2018-06-19 08:54:49 -0400
commit7c63ca24c878e0051c91904b72174029320ef4bd (patch)
tree682bc15c1230921719e5480301f82adae381c9cf /drivers/xen
parent93efbd39870474cc536b9caf4a6efeb03b0bc56f (diff)
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: Zhouyang Jia <jiazhouyang09@gmail.com> Reviewed-by: Juergen Gross <jgross@suse.com> Signed-off-by: Juergen Gross <jgross@suse.com>
Diffstat (limited to 'drivers/xen')
-rw-r--r--drivers/xen/xen-scsiback.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/xen/xen-scsiback.c b/drivers/xen/xen-scsiback.c
index 7bc88fd43cfc..e2f3e8b0fba9 100644
--- a/drivers/xen/xen-scsiback.c
+++ b/drivers/xen/xen-scsiback.c
@@ -1012,6 +1012,7 @@ static void scsiback_do_add_lun(struct vscsibk_info *info, const char *state,
1012{ 1012{
1013 struct v2p_entry *entry; 1013 struct v2p_entry *entry;
1014 unsigned long flags; 1014 unsigned long flags;
1015 int err;
1015 1016
1016 if (try) { 1017 if (try) {
1017 spin_lock_irqsave(&info->v2p_lock, flags); 1018 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 scsiback_del_translation_entry(info, vir); 1028 scsiback_del_translation_entry(info, vir);
1028 } 1029 }
1029 } else if (!try) { 1030 } else if (!try) {
1030 xenbus_printf(XBT_NIL, info->dev->nodename, state, 1031 err = xenbus_printf(XBT_NIL, info->dev->nodename, state,
1031 "%d", XenbusStateClosed); 1032 "%d", XenbusStateClosed);
1033 if (err)
1034 xenbus_dev_error(info->dev, err,
1035 "%s: writing %s", __func__, state);
1032 } 1036 }
1033} 1037}
1034 1038
@@ -1067,8 +1071,11 @@ static void scsiback_do_1lun_hotplug(struct vscsibk_info *info, int op,
1067 snprintf(str, sizeof(str), "vscsi-devs/%s/p-dev", ent); 1071 snprintf(str, sizeof(str), "vscsi-devs/%s/p-dev", ent);
1068 val = xenbus_read(XBT_NIL, dev->nodename, str, NULL); 1072 val = xenbus_read(XBT_NIL, dev->nodename, str, NULL);
1069 if (IS_ERR(val)) { 1073 if (IS_ERR(val)) {
1070 xenbus_printf(XBT_NIL, dev->nodename, state, 1074 err = xenbus_printf(XBT_NIL, dev->nodename, state,
1071 "%d", XenbusStateClosed); 1075 "%d", XenbusStateClosed);
1076 if (err)
1077 xenbus_dev_error(info->dev, err,
1078 "%s: writing %s", __func__, state);
1072 return; 1079 return;
1073 } 1080 }
1074 strlcpy(phy, val, VSCSI_NAMELEN); 1081 strlcpy(phy, val, VSCSI_NAMELEN);
@@ -1079,8 +1086,11 @@ static void scsiback_do_1lun_hotplug(struct vscsibk_info *info, int op,
1079 err = xenbus_scanf(XBT_NIL, dev->nodename, str, "%u:%u:%u:%u", 1086 err = xenbus_scanf(XBT_NIL, dev->nodename, str, "%u:%u:%u:%u",
1080 &vir.hst, &vir.chn, &vir.tgt, &vir.lun); 1087 &vir.hst, &vir.chn, &vir.tgt, &vir.lun);
1081 if (XENBUS_EXIST_ERR(err)) { 1088 if (XENBUS_EXIST_ERR(err)) {
1082 xenbus_printf(XBT_NIL, dev->nodename, state, 1089 err = xenbus_printf(XBT_NIL, dev->nodename, state,
1083 "%d", XenbusStateClosed); 1090 "%d", XenbusStateClosed);
1091 if (err)
1092 xenbus_dev_error(info->dev, err,
1093 "%s: writing %s", __func__, state);
1084 return; 1094 return;
1085 } 1095 }
1086 1096