From patchwork Wed Jun 23 18:51:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 43980 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 50EB9398B843 for ; Wed, 23 Jun 2021 18:51:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 50EB9398B843 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1624474302; bh=1lPSYH/AkzZNCI/sTcAgfP6qVPveL+8fAzXTy5Kc/2M=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=qvUYBZk3MsFOawggp7i0yagXE7d4Fhrqumj6s2Dc7+Ouax4mK26jDKZDHdcwVOoor ZfoGbJwPmGXiuDr/aed7UrxJObFWUGx/LDdL+1DnKnVO2c1YWPv9eKUY0xVJppozFb G+jj3HashJGdf5+7FWSGMGAni30yaOLrK4IzaIlU= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x730.google.com (mail-qk1-x730.google.com [IPv6:2607:f8b0:4864:20::730]) by sourceware.org (Postfix) with ESMTPS id 614B6383803E for ; Wed, 23 Jun 2021 18:51:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 614B6383803E Received: by mail-qk1-x730.google.com with SMTP id bj15so7757823qkb.11 for ; Wed, 23 Jun 2021 11:51:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=1lPSYH/AkzZNCI/sTcAgfP6qVPveL+8fAzXTy5Kc/2M=; b=tel4320nzGE2705GOfiTu4m6JT7KAQgYeQW95KTIaqpN/v+muYBoUSz87Dxn9j+d89 ltsq2idfesSfMGPKWoVEC900gYho+0Zg2kRQHQX5WJTKSbfRvRou5Fe2bGK9iWN13TdF puTNGYuscBAbC30dk3cE+DCn/6QCyXw33l6gOcf2cvodHRTGVE4gey6WkWBBG3cZDgKz L+gji0Ng74XgjGDsdY/ZE+n/2jhJKL1UgvdNwgL99t9+k6p9hA4WpTKSvBzrKm3kk48Q 6dS1b5DwETHuVAtaHddlJbHrnmTgixsEIZHKxUEdSWFDrjEWoVGgwGBcPqed0AzPX7zp g4aw== X-Gm-Message-State: AOAM532MuQLVdsBUNKth0vHzwUNImn+J/4BRyy9Gav+erjYAD+DflJK2 LgvrrrWHy5tR4U0xSSqqDpA6P6TgG6rOBw== X-Google-Smtp-Source: ABdhPJys0qDFkngyXD24ZvTyYQ9rs+bDOYj9oGPVMPn1mgSK4JUe6FdzcRiYgeQjsMNQb+kLWrpWgg== X-Received: by 2002:a37:5943:: with SMTP id n64mr1571641qkb.122.1624474279796; Wed, 23 Jun 2021 11:51:19 -0700 (PDT) Received: from birita.. ([177.194.59.218]) by smtp.gmail.com with ESMTPSA id c11sm492293qth.29.2021.06.23.11.51.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Jun 2021 11:51:19 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH v6 0/5] Add close_range, closefrom, and posix_spawn_file_actions_closefrom_np Date: Wed, 23 Jun 2021 15:51:10 -0300 Message-Id: <20210623185115.395812-1-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Linux v5.9 added a new close_range syscall, which allows the caller to issue the kernel to close or set close-on-exec on a range of file descriptors. This patchset export the syscall along with two GNU extensions: closefrom, with similar semantics from other systems ((Solaris, OpenBSD, NetBSD, FreeBSD); and posix_spawn_file_actions_closefrom_np, which allows use close_range semantic on posix_spawn(). The first two patches are libsupport support for the tests. The third patch adds the Linux specific close_range syscall. The forth path adds the GNU extension closefrom, which use close_range if available. The final part adds the posix_spawn extension. Adhemerval Zanella (5): support: Add support_stack_alloc support: Add xclone linux: Add close_range io: Add closefrom [BZ #10353] posix: Add posix_spawn_file_actions_closefrom_np NEWS | 12 + include/bits/unistd_ext.h | 6 + include/unistd.h | 1 + io/Makefile | 4 +- io/Versions | 3 + io/closefrom.c | 34 ++ io/tst-closefrom.c | 152 +++++++++ manual/llio.texi | 55 ++++ posix/Makefile | 4 +- posix/Versions | 1 + posix/spawn.h | 8 + posix/spawn_faction_addclosefrom.c | 57 ++++ posix/spawn_faction_destroy.c | 1 + posix/spawn_int.h | 6 + posix/tst-spawn5.c | 284 ++++++++++++++++ posix/unistd.h | 6 + support/Makefile | 2 + support/support.h | 19 ++ support/support_stack_alloc.c | 76 +++++ support/xclone.c | 50 +++ support/xsched.h | 34 ++ support/xsigstack.c | 43 +-- sysdeps/generic/spawn_int_def.h | 24 ++ sysdeps/mach/hurd/i386/libc.abilist | 2 + sysdeps/mach/hurd/spawni.c | 4 + sysdeps/posix/spawni.c | 4 + sysdeps/unix/sysv/linux/Makefile | 6 +- sysdeps/unix/sysv/linux/Versions | 1 + sysdeps/unix/sysv/linux/aarch64/libc.abilist | 3 + sysdeps/unix/sysv/linux/alpha/libc.abilist | 3 + sysdeps/unix/sysv/linux/arc/libc.abilist | 3 + sysdeps/unix/sysv/linux/arm/be/libc.abilist | 3 + sysdeps/unix/sysv/linux/arm/le/libc.abilist | 3 + sysdeps/unix/sysv/linux/bits/unistd_ext.h | 22 ++ sysdeps/unix/sysv/linux/closefrom.c | 36 +++ sysdeps/unix/sysv/linux/closefrom_fallback.c | 99 ++++++ sysdeps/unix/sysv/linux/csky/libc.abilist | 3 + sysdeps/unix/sysv/linux/hppa/libc.abilist | 3 + sysdeps/unix/sysv/linux/i386/libc.abilist | 3 + sysdeps/unix/sysv/linux/ia64/libc.abilist | 3 + .../sysv/linux/m68k/coldfire/libc.abilist | 3 + .../unix/sysv/linux/m68k/m680x0/libc.abilist | 3 + .../sysv/linux/microblaze/be/libc.abilist | 3 + .../sysv/linux/microblaze/le/libc.abilist | 3 + .../sysv/linux/mips/mips32/fpu/libc.abilist | 3 + .../sysv/linux/mips/mips32/nofpu/libc.abilist | 3 + .../sysv/linux/mips/mips64/n32/libc.abilist | 3 + .../sysv/linux/mips/mips64/n64/libc.abilist | 3 + sysdeps/unix/sysv/linux/nios2/libc.abilist | 3 + .../linux/powerpc/powerpc32/fpu/libc.abilist | 3 + .../powerpc/powerpc32/nofpu/libc.abilist | 3 + .../linux/powerpc/powerpc64/be/libc.abilist | 3 + .../linux/powerpc/powerpc64/le/libc.abilist | 3 + .../unix/sysv/linux/riscv/rv32/libc.abilist | 3 + .../unix/sysv/linux/riscv/rv64/libc.abilist | 3 + .../unix/sysv/linux/s390/s390-32/libc.abilist | 3 + .../unix/sysv/linux/s390/s390-64/libc.abilist | 3 + sysdeps/unix/sysv/linux/sh/be/libc.abilist | 3 + sysdeps/unix/sysv/linux/sh/le/libc.abilist | 3 + .../sysv/linux/sparc/sparc32/libc.abilist | 3 + .../sysv/linux/sparc/sparc64/libc.abilist | 3 + sysdeps/unix/sysv/linux/spawn_int_def.h | 25 ++ sysdeps/unix/sysv/linux/spawni.c | 34 +- sysdeps/unix/sysv/linux/syscalls.list | 1 + sysdeps/unix/sysv/linux/tst-close_range.c | 303 ++++++++++++++++++ .../unix/sysv/linux/x86_64/64/libc.abilist | 3 + .../unix/sysv/linux/x86_64/x32/libc.abilist | 3 + 67 files changed, 1458 insertions(+), 57 deletions(-) create mode 100644 include/bits/unistd_ext.h create mode 100644 io/closefrom.c create mode 100644 io/tst-closefrom.c create mode 100644 posix/spawn_faction_addclosefrom.c create mode 100644 posix/tst-spawn5.c create mode 100644 support/support_stack_alloc.c create mode 100644 support/xclone.c create mode 100644 support/xsched.h create mode 100644 sysdeps/generic/spawn_int_def.h create mode 100644 sysdeps/unix/sysv/linux/closefrom.c create mode 100644 sysdeps/unix/sysv/linux/closefrom_fallback.c create mode 100644 sysdeps/unix/sysv/linux/spawn_int_def.h create mode 100644 sysdeps/unix/sysv/linux/tst-close_range.c