Commit 97be7cea authored by Anton Ivanov's avatar Anton Ivanov Committed by Richard Weinberger
Browse files

um: Remove use of asprinf in umid.c



asprintf is not compatible with the existing uml memory allocation
mechanism. Its use on the "user" side of UML results in a corrupt slab
state.

Fixes: 0d4e5ac7 ("um: remove uses of variable length arrays")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarAnton Ivanov <anton.ivanov@cambridgegreys.com>
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent 09041c92
Loading
Loading
Loading
Loading
+5 −12
Original line number Diff line number Diff line
@@ -137,20 +137,13 @@ static inline int is_umdir_used(char *dir)
{
	char pid[sizeof("nnnnnnnnn")], *end, *file;
	int dead, fd, p, n, err;
	size_t filelen;
	size_t filelen = strlen(dir) + sizeof("/pid") + 1;

	err = asprintf(&file, "%s/pid", dir);
	if (err < 0)
		return 0;

	filelen = strlen(file);
	file = malloc(filelen);
	if (!file)
		return -ENOMEM;

	n = snprintf(file, filelen, "%s/pid", dir);
	if (n >= filelen) {
		printk(UM_KERN_ERR "is_umdir_used - pid filename too long\n");
		err = -E2BIG;
		goto out;
	}
	snprintf(file, filelen, "%s/pid", dir);

	dead = 0;
	fd = open(file, O_RDONLY);