Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp2340288ybz; Thu, 23 Apr 2020 16:20:12 -0700 (PDT) X-Google-Smtp-Source: APiQypIL2UGQl6Cv+B7ZBwFrokL0pt/TgQAsFmTjfs8QjoJ8LLq0HQn0hfksjPJmUF6iNjVn/XuL X-Received: by 2002:a17:907:43c2:: with SMTP id i2mr4765446ejs.185.1587684012860; Thu, 23 Apr 2020 16:20:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587684012; cv=none; d=google.com; s=arc-20160816; b=e+uwhnJ8qmTrAT96azp/rWweyhLvBiFVYXuCMzeaT7vak8fkRLXt9UPgkHavZXdaYJ JAp9xvdNKgJjHheJ+rV0mc7z5TIjJbRudw2apqhbOTzdYsaUwvyVwC8zys/pJuXxNCsf dh2Ti0LmtYhPDbVIrHu/T7CBTrNQGYOUUXBViu+TkfGOeUTZoB0+D7dWUeP9jOkxMMY6 /brHMAxrt8GlxPD8u20Aeg2TciJQLQ9hvOh8qOb1uVIIFvmsE8uFKGENMlQSmv9eFMQE uIGMTonawkNo4eqnPFfefVrc1yuyq4GE/ewGr6p4TBvSX0mXaZitK3GSrLNLp5TQ2aky bQQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:subject:message-id:date:cc:to :from:mime-version:content-transfer-encoding:content-disposition; bh=t9jcQgktsSYfgES04ECKAgxWzcjgnKoZzqO54nTftFg=; b=SMec6PMpFWIkebLfXKTmp6GLu8Ar4l6cuHaEng2M2N1g2uDkwq/JLyKXP5mhNNXu1H buSi3pwyCOEcuQYINofWYfqgmt6RSGPbk2Z4OoJnZxOLIBG2e99q0nW0l3xsQWF+z4ua ExvybemiNXucsgj9VcWpccEI4llGMGhBwoySbVWB4OtSlyJ5vdMs8DzLMV1vsZw+Ad7s vDPtj1CuFWXvUzbjTtEzcjQYGajTFghSLCmwiiMZRB7fYxkEpJwZLp+VHZDm86bzCynk jo2vhRTG9E12XzRolqCqs+sl2IQzAlW4pBdj1tOO9oHYCpVdlK5ODtvyo2Vuzo7Jf+Ea yboA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cq7si1908710edb.319.2020.04.23.16.19.47; Thu, 23 Apr 2020 16:20:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729220AbgDWXQn (ORCPT + 99 others); Thu, 23 Apr 2020 19:16:43 -0400 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:49490 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728363AbgDWXGo (ORCPT ); Thu, 23 Apr 2020 19:06:44 -0400 Received: from [192.168.4.242] (helo=deadeye) by shadbolt.decadent.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1jRkvT-0004i7-Bx; Fri, 24 Apr 2020 00:06:35 +0100 Received: from ben by deadeye with local (Exim 4.93) (envelope-from ) id 1jRkvQ-00E6ol-Qj; Fri, 24 Apr 2020 00:06:32 +0100 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org CC: akpm@linux-foundation.org, Denis Kirjanov , "Josef Bacik" , "David Sterba" Date: Fri, 24 Apr 2020 00:05:48 +0100 Message-ID: X-Mailer: LinuxStableQueue (scripts by bwh) X-Patchwork-Hint: ignore Subject: [PATCH 3.16 121/245] btrfs: do not delete mismatched root refs In-Reply-To: X-SA-Exim-Connect-IP: 192.168.4.242 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.16.83-rc1 review patch. If anyone has any objections, please let me know. ------------------ From: Josef Bacik commit 423a716cd7be16fb08690760691befe3be97d3fc upstream. btrfs_del_root_ref() will simply WARN_ON() if the ref doesn't match in any way, and then continue to delete the reference. This shouldn't happen, we have these values because there's more to the reference than the original root and the sub root. If any of these checks fail, return -ENOENT. Signed-off-by: Josef Bacik Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Ben Hutchings --- fs/btrfs/root-tree.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) --- a/fs/btrfs/root-tree.c +++ b/fs/btrfs/root-tree.c @@ -373,11 +373,13 @@ again: leaf = path->nodes[0]; ref = btrfs_item_ptr(leaf, path->slots[0], struct btrfs_root_ref); - - WARN_ON(btrfs_root_ref_dirid(leaf, ref) != dirid); - WARN_ON(btrfs_root_ref_name_len(leaf, ref) != name_len); ptr = (unsigned long)(ref + 1); - WARN_ON(memcmp_extent_buffer(leaf, name, ptr, name_len)); + if ((btrfs_root_ref_dirid(leaf, ref) != dirid) || + (btrfs_root_ref_name_len(leaf, ref) != name_len) || + memcmp_extent_buffer(leaf, name, ptr, name_len)) { + err = -ENOENT; + goto out; + } *sequence = btrfs_root_ref_sequence(leaf, ref); ret = btrfs_del_item(trans, tree_root, path);