Received: by 2002:a05:6358:5282:b0:b5:90e7:25cb with SMTP id g2csp3408449rwa; Tue, 23 Aug 2022 04:24:18 -0700 (PDT) X-Google-Smtp-Source: AA6agR6RE7Dr+dIcMgD7u2RtvqHQXhBu7XMMeu/l9dRBMqgCa4yCS+4zJLabt3uKQxcwB3lZmPGo X-Received: by 2002:a17:902:d484:b0:16f:161c:ac3f with SMTP id c4-20020a170902d48400b0016f161cac3fmr23746843plg.107.1661253858013; Tue, 23 Aug 2022 04:24:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661253858; cv=none; d=google.com; s=arc-20160816; b=cJhQtWZ2+m4t/RlD57dx74j02Sl0bUnyq4COjN3ebt9Hfyn23PGrf8i+RoMoIXBfop sEEsBNs7Nccf1SwvEpSjnfNqPdakJYimLLEbvSjuHCxb6J5vz4stUyame8d9xpPrKl5T XKkjgR1Gc7P0PZJraeFcgF5Ak2obrVzk5e+JfZgaZqj88Xr4t9suca+GuZ8uR96E7A1/ g1NWQ5TE6fPte2qydzK1qJFAlM1oZfzdfOz+pDWoiEpkJXJqK86UJ+2UMdDjjds9P7Ie flEZJDIrkmH2vAseMiu/yZiyMLHyJy4Z/lNdYVSkIK20/FXnQ2ZcY3x8RfM+bQ0igO/q zH0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Oj+Krpzz2hmh7AM49vdkr2nX9/pj1/PSWv9qkPxkVX8=; b=ytArtNvX4swlSIY5p+jNYJDoHFFQ0Wje6X/C9yvQZMQDXOfoI6ciEZQOpF51IZmH91 O3Fxa4G+xg5J/8pej/RgpNIzbyuS6Sxn1EOV481v3GmLkHHISpsWFIsXUWdgGbmfkc1k y6K4Yzi9jfk1MN1r8myBFDKxRezRg7cBnfy1Hb+xMi2EkyQddDQE7Q5BihU+jokumz4L 88VWaPSYjkso/tUrzrRSccstCdYsUySSY5LYpLVEsPxbVbpGRgZQRjZZF2iiEx9buzez RmcwxCq69ezFY/0p3ayXeWrn5p7AwfBIOf9RUyrzjjnREhoULdZhrsWhFMHYpnsqAZ5I wGdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=fvIwfQvZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n1-20020a17090a5a8100b001f54b1b5eb5si15710051pji.79.2022.08.23.04.24.07; Tue, 23 Aug 2022 04:24:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=fvIwfQvZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1356189AbiHWKxt (ORCPT + 99 others); Tue, 23 Aug 2022 06:53:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56650 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355908AbiHWKpi (ORCPT ); Tue, 23 Aug 2022 06:45:38 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 914AF1E3DB; Tue, 23 Aug 2022 02:11:23 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 440EAB81C35; Tue, 23 Aug 2022 09:11:22 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8FD88C433B5; Tue, 23 Aug 2022 09:11:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1661245881; bh=paIeGS5QXg8sqdMFoRFWME5DnnZlu2zOk2+29oEExnA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fvIwfQvZESIXaaveCGhAo+xuL59K5kOx5C9jksvxRVvVyc1f9mV59Qr5Nsdf09JUG 5Hng79kzwR0NKP357dz29x1HuQ2gujiZwF0BS42qVkGDgkdGpX0RyqoQTsmOMBJn9M B/xAn9TjVzDfcPWoF8vV87RkeiGYw9+Lc2RA3G/E= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Filipe Manana , David Sterba Subject: [PATCH 4.19 220/287] btrfs: fix lost error handling when looking up extended ref on log replay Date: Tue, 23 Aug 2022 10:26:29 +0200 Message-Id: <20220823080108.376730075@linuxfoundation.org> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220823080100.268827165@linuxfoundation.org> References: <20220823080100.268827165@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,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 lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Filipe Manana commit 7a6b75b79902e47f46328b57733f2604774fa2d9 upstream. During log replay, when processing inode references, if we get an error when looking up for an extended reference at __add_inode_ref(), we ignore it and proceed, returning success (0) if no other error happens after the lookup. This is obviously wrong because in case an extended reference exists and it encodes some name not in the log, we need to unlink it, otherwise the filesystem state will not match the state it had after the last fsync. So just make __add_inode_ref() return an error it gets from the extended reference lookup. Fixes: f186373fef005c ("btrfs: extended inode refs") CC: stable@vger.kernel.org # 4.9+ Signed-off-by: Filipe Manana Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/tree-log.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -1081,7 +1081,9 @@ again: extref = btrfs_lookup_inode_extref(NULL, root, path, name, namelen, inode_objectid, parent_objectid, 0, 0); - if (!IS_ERR_OR_NULL(extref)) { + if (IS_ERR(extref)) { + return PTR_ERR(extref); + } else if (extref) { u32 item_size; u32 cur_offset = 0; unsigned long base;