diff mbox

[v2] xen/scsiback: add error handling for xenbus_printf

Message ID 1529082372-59097-1-git-send-email-jiazhouyang09@gmail.com (mailing list archive)
State Superseded
Headers show

Commit Message

Zhouyang Jia June 15, 2018, 5:06 p.m. UTC
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>
---
v1->v2:
- Use xenbus_dev_error to report errors.
---
 drivers/xen/xen-scsiback.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

Comments

kernel test robot June 15, 2018, 7:22 p.m. UTC | #1
Hi,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on xen-tip/linux-next]
[also build test ERROR on v4.17 next-20180615]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/linux-kernel-owner-vger-kernel-org/xen-scsiback-add-error-handling-for-xenbus_printf/20180616-011349
base:   https://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git linux-next
config: i386-randconfig-x009-201823 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   drivers//xen/xen-scsiback.c: In function 'scsiback_do_add_lun':
>> drivers//xen/xen-scsiback.c:1032:32: error: 'err' undeclared (first use in this function)
       xenbus_dev_error(info->dev, err,
                                   ^~~
   drivers//xen/xen-scsiback.c:1032:32: note: each undeclared identifier is reported only once for each function it appears in

vim +/err +1032 drivers//xen/xen-scsiback.c

  1009	
  1010	static void scsiback_do_add_lun(struct vscsibk_info *info, const char *state,
  1011					char *phy, struct ids_tuple *vir, int try)
  1012	{
  1013		struct v2p_entry *entry;
  1014		unsigned long flags;
  1015	
  1016		if (try) {
  1017			spin_lock_irqsave(&info->v2p_lock, flags);
  1018			entry = scsiback_chk_translation_entry(info, vir);
  1019			spin_unlock_irqrestore(&info->v2p_lock, flags);
  1020			if (entry)
  1021				return;
  1022		}
  1023		if (!scsiback_add_translation_entry(info, phy, vir)) {
  1024			if (xenbus_printf(XBT_NIL, info->dev->nodename, state,
  1025					  "%d", XenbusStateInitialised)) {
  1026				pr_err("xenbus_printf error %s\n", state);
  1027				scsiback_del_translation_entry(info, vir);
  1028			}
  1029		} else if (!try) {
  1030			if (xenbus_printf(XBT_NIL, info->dev->nodename, state,
  1031				      "%d", XenbusStateClosed))
> 1032				xenbus_dev_error(info->dev, err,
  1033					"%s: writing %s", __func__, state);
  1034		}
  1035	}
  1036	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox

Patch

diff --git a/drivers/xen/xen-scsiback.c b/drivers/xen/xen-scsiback.c
index 7bc88fd..cec2133 100644
--- a/drivers/xen/xen-scsiback.c
+++ b/drivers/xen/xen-scsiback.c
@@ -1027,8 +1027,10 @@  static void scsiback_do_add_lun(struct vscsibk_info *info, const char *state,
 			scsiback_del_translation_entry(info, vir);
 		}
 	} else if (!try) {
-		xenbus_printf(XBT_NIL, info->dev->nodename, state,
-			      "%d", XenbusStateClosed);
+		if (xenbus_printf(XBT_NIL, info->dev->nodename, state,
+			      "%d", XenbusStateClosed))
+			xenbus_dev_error(info->dev, err,
+				"%s: writing %s", __func__, state);
 	}
 }
 
@@ -1067,8 +1069,10 @@  static void scsiback_do_1lun_hotplug(struct vscsibk_info *info, int op,
 	snprintf(str, sizeof(str), "vscsi-devs/%s/p-dev", ent);
 	val = xenbus_read(XBT_NIL, dev->nodename, str, NULL);
 	if (IS_ERR(val)) {
-		xenbus_printf(XBT_NIL, dev->nodename, state,
-			      "%d", XenbusStateClosed);
+		if (xenbus_printf(XBT_NIL, dev->nodename, state,
+			      "%d", XenbusStateClosed))
+			xenbus_dev_error(info->dev, err,
+				"%s: writing %s", __func__, state);
 		return;
 	}
 	strlcpy(phy, val, VSCSI_NAMELEN);
@@ -1079,8 +1083,10 @@  static void scsiback_do_1lun_hotplug(struct vscsibk_info *info, int op,
 	err = xenbus_scanf(XBT_NIL, dev->nodename, str, "%u:%u:%u:%u",
 			   &vir.hst, &vir.chn, &vir.tgt, &vir.lun);
 	if (XENBUS_EXIST_ERR(err)) {
-		xenbus_printf(XBT_NIL, dev->nodename, state,
-			      "%d", XenbusStateClosed);
+		if (xenbus_printf(XBT_NIL, dev->nodename, state,
+			      "%d", XenbusStateClosed))
+			xenbus_dev_error(info->dev, err,
+				"%s: writing %s", __func__, state);
 		return;
 	}