From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_MUTT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 15C9AC282E3 for ; Sun, 26 May 2019 12:07:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EC92920815 for ; Sun, 26 May 2019 12:07:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727717AbfEZMHV (ORCPT ); Sun, 26 May 2019 08:07:21 -0400 Received: from zeniv.linux.org.uk ([195.92.253.2]:42272 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726296AbfEZMHV (ORCPT ); Sun, 26 May 2019 08:07:21 -0400 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.92 #3 (Red Hat Linux)) id 1hUrvr-0008Af-Cx; Sun, 26 May 2019 12:07:19 +0000 Date: Sun, 26 May 2019 13:07:19 +0100 From: Al Viro To: "J. R. Okajima" Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, kolyshkin@gmail.com Subject: Re: [PATCH] concrete /proc/mounts Message-ID: <20190526120719.GQ17978@ZenIV.linux.org.uk> References: <17910.1558861894@jrobl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <17910.1558861894@jrobl> User-Agent: Mutt/1.11.3 (2019-02-01) Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org On Sun, May 26, 2019 at 06:11:34PM +0900, J. R. Okajima wrote: > commit 1e83f8634c6efe7dd4e6036ee202ca10bdbca0b3 > Author: J. R. Okajima > Date: Sat May 25 18:35:13 2019 +0900 > > concrete /proc/mounts > > When the size of /proc/mounts exceeds PAGE_SIZE, seq_read() has to > release namespace_sem via mounts_op.m_stop(). It means if someone else > issues mount(2) or umount(2) and the mounts list got changed, then the > continuous getmntent(3) calls show the incomplete mounts list and some > entries may not appear in it. > > This patch generates the full mounts list when mounts_op.m_start() is > called, and keep it in the seq_file buffer until the file is closed. > The size of the buffer increases if necessary. Other operations m_next, > m_stop, m_show become meaningless, but still necessary for the seq_file > manner. > > I don't think the size of the buffer matters because many /proc entries > already keep the similar PAGE_SIZE buffer. Increasing /proc/mounts > buffer is to keep the correctness of the mount list. > > Reported-by: Kirill Kolyshkin > See-also: https://github.com/kolyshkin/procfs-test > Signed-off-by: J. R. Okajima Translation: let's generate the entire contents on the first read() and keep it until the sucker's closed; that way userland wont' see anything changing under it. Oh, wait... NAK.