Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 707c6235 authored by Bart Van Assche's avatar Bart Van Assche Committed by Christoph Hellwig
Browse files

configfs: use kvasprintf() instead of open-coding it

parent ce397d21
Loading
Loading
Loading
Loading
+4 −20
Original line number Diff line number Diff line
@@ -64,7 +64,6 @@ static void config_item_init(struct config_item *item)
 */
int config_item_set_name(struct config_item *item, const char *fmt, ...)
{
	int error = 0;
	int limit = CONFIGFS_ITEM_NAME_LEN;
	int need;
	va_list args;
@@ -79,25 +78,11 @@ int config_item_set_name(struct config_item *item, const char *fmt, ...)
	if (need < limit)
		name = item->ci_namebuf;
	else {
		/*
		 * Need more space? Allocate it and try again
		 */
		limit = need + 1;
		name = kmalloc(limit, GFP_KERNEL);
		if (!name) {
			error = -ENOMEM;
			goto Done;
		}
		va_start(args, fmt);
		need = vsnprintf(name, limit, fmt, args);
		name = kvasprintf(GFP_KERNEL, fmt, args);
		va_end(args);

		/* Still? Give up. */
		if (need >= limit) {
			kfree(name);
			error = -EFAULT;
			goto Done;
		}
		if (!name)
			return -EFAULT;
	}

	/* Free the old name, if necessary. */
@@ -106,8 +91,7 @@ int config_item_set_name(struct config_item *item, const char *fmt, ...)

	/* Now, set the new name */
	item->ci_name = name;
 Done:
	return error;
	return 0;
}
EXPORT_SYMBOL(config_item_set_name);