From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/12931 Path: news.gmane.org!.POSTED!not-for-mail From: Szabolcs Nagy Newsgroups: gmane.linux.lib.musl.general Subject: Re: [PATCH] mlock2 and memfd_create Date: Fri, 22 Jun 2018 20:25:22 +0200 Message-ID: <20180622182522.GW4418@port70.net> References: <20180619204314.GU4418@port70.net> <20180622001602.GA13372@gmail.com> <20180622091052.GV4418@port70.net> <20180622175833.GA13498@gmail.com> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: blaine.gmane.org 1529691811 15442 195.159.176.226 (22 Jun 2018 18:23:31 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 22 Jun 2018 18:23:31 +0000 (UTC) User-Agent: Mutt/1.9.1 (2017-09-22) To: musl@lists.openwall.com Original-X-From: musl-return-12947-gllmg-musl=m.gmane.org@lists.openwall.com Fri Jun 22 20:23:27 2018 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1fWQiU-0003wN-VY for gllmg-musl@m.gmane.org; Fri, 22 Jun 2018 20:23:27 +0200 Original-Received: (qmail 1815 invoked by uid 550); 22 Jun 2018 18:25:35 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 1784 invoked from network); 22 Jun 2018 18:25:34 -0000 Mail-Followup-To: musl@lists.openwall.com Content-Disposition: inline In-Reply-To: <20180622175833.GA13498@gmail.com> Xref: news.gmane.org gmane.linux.lib.musl.general:12931 Archived-At: * Andrei Vagin [2018-06-22 10:58:34 -0700]: > On Fri, Jun 22, 2018 at 11:10:52AM +0200, Szabolcs Nagy wrote: > > * Andrei Vagin [2018-06-21 17:16:03 -0700]: > > > On Tue, Jun 19, 2018 at 10:43:14PM +0200, Szabolcs Nagy wrote: > > > > + > > > > +int mlock2(const void *addr, size_t len, unsigned flags) > > > > +{ > > > > + if (flags == 0) > > > > + return mlock(addr, len); > > > > + return syscall(SYS_mlock2, addr, len, flags); > > > > > > I would prefer another way to support old kernels: > > > > > > int ret; > > > > > > ret = syscall(SYS_mlock2, addr, len, flags); > > > if (ret == -1 && errno == ENOSYS && flags == 0) > > > return mlock(addr, len); > > > return ret; > > > > > > This way works a bit slower on old kernels, but it doesn't have side > > > effects if mlock2 is supported. > > > > > > For example, the user can set seccomp rules, and he will not expect that > > > the mlock syscall will be executed, when he calls mlock2() in a code. > > > > > > > mlock2 is documented to be equivalent to mlock if flags==0, > > the glibc logic is the same and seccomp (or whatever else > > operating on the syscall layer) has to deal with mlock > > anyway (unless we change the mlock implementation too). > > so i would not be too worried about this. > > Glibc has the __ASSUME_MLOCK2 option, and if it is set only mlock2() is > used. Modern distributions will probably build glibc with this option. > I mean the glibc logic isn't exectly the same. And a concern about > seccomp is still valid. > glibc sets __ASSUME_MLOCK2 to true when the minimum required kernel version is linux v4.4 and then glibc stops working on older kernels. i don't know what distros set the minimum version to (the default is 3.2.0 and i don't expect it to be set higher by distros otherwise running in a container on a stable host with old kernel would fail), but musl tries not to break behaviour on older kernels whenever possible, so there is no minimum required kernel version, i.e. musl is equivalent to glibc with all __ASSUME_* set to false. > Anyway, I don't have strong objections about this patch, I just suggest > another way how it can be done and, from my point of view, it is better. > > Thanks, > Andrei