Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp5604667imu; Mon, 26 Nov 2018 02:53:47 -0800 (PST) X-Google-Smtp-Source: AFSGD/U2+EIkGQY3jKgGWbhly5Adj2y8gR1HINOVixigNwb2PTUaR9nIxxymArSTcHFHnJncQf4U X-Received: by 2002:a63:9e58:: with SMTP id r24mr25016002pgo.264.1543229627757; Mon, 26 Nov 2018 02:53:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543229627; cv=none; d=google.com; s=arc-20160816; b=fKKhoxTKkQikNeGwXG5Imd+6M43lQ/vb0m1V07Q9Ra/0aGGOi4OCz10ykdfk7LKJkd cDyw9QWzjA3W1fzwi0y/h6LiJcffWcIZO0D64iOpceFbyD4+Z6inkzcDQPidmZq4RxCE ljmXvY1Mv5L8j/MPpB0UvJma11v+6rpP/UHlvh9h4+e1P+z/qk9f3jpUF9y/2wvovHF8 6sikgrkLbLtmVBUfHJThRVpDcIgV/Zt3Z6b6tsmaAcRkXZzOtDThsUNbnT4gESKrpiiq xjyd3AriJVeqWNpVT2eBsmTFM4VGVB91OP3NTmt+fm4veGKAQ/D+SnEUp85PS2slUI22 pZSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=DG3speIXMBkbi/T339/hbYEOha20yjSW94ZSmmDFpjo=; b=qOqFn2ME3RKa0avnbZZo+ZYPvzeTB7wdpBzzpE9YRVXRmLHPYMMLV/5eP0A2Fw9CPh avSgVveZFfNj4OC+Gktef6wlJGraXsLy5anL370l6RDPeWSJkTSP30k2p0Wy9ZI6qrlZ eWLv7Is0ZZIM4I+xFyGtSe02oFTo5LYKE1uh4CXBAITkVzIEU2TiTroXNwU91t+B+gxm EKoi9PYXyVahUohOKyvDJCjpI98mb9p917AxWMhLXuXkRLub7rlX2ZzCitFE9jM3nFfp 6akqASbPMdCNNUZnFCNcgE9pTlOaODPsUjYqhPlBqrxHNDU33dcg4KStFZQGi+Q9cD9B VSqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=2H+9RluU; 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 z8si16271514pgk.183.2018.11.26.02.53.33; Mon, 26 Nov 2018 02:53:47 -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; dkim=pass header.i=@kernel.org header.s=default header.b=2H+9RluU; 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 S1726370AbeKZVq1 (ORCPT + 99 others); Mon, 26 Nov 2018 16:46:27 -0500 Received: from mail.kernel.org ([198.145.29.99]:54166 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726167AbeKZVq0 (ORCPT ); Mon, 26 Nov 2018 16:46:26 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 4C0D12146F; Mon, 26 Nov 2018 10:52:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1543229561; bh=ytR9c0w9hAITEcgg4r/QTdeQDk7R5BBo8XGwODChzwU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2H+9RluUb82dJ62tC3PB/YKrh3I0lY7ROF2HrVGzm7z2yNumQyTgdo1NrSK7dQsOU dCj5O4ZiJZoeVdaDMte3R4uyE7DSAl4Koj1Dkk45xY0aoTkpbzOBdox4rLHlOm0VAt tIvbTpW2OXvdj9hjGH8U1M07Lj6qiN8RV2uO3Fxk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jann Horn , Andrew Morton , Jeff Mahoney , Eric Biggers , Al Viro , Linus Torvalds , Sasha Levin Subject: [PATCH 3.18 02/24] reiserfs: propagate errors from fill_with_dentries() properly Date: Mon, 26 Nov 2018 11:50:56 +0100 Message-Id: <20181126105030.173063041@linuxfoundation.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181126105029.790599475@linuxfoundation.org> References: <20181126105029.790599475@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.18-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit b10298d56c9623f9b173f19959732d3184b35f4f ] fill_with_dentries() failed to propagate errors up to reiserfs_for_each_xattr() properly. Plumb them through. Note that reiserfs_for_each_xattr() is only used by reiserfs_delete_xattrs() and reiserfs_chown_xattrs(). The result of reiserfs_delete_xattrs() is discarded anyway, the only difference there is whether a warning is printed to dmesg. The result of reiserfs_chown_xattrs() does matter because it can block chowning of the file to which the xattrs belong; but either way, the resulting state can have misaligned ownership, so my patch doesn't improve things greatly. Credit for making me look at this code goes to Al Viro, who pointed out that the ->actor calling convention is suboptimal and should be changed. Link: http://lkml.kernel.org/r/20180802163335.83312-1-jannh@google.com Signed-off-by: Jann Horn Reviewed-by: Andrew Morton Cc: Jeff Mahoney Cc: Eric Biggers Cc: Al Viro Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Sasha Levin --- fs/reiserfs/xattr.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c index 59b29acb6419..0ec755043174 100644 --- a/fs/reiserfs/xattr.c +++ b/fs/reiserfs/xattr.c @@ -184,6 +184,7 @@ struct reiserfs_dentry_buf { struct dir_context ctx; struct dentry *xadir; int count; + int err; struct dentry *dentries[8]; }; @@ -205,6 +206,7 @@ fill_with_dentries(void *buf, const char *name, int namelen, loff_t offset, dentry = lookup_one_len(name, dbuf->xadir, namelen); if (IS_ERR(dentry)) { + dbuf->err = PTR_ERR(dentry); return PTR_ERR(dentry); } else if (!dentry->d_inode) { /* A directory entry exists, but no file? */ @@ -213,6 +215,7 @@ fill_with_dentries(void *buf, const char *name, int namelen, loff_t offset, "not found for file %s.\n", dentry->d_name.name, dbuf->xadir->d_name.name); dput(dentry); + dbuf->err = -EIO; return -EIO; } @@ -260,6 +263,10 @@ static int reiserfs_for_each_xattr(struct inode *inode, err = reiserfs_readdir_inode(dir->d_inode, &buf.ctx); if (err) break; + if (buf.err) { + err = buf.err; + break; + } if (!buf.count) break; for (i = 0; !err && i < buf.count && buf.dentries[i]; i++) { -- 2.17.1