um: Use race-free temporary file creation
Open the memory mapped file with the O_TMPFILE flag when available. Signed-off-by: Mickaël Salaün <mic@digikod.net> Cc: Jeff Dike <jdike@addtoit.com> Cc: Richard Weinberger <richard@nod.at> Acked-by: Tristan Schmelcher <tschmelcher@google.com> Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
committed by
Richard Weinberger
parent
571d2f0c34
commit
3e46b25376
@@ -106,6 +106,17 @@ static int __init make_tempfile(const char *template)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef O_TMPFILE
|
||||||
|
fd = open(tempdir, O_CLOEXEC | O_RDWR | O_EXCL | O_TMPFILE, 0700);
|
||||||
|
/*
|
||||||
|
* If the running system does not support O_TMPFILE flag then retry
|
||||||
|
* without it.
|
||||||
|
*/
|
||||||
|
if (fd != -1 || (errno != EINVAL && errno != EISDIR &&
|
||||||
|
errno != EOPNOTSUPP))
|
||||||
|
return fd;
|
||||||
|
#endif
|
||||||
|
|
||||||
tempname = malloc(strlen(tempdir) + strlen(template) + 1);
|
tempname = malloc(strlen(tempdir) + strlen(template) + 1);
|
||||||
if (tempname == NULL)
|
if (tempname == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
Reference in New Issue
Block a user