Received: by 10.223.185.116 with SMTP id b49csp735343wrg; Wed, 21 Feb 2018 06:09:00 -0800 (PST) X-Google-Smtp-Source: AH8x2244KE4dEfU+SMX9oDj5lSVmLycv8f+oumtWPF9eAlbrak3LVnRFNxK5s6fGH6YrlPNAe0ew X-Received: by 10.99.101.69 with SMTP id z66mr2852461pgb.347.1519222140741; Wed, 21 Feb 2018 06:09:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519222140; cv=none; d=google.com; s=arc-20160816; b=GWzKTx5iHAo7I9r87HVlluwKYJp8rWOuCHaOmQocHGVRRUDEzFlnkXd8KMCBAQyl8E Rp9jHXfrMupg7TZQ8PoPuxYnXn27OIUT07A8zbla9aY4M4BEo2IOQDPc//qVfEeErr6o qq53ez/zZ+SBNi7k4hQ+7E3xo7n/VKejiZa7u5hNu9Ejd6DKdeByDmMRbDm+e4i4jidW Qj+k+8Z5PW+sFMVfaftzBL3spnpghY0k+X8KV2+9LbhM1ubtgxa6BIy9EKWpSfro7v7R tpAZhkIcDmSLwMDgyz+uxDtLy3Wr1nI56xFLF00v+EtA8+mZz3bB+JZbVpbfNK4KZAaO ZywA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=aHGILldO9BV7+dkvVa4+BPwNriruQYGDY7yo1BKmpAM=; b=hcGgNH7n6fqdosxThEzEH7WAwwyKNGhMFbDWs9fwV0uFu4az5ky+Xwr2shYFe9fYEs xFnCkTHOnxyei6LozDmDtt7LBS5tPYuFPuuGlHF+J4L4e9mqM3GVVJxF2K2SsdIp1eC9 J0vWqptqZ7KmiDRV5Bo5XlEd9CInYNRi6uKOya0oUycI++8hmOD5SdIM6nlF9eAK4Y91 GS+nlz3Ivic1FtKD5psGhx9H9Xcw7P1HQa+AEPIBJFGgMHa/qFxen+5zuyBE+MDxe1tR 4EC2gLXGw7W1f5KFfAPL4f0O7jkmQwv5N4HvCOcOwX4zFGDgkUMXn1szoyYPPddUHDTo hAUg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h34-v6si10638229pld.761.2018.02.21.06.08.43; Wed, 21 Feb 2018 06:09:00 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S937313AbeBUOCB (ORCPT + 99 others); Wed, 21 Feb 2018 09:02:01 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:39458 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935699AbeBUNDN (ORCPT ); Wed, 21 Feb 2018 08:03:13 -0500 Received: from localhost (LFbn-1-12258-90.w90-92.abo.wanadoo.fr [90.92.71.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 09C1F1099; Wed, 21 Feb 2018 13:03:12 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Rich Felker , Miklos Szeredi , Al Viro Subject: [PATCH 4.14 121/167] seq_file: fix incomplete reset on read from zero offset Date: Wed, 21 Feb 2018 13:48:52 +0100 Message-Id: <20180221124531.122460958@linuxfoundation.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180221124524.639039577@linuxfoundation.org> References: <20180221124524.639039577@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Miklos Szeredi commit cf5eebae2cd28d37581507668605f4d23cd7218d upstream. When resetting iterator on a zero offset we need to discard any data already in the buffer (count), and private state of the iterator (version). For example this bug results in first line being repeated in /proc/mounts if doing a zero size read before a non-zero size read. Reported-by: Rich Felker Signed-off-by: Miklos Szeredi Fixes: e522751d605d ("seq_file: reset iterator to first record for zero offset") Cc: # v4.10 Signed-off-by: Al Viro Signed-off-by: Greg Kroah-Hartman --- fs/seq_file.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --- a/fs/seq_file.c +++ b/fs/seq_file.c @@ -181,8 +181,11 @@ ssize_t seq_read(struct file *file, char * if request is to read from zero offset, reset iterator to first * record as it might have been already advanced by previous requests */ - if (*ppos == 0) + if (*ppos == 0) { m->index = 0; + m->version = 0; + m->count = 0; + } /* Don't assume *ppos is where we left it */ if (unlikely(*ppos != m->read_pos)) {