From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/14759 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Joshua Hudson Newsgroups: gmane.linux.lib.musl.general Subject: Re: Hangup calling setuid() from vfork() child Date: Mon, 30 Sep 2019 13:45:07 -0700 Message-ID: Reply-To: musl@lists.openwall.com Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="174934"; mail-complaints-to="usenet@blaine.gmane.org" To: musl Original-X-From: musl-return-14775-gllmg-musl=m.gmane.org@lists.openwall.com Mon Sep 30 22:45:28 2019 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.89) (envelope-from ) id 1iF2Xr-000jJ0-8G for gllmg-musl@m.gmane.org; Mon, 30 Sep 2019 22:45:23 +0200 Original-Received: (qmail 3595 invoked by uid 550); 30 Sep 2019 20:45:20 -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 3561 invoked from network); 30 Sep 2019 20:45:19 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=liHldcrHUzQ59wyEz6L/En1T1JU/buz5iNmZS3yL0uU=; b=mcNameN1h+RcxdLXQLKjSFmcWkBy3zpfBiLWxu+vBg1Uaw/Nac4l2lzh7GBnluoKtJ eBrmAHyOlg+9JMPY5JwTOoH63drmDYL/tF99ktl5PJrLvMpWJezX6F8XBmAfApLwD/Ih gS0GpuF5fr0xFTF7nmmxDF9MBu37YB+nPsvkCcULjDCPw3FDgKt0uVSOmIlkgGtLHKZJ b3EpvuwPP96RTXK92X3EOFl99jcEuRHfd17MPIwyNyK7YjoMf3mN4eL+ExTYlEOMwzL5 PPlTAPvoKjB+6BbkCXyt/1FEJ879d9qsr+bRDtIjjZ8B5lN+WCtIDVtmrlMr9RSFmF4f z+3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=liHldcrHUzQ59wyEz6L/En1T1JU/buz5iNmZS3yL0uU=; b=Yzv6OLFt7iqrQiF7YtwNPAZ0fU0XOqoJ+CID6hLoZadVxwmCUZ4tUqAsgzVFV5X+4/ m6pj4RMUjKR10YNSj7uCYggIQ2iz8Q3WHaVLbFMnWf5L4WT5AQOOVwweQrWJeccBhNsL uks57+JxwtDchVIN3ae/gE9LNWZup08H/ECkU3qvrhoF3iC8WkvQ9UQKjje7y21GEH3l 9u4ZIvAaO9jJGM6YB2t3CzmytXeDL2jOFA9DTkHOcfOZms/Ox1cViig3iXQevU7iJJuT XScBJ6wmHwv1tD6wCI6Dsy8yuuG6gATd8qsJzTWm9BgcZqhFQzEp4OcuY7Lu17t2Tfte 2RBg== X-Gm-Message-State: APjAAAUbXljWgw2MTE9To/43W3clnctHcbFyzXyRApqeepV4ZQXbeqwM G5zF1VYw0Gibp3/q/slESPUXQMV6qbkGcGR1N7TH9w== X-Google-Smtp-Source: APXvYqy8klVOd90GRsfv8VmEsCyfJMKcxsFD23VwdAdjRkqJS5Dv8isXPfQcfFh5mSB6d17axE3bpiRA1xsGTmyPiIE= X-Received: by 2002:a9f:20a6:: with SMTP id 35mr9241898uaa.140.1569876307783; Mon, 30 Sep 2019 13:45:07 -0700 (PDT) Xref: news.gmane.org gmane.linux.lib.musl.general:14759 Archived-At: > Basically, the vfork() child is in an invalid state and this cannot be repaired without damaging the parent. Works on glibc just fine. setuid() is on the list of signal-safe functions. http://man7.org/linux/man-pages/man7/signal-safety.7.html How about you call getpid() and check if you're on the process you think you're on before calling __synccall? Somebody else might have done syscall(SYS_fork). > So you might want to enable memory overcommit. I'm tired of paying the page fault penalty in the parent. It has a majority of system RAM, and most of the pages are CoW long after the vfork child hits execve.