lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 28 Apr 2008 08:13:31 -0700
From:	Ulrich Drepper <drepper@...hat.com>
To:	Michael Kerrisk <mtk.manpages@...glemail.com>
CC:	Michael Kerrisk <mtk.manpages@...il.com>,
	Alan Cox <alan@...rguk.ukuu.org.uk>,
	linux-kernel@...r.kernel.org, netdev@...r.kernel.org,
	akpm@...ux-foundation.org, torvalds@...ux-foundation.org
Subject: Re: [PATCH] paccept, socket, socketpair w/flags

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Michael Kerrisk wrote:
> You have said it would be cleaner to have new syscalls for socket()
> and socketpair().  I understand your reasoning for that to be that
> doing so is cleaner than overloading the type argument of the existing
> versions of these syscalls.  I agree.  So, since you are adding new
> syscalls for all of the other interfaces, why not do it for these two
> syscalls also?

If the range of the existing parameter can indeed be restricted as
needed for the flags it is the better approach for programmers since all
that is needed for a programmer to do is to write


   fd = socket(PF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0);
   if (fd == -1 && errno == EINVAL)
     {
       fd = socket(PF_INET, SOCK_STREAM, 0);
       if (fd != -1)
         fcntl(fd, F_SETFD, FD_CLOEXEC);
     }

No autoconf code needed to detect the presence of a new function.  You
can even imagine that convenience libraries will do the above
automatically (not libc, though, where you want to recognize this
situation).


> Okay -- I see your point (and I didn't read your patches closely
> enough).  However, the rationale for the implementations proposed to
> date isn't very clear.  So far we have the following new flags:
> 
> timerfd_create() -- TFD_CLOEXEC
> signalfd4() -- SFD_CLOEXEC
> eventfd2() -- EFD_CLOEXEC
> epoll_create2() -- EPOLL_CLOEXEC
> open() (and openat()), dup3() -- all use O_CLOEXEC
> socketpair(), socket(), paccept -- all use SOCK_CLOEXEC
> pipe2() -- to be determined

Use O_CLOEXEC, normal filesystem operation.

> inotify_init2() -- to be determined

New flag.


> It would help if you laid out your reasoning for creating distinct
> flags for some syscalls but not others.  For example, is the
> assumption here that socketpair(), socket(), and paccept() will always
> use the same set of flags?

Yes, they are all related interfaces.  Using the same name indicates
similarity.


And just to complicate things even more:

if we'd go with sys_indirect we can have single way to specify
close-on-exec for all syscalls.  That would be at the syscall level.  At
the API level we'd still need separate names and possibly values.

- --
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)

iD8DBQFIFemb2ijCOnn/RHQRAjNCAJ0QCvEJoynwbPveUZQqsyVnEAHtmgCZAe0R
jNlcvQFI06n2ckFhEqUcEbE=
=sJhN
-----END PGP SIGNATURE-----
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ