From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS31976 209.132.180.0/23 X-Spam-Status: No, score=-3.9 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 73D371F463 for ; Mon, 25 Nov 2019 13:22:29 +0000 (UTC) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:cc:subject:message-id:references :mime-version:content-type:in-reply-to; q=dns; s=default; b=yd+e ftSgmpf9qsh6kTOlp7i7zucEsPA/M9EKIIDXg+KIJOuBAyHLifruD5Q4ByP/dqI2 uG8cAUw0adWa13wZdouCo07L6QW275fKn70Rfhit256dIBYCxphNHJNDFdZgbv8z tXPmYvX982wWB13IWn4ObF7fAe9KkHBP0Tq3TN0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:cc:subject:message-id:references :mime-version:content-type:in-reply-to; s=default; bh=1bn9nVYOf7 ABnDOS9BuCupQ2sd8=; b=b4GgX7IMfezxTizfGtWqXo7mAvAryFN97kuOnEceiR lgv8L90kQpqgqS8u85nMDkMeZZq9U/XLXwiER5gRrYVRuol/d1C7h0RiII07MDgc UUTJgGDf47LYpLtj4gsvnI4c8cLT/bepqKqgKVl+GhGRIIvGpjiyUPxK3xyvSbye w= Received: (qmail 18081 invoked by alias); 25 Nov 2019 13:22:27 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 18069 invoked by uid 89); 25 Nov 2019 13:22:27 -0000 Authentication-Results: sourceware.org; auth=none X-HELO: mout-p-201.mailbox.org Date: Tue, 26 Nov 2019 00:21:45 +1100 From: Aleksa Sarai To: Al Viro Cc: Jeff Layton , "J. Bruce Fields" , Arnd Bergmann , David Howells , Shuah Khan , Shuah Khan , Ingo Molnar , Peter Zijlstra , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Song Liu , Yonghong Song , Andrii Nakryiko , Jonathan Corbet , Christian Brauner , Jann Horn , Linus Torvalds , Eric Biederman , Andy Lutomirski , Andrew Morton , Kees Cook , Tycho Andersen , David Drysdale , Chanho Min , Oleg Nesterov , Rasmus Villemoes , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Christian Brauner , Aleksa Sarai , dev@opencontainers.org, containers@lists.linux-foundation.org, bpf@vger.kernel.org, netdev@vger.kernel.org, linux-alpha@vger.kernel.org, linux-api@vger.kernel.org, libc-alpha@sourceware.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, linux-xtensa@linux-xtensa.org, sparclinux@vger.kernel.org Subject: Re: [PATCH v17 10/13] namei: LOOKUP_{IN_ROOT,BENEATH}: permit limited ".." resolution Message-ID: <20191125132145.btaxuurs2w3ldyxf@yavin.dot.cyphar.com> References: <20191117011713.13032-1-cyphar@cyphar.com> <20191117011713.13032-11-cyphar@cyphar.com> <20191125003501.GF4203@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="xfjlpf4rp232ejv4" Content-Disposition: inline In-Reply-To: <20191125003501.GF4203@ZenIV.linux.org.uk> --xfjlpf4rp232ejv4 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2019-11-25, Al Viro wrote: > On Sun, Nov 17, 2019 at 12:17:10PM +1100, Aleksa Sarai wrote: > > + if (unlikely(nd->flags & LOOKUP_IS_SCOPED)) { > > + /* > > + * If there was a racing rename or mount along our > > + * path, then we can't be sure that ".." hasn't jumped > > + * above nd->root (and so userspace should retry or use > > + * some fallback). > > + */ > > + if (unlikely(read_seqretry(&mount_lock, nd->m_seq))) > > + return -EAGAIN; > > + if (unlikely(read_seqretry(&rename_lock, nd->r_seq))) > > + return -EAGAIN; > > + } >=20 > Looks like excessive barriers to me - it's > rmb > check mount_lock.sequence > rmb > check rename_lock.sequence If you like, I can switch this to smp_rmb(); if (unlikely(__read_seqcount_retry(&mount_lock.seqcount, nd->m_seq))) return -EAGAIN; if (unlikely(__read_seqcount_retry(&rename_lock.seqcount, nd->r_seq))) return -EAGAIN; Though I think it makes it more noisy (and this code-path will only be hit for ".." and LOOKUP_IS_SCOPED). > > @@ -2266,6 +2274,10 @@ static const char *path_init(struct nameidata *n= d, unsigned flags) > > nd->last_type =3D LAST_ROOT; /* if there are only slashes... */ > > nd->flags =3D flags | LOOKUP_JUMPED | LOOKUP_PARENT; > > nd->depth =3D 0; > > + > > + nd->m_seq =3D read_seqbegin(&mount_lock); > > + nd->r_seq =3D read_seqbegin(&rename_lock); >=20 > Same here, pretty much (fetch/rmb/fetch/rmb) Unless I'm mistaken, wouldn't we have to do seqcount_lockdep_reader_access() explicitly -- so it would end up looking something like: seqcount_lockdep_reader_access(&mount_lock.seqcount); nd->m_seq =3D __read_seqcount_begin(&mount_lock.seqcount); seqcount_lockdep_reader_access(&mount_lock.seqcount); nd->r_seq =3D __read_seqcount_begin(&rename_lock.seqcount); smp_rmb(); Given this code only runs once at the start of each lookup, I'm not sure it makes much sense to expand it like that and make it look uglier. If you really want to avoid the duplicate memory barriers in the common case I could instead gate the rename_lock grab behind LOOKUP_IS_SCOPED (since that's the only time it's used). --=20 Aleksa Sarai Senior Software Engineer (Containers) SUSE Linux GmbH --xfjlpf4rp232ejv4 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQSxZm6dtfE8gxLLfYqdlLljIbnQEgUCXdvVZQAKCRCdlLljIbnQ EloCAP9GizB7Q/AkzjQ85bGLdovCLYKdqf/qIT7xsbiqpcFyAgD/QswcZX+n5/jN nekkrDU5Lj+ZmT9lPOf3tS+I4Q4wogM= =viit -----END PGP SIGNATURE----- --xfjlpf4rp232ejv4--