aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Perches <joe@perches.com>2017-02-08 06:33:36 -0500
committerBoris Ostrovsky <boris.ostrovsky@oracle.com>2017-02-08 10:09:09 -0500
commitc0d197d55e8e8aeeea55f79bdf67e1c957bfa25d (patch)
tree7edcfb440ddbb1c578ba31c2b43cc8bbbc034dcf
parent7a1c44ebc5ac2e2c28d95b0da6060728c334e7e4 (diff)
xenbus: Neaten xenbus_va_dev_error
This function error patch can be simplified, so do so. Remove fail: label and somewhat obfuscating, used once "error_path" function. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
-rw-r--r--drivers/xen/xenbus/xenbus_client.c39
1 files changed, 10 insertions, 29 deletions
diff --git a/drivers/xen/xenbus/xenbus_client.c b/drivers/xen/xenbus/xenbus_client.c
index 056da6ee1a35..915d77785193 100644
--- a/drivers/xen/xenbus/xenbus_client.c
+++ b/drivers/xen/xenbus/xenbus_client.c
@@ -259,53 +259,34 @@ int xenbus_frontend_closed(struct xenbus_device *dev)
259} 259}
260EXPORT_SYMBOL_GPL(xenbus_frontend_closed); 260EXPORT_SYMBOL_GPL(xenbus_frontend_closed);
261 261
262/**
263 * Return the path to the error node for the given device, or NULL on failure.
264 * If the value returned is non-NULL, then it is the caller's to kfree.
265 */
266static char *error_path(struct xenbus_device *dev)
267{
268 return kasprintf(GFP_KERNEL, "error/%s", dev->nodename);
269}
270
271
272static void xenbus_va_dev_error(struct xenbus_device *dev, int err, 262static void xenbus_va_dev_error(struct xenbus_device *dev, int err,
273 const char *fmt, va_list ap) 263 const char *fmt, va_list ap)
274{ 264{
275 unsigned int len; 265 unsigned int len;
276 char *printf_buffer = NULL; 266 char *printf_buffer;
277 char *path_buffer = NULL; 267 char *path_buffer;
278 268
279#define PRINTF_BUFFER_SIZE 4096 269#define PRINTF_BUFFER_SIZE 4096
270
280 printf_buffer = kmalloc(PRINTF_BUFFER_SIZE, GFP_KERNEL); 271 printf_buffer = kmalloc(PRINTF_BUFFER_SIZE, GFP_KERNEL);
281 if (printf_buffer == NULL) 272 if (!printf_buffer)
282 goto fail; 273 return;
283 274
284 len = sprintf(printf_buffer, "%i ", -err); 275 len = sprintf(printf_buffer, "%i ", -err);
285 vsnprintf(printf_buffer+len, PRINTF_BUFFER_SIZE-len, fmt, ap); 276 vsnprintf(printf_buffer + len, PRINTF_BUFFER_SIZE - len, fmt, ap);
286 277
287 dev_err(&dev->dev, "%s\n", printf_buffer); 278 dev_err(&dev->dev, "%s\n", printf_buffer);
288 279
289 path_buffer = error_path(dev); 280 path_buffer = kasprintf(GFP_KERNEL, "error/%s", dev->nodename);
290 281 if (!path_buffer ||
291 if (path_buffer == NULL) { 282 xenbus_write(XBT_NIL, path_buffer, "error", printf_buffer))
292 dev_err(&dev->dev, "failed to write error node for %s (%s)\n", 283 dev_err(&dev->dev, "failed to write error node for %s (%s)\n",
293 dev->nodename, printf_buffer); 284 dev->nodename, printf_buffer);
294 goto fail;
295 }
296 285
297 if (xenbus_write(XBT_NIL, path_buffer, "error", printf_buffer) != 0) {
298 dev_err(&dev->dev, "failed to write error node for %s (%s)\n",
299 dev->nodename, printf_buffer);
300 goto fail;
301 }
302
303fail:
304 kfree(printf_buffer); 286 kfree(printf_buffer);
305 kfree(path_buffer); 287 kfree(path_buffer);
306} 288}
307 289
308
309/** 290/**
310 * xenbus_dev_error 291 * xenbus_dev_error
311 * @dev: xenbus device 292 * @dev: xenbus device