All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Mickaël Salaün" <mic@digikod.net>
To: Richard Weinberger <richard@nod.at>, linux-kernel@vger.kernel.org
Cc: Jeff Dike <jdike@addtoit.com>,
	Tristan Schmelcher <tschmelcher@google.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	user-mode-linux-devel@lists.sourceforge.net,
	user-mode-linux-user@lists.sourceforge.net,
	Al Viro <viro@zeniv.linux.org.uk>
Subject: Re: [PATCH 2/2] um: Use race-free temporary file creation
Date: Sat, 28 Nov 2015 23:56:40 +0100	[thread overview]
Message-ID: <565A3128.8010605@digikod.net> (raw)
In-Reply-To: <565A258D.4040206@nod.at>

[-- Attachment #1: Type: text/plain, Size: 1578 bytes --]


On 28/11/2015 23:07, Richard Weinberger wrote:
> Am 28.11.2015 um 22:32 schrieb Mickaël Salaün:
>> Open the memory mapped file with the O_TMPFILE flag when available.
>>
>> Signed-off-by: Mickaël Salaün <mic@digikod.net>
>> ---
>>  arch/um/os-Linux/mem.c | 12 ++++++++++++
>>  1 file changed, 12 insertions(+)
>>
>> diff --git a/arch/um/os-Linux/mem.c b/arch/um/os-Linux/mem.c
>> index 798aeb4..fe52e2d 100644
>> --- a/arch/um/os-Linux/mem.c
>> +++ b/arch/um/os-Linux/mem.c
>> @@ -106,6 +106,18 @@ 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 &&
> 
> Why are you handling EISDIR?

I follow the man page for open [1], I think it was a workaround needed for some kernel versions just after the O_TMPFILE was added but before the support for EOPNOTSUPP.
We may need to add the EACCES too for some version of glibc [2, 3]?

1. http://man7.org/linux/man-pages/man2/openat.2.html#BUGS
2. Commit 69a91c237ab0ebe4e9fdeaf6d0090c85275594ec and https://sourceware.org/bugzilla/show_bug.cgi?id=17523
3. https://bugs.gentoo.org/529044

> 
>> +			errno != EOPNOTSUPP))
>> +		return fd;
>> +	errno = 0;
> 
> Why are you resetting errno?

It's to ignore/reset the error code from open, but it may not be needed because of the next call to malloc?

 Mickaël


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 455 bytes --]

  reply	other threads:[~2015-11-28 22:56 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-28 21:32 [PATCH 0/2] um: Protect memory mapped file Mickaël Salaün
2015-11-28 21:32 ` Mickaël Salaün
2015-11-28 21:32 ` [PATCH 1/2] um: Set secure access mode for temporary file Mickaël Salaün
2015-11-28 21:32   ` Mickaël Salaün
2015-11-28 21:40   ` [uml-devel] " Richard Weinberger
2015-11-28 21:40     ` Richard Weinberger
2015-11-28 22:52     ` Mickaël Salaün
2015-11-28 22:55       ` Richard Weinberger
2015-11-28 22:55         ` Richard Weinberger
2015-11-28 23:00         ` Mickaël Salaün
2015-11-28 23:11           ` Richard Weinberger
2015-11-28 23:11             ` Richard Weinberger
2015-11-28 21:32 ` [PATCH 2/2] um: Use race-free temporary file creation Mickaël Salaün
2015-11-28 21:32   ` Mickaël Salaün
2015-11-28 22:07   ` [uml-devel] " Richard Weinberger
2015-11-28 22:07     ` Richard Weinberger
2015-11-28 22:56     ` Mickaël Salaün [this message]
2015-11-28 22:59       ` Richard Weinberger
2015-11-28 22:59         ` Richard Weinberger
2015-11-28 23:02         ` Mickaël Salaün

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=565A3128.8010605@digikod.net \
    --to=mic@digikod.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=jdike@addtoit.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=richard@nod.at \
    --cc=tschmelcher@google.com \
    --cc=user-mode-linux-devel@lists.sourceforge.net \
    --cc=user-mode-linux-user@lists.sourceforge.net \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.