From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id CA4AB38582A2 for ; Mon, 4 Jul 2022 21:51:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CA4AB38582A2 Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-333-VJ-g4rQ0OCOCu62GO0065g-1; Mon, 04 Jul 2022 17:51:58 -0400 X-MC-Unique: VJ-g4rQ0OCOCu62GO0065g-1 Received: by mail-qt1-f200.google.com with SMTP id x16-20020ac85f10000000b0031d3262f264so7790139qta.22 for ; Mon, 04 Jul 2022 14:51:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:organization:in-reply-to :content-transfer-encoding; bh=q/RVCkakYeJqHfZ9kxlE9tCFCsxMZEeiY54mJQ7NtvE=; b=1IdaZcsA23dA/8+Ay7wUTwZ69Ntrf4rTGBTleO3hZc1hSAp3J2P2JUJ8anLu+GeyLt 7NXMmgFGqr/10z+LAnSZXK4/i+ZYaidM3g4Oc49h/yR3hJiPhZzoNHJosQQ8uMNnT25I 67nMj2qr7ZPthFjpy1i4EKvMNWJrjICJfL6PptYu53Vm6nxglLEnZdZSbEhTWeS/Qfex N7MYaSwJZ7L9rCvNe68zua9Bt63+mAI2DGqUK4fCfl22pgzzB8R6IweIMF/fmFMexgSO q+NA9N9VfCJXOISYpgZfsXirY+Jt/zLUpgbQtdAemvBB5LTNJzHREk/3Fr6VYZTavFEU 4Xug== X-Gm-Message-State: AJIora+K6R8uViy7/EY7urQtizRwJJsMmg72Y7ooFaIwOOD5qqfcuRYF n58INIGFbHdfxiLK7d+Zhcfo8/be5o1qYPagiVIbQXCAX6DsyVl6pKP5yx74iHw3JVudvAMbXZv T7eH1l1DE7JQkq+skPD5N X-Received: by 2002:a37:a1d4:0:b0:6b4:7899:ee5d with SMTP id k203-20020a37a1d4000000b006b47899ee5dmr2162373qke.446.1656971517302; Mon, 04 Jul 2022 14:51:57 -0700 (PDT) X-Google-Smtp-Source: AGRyM1v3lS7dszqSds5QO/lWDwIXahFHVK7Cdt90lakZI2pcTh7kjftYMBtbKoI1n8gTHqO0BYcDAQ== X-Received: by 2002:a37:a1d4:0:b0:6b4:7899:ee5d with SMTP id k203-20020a37a1d4000000b006b47899ee5dmr2162364qke.446.1656971516843; Mon, 04 Jul 2022 14:51:56 -0700 (PDT) Received: from [192.168.0.241] (135-23-175-80.cpe.pppoe.ca. [135.23.175.80]) by smtp.gmail.com with ESMTPSA id az16-20020a05620a171000b006af4a816963sm18500654qkb.133.2022.07.04.14.51.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 04 Jul 2022 14:51:56 -0700 (PDT) Message-ID: <0c64445d-a4f7-bb60-d165-e3c02d89549e@redhat.com> Date: Mon, 4 Jul 2022 17:51:55 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0 Subject: Re: [PATCH v7 5/5] linux: Add mount_setattr To: Adhemerval Zanella , libc-alpha@sourceware.org References: <20220624195919.435424-1-adhemerval.zanella@linaro.org> <20220624195919.435424-6-adhemerval.zanella@linaro.org> From: Carlos O'Donell Organization: Red Hat In-Reply-To: <20220624195919.435424-6-adhemerval.zanella@linaro.org> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-16.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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-List-Received-Date: Mon, 04 Jul 2022 21:52:02 -0000 On 6/24/22 15:59, Adhemerval Zanella wrote: > It was added on Linux 5.12 (2a1867219c7b27f928e2545782b86daaf9ad50bd) > to allow change the properties of a mount or a mount tree using file > descriptors which the new mount api is based on. > > Checked on x86_64-linux-gnu. LGTM. Matches kernel API. Reviewed-by: Carlos O'Donell > --- > NEWS | 8 ++--- > sysdeps/unix/sysv/linux/Versions | 1 + > sysdeps/unix/sysv/linux/aarch64/libc.abilist | 1 + > sysdeps/unix/sysv/linux/alpha/libc.abilist | 1 + > sysdeps/unix/sysv/linux/arc/libc.abilist | 1 + > sysdeps/unix/sysv/linux/arm/be/libc.abilist | 1 + > sysdeps/unix/sysv/linux/arm/le/libc.abilist | 1 + > sysdeps/unix/sysv/linux/csky/libc.abilist | 1 + > sysdeps/unix/sysv/linux/hppa/libc.abilist | 1 + > sysdeps/unix/sysv/linux/i386/libc.abilist | 1 + > sysdeps/unix/sysv/linux/ia64/libc.abilist | 1 + > .../sysv/linux/m68k/coldfire/libc.abilist | 1 + > .../unix/sysv/linux/m68k/m680x0/libc.abilist | 1 + > .../sysv/linux/microblaze/be/libc.abilist | 1 + > .../sysv/linux/microblaze/le/libc.abilist | 1 + > .../sysv/linux/mips/mips32/fpu/libc.abilist | 1 + > .../sysv/linux/mips/mips32/nofpu/libc.abilist | 1 + > .../sysv/linux/mips/mips64/n32/libc.abilist | 1 + > .../sysv/linux/mips/mips64/n64/libc.abilist | 1 + > sysdeps/unix/sysv/linux/nios2/libc.abilist | 1 + > sysdeps/unix/sysv/linux/or1k/libc.abilist | 1 + > .../linux/powerpc/powerpc32/fpu/libc.abilist | 1 + > .../powerpc/powerpc32/nofpu/libc.abilist | 1 + > .../linux/powerpc/powerpc64/be/libc.abilist | 1 + > .../linux/powerpc/powerpc64/le/libc.abilist | 1 + > .../unix/sysv/linux/riscv/rv32/libc.abilist | 1 + > .../unix/sysv/linux/riscv/rv64/libc.abilist | 1 + > .../unix/sysv/linux/s390/s390-32/libc.abilist | 1 + > .../unix/sysv/linux/s390/s390-64/libc.abilist | 1 + > sysdeps/unix/sysv/linux/sh/be/libc.abilist | 1 + > sysdeps/unix/sysv/linux/sh/le/libc.abilist | 1 + > .../sysv/linux/sparc/sparc32/libc.abilist | 1 + > .../sysv/linux/sparc/sparc64/libc.abilist | 1 + > sysdeps/unix/sysv/linux/sys/mount.h | 22 ++++++++++++++ > sysdeps/unix/sysv/linux/syscalls.list | 1 + > sysdeps/unix/sysv/linux/tst-mount-consts.py | 4 ++- > sysdeps/unix/sysv/linux/tst-mount.c | 30 +++++++++++++++++-- > .../unix/sysv/linux/x86_64/64/libc.abilist | 1 + > .../unix/sysv/linux/x86_64/x32/libc.abilist | 1 + > 39 files changed, 91 insertions(+), 8 deletions(-) > > diff --git a/NEWS b/NEWS > index f52718aa77..3fe7c29644 100644 > --- a/NEWS > +++ b/NEWS > @@ -41,10 +41,10 @@ Major new features: > have adverse impact. It is incompatible with EDNS0 usage and DNSSEC > validation by applications. > > -* On Linux, the fsopen, fsmount, move_mount, fsconfig, fspick, and open_tree > - functions have been added. They are part of the new Linux kernel mount > - APIs that allow applications to more flexibly configure and operate on > - filesystem mounts. The new mount APIs are specifically designed to work > +* On Linux, the fsopen, fsmount, move_mount, fsconfig, fspick, open_tree, > + and mount_setattr have been added. They are part of the new Linux kernel > + mount APIs that allow applications to more flexibly configure and operate > + on filesystem mounts. The new mount APIs are specifically designed to work OK. > with namespaces. > > Deprecated and removed features, and other changes affecting compatibility: > diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions > index b70530ef40..65d2ceda2c 100644 > --- a/sysdeps/unix/sysv/linux/Versions > +++ b/sysdeps/unix/sysv/linux/Versions > @@ -305,6 +305,7 @@ libc { > fsopen; > fspick; > move_mount; > + mount_setattr; OK. > open_tree; > pidfd_open; > pidfd_getfd; > diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist > index 2a666d8135..16d34b55c6 100644 > --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist > @@ -2620,6 +2620,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist > index 41bd7c1959..3f794bea0f 100644 > --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist > +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist > @@ -2717,6 +2717,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist > index 198fdab2f7..072627810c 100644 > --- a/sysdeps/unix/sysv/linux/arc/libc.abilist > +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist > @@ -2381,6 +2381,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist > index 6fd4e75df2..dbd5f07e6e 100644 > --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist > +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist > @@ -500,6 +500,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist > index 3ec572b50f..0f02d79faa 100644 > --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist > +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist > @@ -497,6 +497,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist > index 94f3deb3e5..11d3b36a78 100644 > --- a/sysdeps/unix/sysv/linux/csky/libc.abilist > +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist > @@ -2656,6 +2656,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist > index a7deaf3e26..5caa1321b1 100644 > --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist > +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist > @@ -2605,6 +2605,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist > index 5f1a1bc4d0..276d7d5619 100644 > --- a/sysdeps/unix/sysv/linux/i386/libc.abilist > +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist > @@ -2789,6 +2789,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist > index 1af8a55836..5e2249518e 100644 > --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist > @@ -2555,6 +2555,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist > index ad3a4b4008..802469a5b9 100644 > --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist > +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist > @@ -501,6 +501,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist > index 87e76f33a0..2f949397df 100644 > --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist > +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist > @@ -2732,6 +2732,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist > index 73df42c7aa..f63cc9cd4c 100644 > --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist > +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist > @@ -2705,6 +2705,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist > index 5c2e936547..88d2b707f9 100644 > --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist > +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist > @@ -2702,6 +2702,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist > index 45919d27d6..6c2bc0ee78 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist > +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist > @@ -2697,6 +2697,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist > index 8321b0efac..09c9980d95 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist > +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist > @@ -2695,6 +2695,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist > index c7198646d2..763920ea8f 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist > +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist > @@ -2703,6 +2703,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist > index 8b3cca2a54..36d30558c1 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist > @@ -2606,6 +2606,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist > index 2f1595bb35..e4383fe464 100644 > --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist > +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist > @@ -2744,6 +2744,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist > index d1d4e12d12..735a8eea7e 100644 > --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist > +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist > @@ -2127,6 +2127,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist > index 50c9fadaf0..715dd31afe 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist > @@ -2759,6 +2759,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist > index 8998a560cd..ac4b69e5fc 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist > @@ -2792,6 +2792,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist > index bca46bdbe5..fd42f1bc11 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist > @@ -2514,6 +2514,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist > index 97f6d96cd6..24688916dd 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist > @@ -2816,6 +2816,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist > index f588745b28..536eddf9f1 100644 > --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist > +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist > @@ -2383,6 +2383,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist > index 1acf8a4c54..214b4f1c87 100644 > --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist > @@ -2583,6 +2583,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist > index 7c8b410f1a..bd738a4eb8 100644 > --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist > +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist > @@ -2757,6 +2757,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist > index ba9317ee01..170361236a 100644 > --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist > @@ -2551,6 +2551,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist > index 75fa8834f1..88fcd03300 100644 > --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist > +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist > @@ -2612,6 +2612,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist > index 4a4f8ff33f..f1115ef46d 100644 > --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist > +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist > @@ -2609,6 +2609,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist > index d26671dba8..6063da1acf 100644 > --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist > +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist > @@ -2752,6 +2752,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist > index 16c2a98ab5..780d2c0987 100644 > --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist > @@ -2578,6 +2578,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h > index 534d05b3f5..f965986ba8 100644 > --- a/sysdeps/unix/sysv/linux/sys/mount.h > +++ b/sysdeps/unix/sysv/linux/sys/mount.h > @@ -23,6 +23,8 @@ > > #include > #include > +#include > +#include > #include > > #define BLOCK_SIZE 1024 > @@ -155,6 +157,17 @@ enum > #define MOUNT_ATTR_NOSYMFOLLOW 0x00200000 /* Do not follow symlinks. */ > > > +/* For mount_setattr. */ > +struct mount_attr > +{ > + uint64_t attr_set; > + uint64_t attr_clr; > + uint64_t propagation; > + uint64_t userns_fd; > +}; OK. Kernel uses __u64, but all names match and uint64_t is appropriate. Matches kernel. > + > +#define MOUNT_ATTR_SIZE_VER0 32 /* sizeof first published struct */ OK. Value 32 matches kernel. > + > /* move_mount flags. */ > #define MOVE_MOUNT_F_SYMLINKS 0x00000001 /* Follow symlinks on from path */ > #define MOVE_MOUNT_F_AUTOMOUNTS 0x00000002 /* Follow automounts on from path */ > @@ -240,6 +253,15 @@ extern int fspick (int __dfd, const char *__path, unsigned int __flags) > extern int open_tree (int __dfd, const char *__filename, unsigned int __flags) > __THROW; > > +/* Change the mount properties of the mount or an entire mount tree. If > + PATH is a relative pathname, then it is interpreted relative to the > + directory referred to by the file descriptor dirfd. Otherwise if DFD is > + the special value AT_FDCWD then PATH is interpreted relative to the current > + working directory of the calling process. */ > +extern int mount_setattr (int __dfd, const char *__path, unsigned int __flags, > + struct mount_attr *__uattr, size_t __usize) > + __THROW; OK. Returns int error. 5 arguments. Signature is int, const char *, unsigned int, struct mount_attr *, size_t. Matches kernel. > + > __END_DECLS > > #endif /* _SYS_MOUNT_H */ > diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list > index 493e68b834..6420049e8b 100644 > --- a/sysdeps/unix/sysv/linux/syscalls.list > +++ b/sysdeps/unix/sysv/linux/syscalls.list > @@ -39,6 +39,7 @@ mincore - mincore i:aUV mincore > mlock - mlock i:bU mlock > mlockall - mlockall i:i mlockall > mount EXTRA mount i:sssUp __mount mount > +mount_setattr EXTRA mount_setattr i:isUpU mount_setattr OK. i:isUpU. > move_mount EXTRA move_mount i:isisU move_mount > munlock - munlock i:aU munlock > munlockall - munlockall i: munlockall > diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py > index 82ab18d963..a62f803123 100755 > --- a/sysdeps/unix/sysv/linux/tst-mount-consts.py > +++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py > @@ -56,7 +56,9 @@ def main(): > check('FSMOUNT_.*'), > # MOVE_MOUNT__MASK may vary depending of the kernel version. > check('MOVE_MOUNT_.*', 'MOVE_MOUNT__MASK'), > - check('OPEN_TREE_*')) > + check('OPEN_TREE_*'), > + # MOUNT_ATTR_SIZE_VER0 is used for mount_setattr. > + check('MOUNT_ATTR_.*', 'MOUNT_ATTR_SIZE_VER0')) OK. Test all 11 MOUNT_ATTR_.* constants except for MOUNT_ATTR_SIZE_VER0 which may vary. > sys.exit(status) > > if __name__ == '__main__': > diff --git a/sysdeps/unix/sysv/linux/tst-mount.c b/sysdeps/unix/sysv/linux/tst-mount.c > index 12a665f950..502d7e3433 100644 > --- a/sysdeps/unix/sysv/linux/tst-mount.c > +++ b/sysdeps/unix/sysv/linux/tst-mount.c > @@ -23,6 +23,9 @@ > #include > #include > > +_Static_assert (sizeof (struct mount_attr) == MOUNT_ATTR_SIZE_VER0, > + "sizeof (struct mount_attr) != MOUNT_ATTR_SIZE_VER0"); OK. Check that the values match or error out. > + > static void > subprocess (void) > { > @@ -67,10 +70,31 @@ subprocess (void) > > TEST_COMPARE (open_tree (AT_FDCWD, "", 0), -1); > TEST_COMPARE (errno, ENOENT); > + int fd_tree = open_tree (AT_FDCWD, "/tmp", > + OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC); > + TEST_VERIFY (fd_tree != -1); > + > { > - int fd_tree = open_tree (AT_FDCWD, "/tmp", > - OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC); > - TEST_VERIFY (fd_tree != -1); > + struct mount_attr attr = > + { > + .attr_set = MOUNT_ATTR_RDONLY, > + }; > + mount_setattr (fd_tree, "", AT_EMPTY_PATH, &attr, > + sizeof (attr)); > + int r = mount_setattr (fd_tree, "", AT_EMPTY_PATH, &attr, > + sizeof (attr)); > + /* New mount API was added on 5.1, but mount_setattr on 5.12. */ > + if (r == -1) > + TEST_COMPARE (errno, ENOSYS); OK. > + else > + { > + TEST_COMPARE (mount_setattr (-1, "", AT_EMPTY_PATH, &attr, > + sizeof (attr)), -1); > + TEST_COMPARE (errno, EBADF); OK. -1 for fd. > + TEST_COMPARE (mount_setattr (fd_tree, "", AT_EMPTY_PATH, &attr, > + sizeof (attr) - 8), -1); > + TEST_COMPARE (errno, EINVAL); OK. Invalid. > + } > } > > _exit (0); > diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist > index bd7c4ef801..56cad609fe 100644 > --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist > +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist > @@ -2529,6 +2529,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F > diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist > index 1c7f60b41a..2ed242a62d 100644 > --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist > +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist > @@ -2635,6 +2635,7 @@ GLIBC_2.36 fsconfig F > GLIBC_2.36 fsmount F > GLIBC_2.36 fsopen F > GLIBC_2.36 fspick F > +GLIBC_2.36 mount_setattr F > GLIBC_2.36 move_mount F > GLIBC_2.36 open_tree F > GLIBC_2.36 pidfd_getfd F -- Cheers, Carlos.