Received: by 2002:a05:6358:5282:b0:b5:90e7:25cb with SMTP id g2csp3325357rwa; Tue, 23 Aug 2022 02:53:18 -0700 (PDT) X-Google-Smtp-Source: AA6agR7Zf1SMpXvaf6dJmwxryT0fuU79rOxzYxIMsUpUkDLvyWJe46H22phCwM1lEVoFRtzh6N// X-Received: by 2002:a05:6402:1945:b0:446:692:8aeb with SMTP id f5-20020a056402194500b0044606928aebmr2847934edz.403.1661248398722; Tue, 23 Aug 2022 02:53:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661248398; cv=none; d=google.com; s=arc-20160816; b=LCmqNFHTvB/E3IZgWp1q6lAZyPZu1Ie7LOmk+JptnKwahBH3WihiXmI70PUiGgWqfx 4feAo2rqXIaFlvx9zA36jW+fd9gnAy9zGJHpBzCOlbZHvaY8Unk+PrY6qVt21D9naABJ 93aVpGTofmxUpqw+KF/BkoUHbv4Veui5FTTBHSbHOI0nltoGbVi6+WZ1PTOrbGPRGzVs UZCYTOyOCggoeMERq9e0fSqPWd/Lo51zcVVdm7DZSBj7cCk+zngxA9dZKNDbXgvpOc02 oBnmTf+/ZikRCbgMyWvqTiHPZQq0DMXpNTsWGDG1mpg+f8T0sz5jGY6pkWWNiO/l4vJq YnSg== 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=dG4+Kx4jnGOI4YoAvIUP1AlHU47md7tQhdyRDoUNkyM=; b=uYnXsFmPuLRXCB/RJD2S1Le1Xdh6RjZY8PyZ+cZikw+Kk5+EVnlsKTk2TISCjdFIyP QWsztZWjMLtOmHSyrPavXnknP92APhnnDVrz9lADUTyrD+L3Lj5pe+cbbujFooDm3W+f 2eIINQ2hRFGszmEiMiTg64Yf4BTQsdfZu+WyNE8FSmQJUyxzBuQxg9lUay0HY2j3CB+1 448H4huQrgt0BPns3d+VluAEYA7+Sbj8OadbCs7qi3KNl/hvnuI87bdBd1AtMhFdfLXu QfSmYrTyJ+6qf4dnb2AdOTxrL7GPwtrMh2+GsxK8JChkc209yD+QZ6WKcIgLCWpXxrAi Icbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=hJTe8YHM; 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 a21-20020a1709066d5500b0073ce34d1a13si8358971ejt.499.2022.08.23.02.52.53; Tue, 23 Aug 2022 02:53: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=hJTe8YHM; 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 S241684AbiHWIJV (ORCPT + 99 others); Tue, 23 Aug 2022 04:09:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49656 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241717AbiHWIIa (ORCPT ); Tue, 23 Aug 2022 04:08:30 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B05E16CD08; Tue, 23 Aug 2022 01:05:38 -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 4B6D2B81C19; Tue, 23 Aug 2022 08:05:22 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 97167C433C1; Tue, 23 Aug 2022 08:05:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1661241921; bh=K5ZBDr6BEUr7UZVmEwDVuU96klWoAHjgVnTdnq/iI18=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hJTe8YHMgel2QJaVi39l39b+nAali4mApT9MQOZE/2PG5vbzH0ZL0zi4yzPvGakg7 7RJlTmwG8gK2bAd75Buz4IH4ECmUS0i9g82DQ6Bv+RFvisyEV/VQ6YOIzNrts97DBE VhtxG4DuAgfeh0inFjW7dVJs3JgDj8M7EYoT7lBY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Filipe Manana , David Sterba Subject: [PATCH 5.19 020/365] btrfs: fix lost error handling when looking up extended ref on log replay Date: Tue, 23 Aug 2022 09:58:41 +0200 Message-Id: <20220823080119.053017011@linuxfoundation.org> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220823080118.128342613@linuxfoundation.org> References: <20220823080118.128342613@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 @@ -1146,7 +1146,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;