um: Remove use of asprinf in umid.c
commit5.4-rM2-2.2.x-imx-squashed97be7ceaf7
upstream. 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:0d4e5ac7e7
("um: remove uses of variable length arrays") Cc: stable@vger.kernel.org Signed-off-by: Anton Ivanov <anton.ivanov@cambridgegreys.com> Signed-off-by: Richard Weinberger <richard@nod.at> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
parent
26d72a8460
commit
a7b014b54c
|
@ -137,20 +137,13 @@ static inline int is_umdir_used(char *dir)
|
||||||
{
|
{
|
||||||
char pid[sizeof("nnnnn\0")], *end, *file;
|
char pid[sizeof("nnnnn\0")], *end, *file;
|
||||||
int dead, fd, p, n, err;
|
int dead, fd, p, n, err;
|
||||||
size_t filelen;
|
size_t filelen = strlen(dir) + sizeof("/pid") + 1;
|
||||||
|
|
||||||
err = asprintf(&file, "%s/pid", dir);
|
file = malloc(filelen);
|
||||||
if (err < 0)
|
if (!file)
|
||||||
return 0;
|
return -ENOMEM;
|
||||||
|
|
||||||
filelen = strlen(file);
|
snprintf(file, filelen, "%s/pid", dir);
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
dead = 0;
|
dead = 0;
|
||||||
fd = open(file, O_RDONLY);
|
fd = open(file, O_RDONLY);
|
||||||
|
|
Loading…
Reference in New Issue