Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp13412319ybl; Sun, 29 Dec 2019 11:15:39 -0800 (PST) X-Google-Smtp-Source: APXvYqxaQJSP6PJmMLnjA+vTwhycnc9x27UBevolcjNrrpQ5gi3gSgmIRdJ7cnw/bCCFMti5P83t X-Received: by 2002:a9d:7999:: with SMTP id h25mr70009288otm.347.1577646939572; Sun, 29 Dec 2019 11:15:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577646939; cv=none; d=google.com; s=arc-20160816; b=lqwLiHyHu8w79Pma+pxX/CiEtB0/JwUAq+Rz+udI3f9ZtMPcAxQ1z1YdC7Xdaba4fw CHFFx0xJc0iaK80w4FjCPdJoh9gb0s6DKAMQNl6nAlGQQiXsgcHd1Nqc6j6pPW0QIipd sGHqSSe4ZIfyOoec6Qd2z78/wEnl2dCMyvmthChW4RWmthp8ZU5D7Kla9anBfgXx8LQ0 fs4APCr+zzi/MvkaZ3fmupK3MXDioHD51R2yfGNvRzBQUI1EKIHvCmw61t6Gj7HvI6tw wYKJkA/uePc1SJOwyOia2qnLlEBtP8O6+PNmojEh2tQ3Ny1YuMZwq6NM9GoLjRtqynQi fCbA== 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=ll6NfC+JbGot3ZWehoomDI7lEgcnNx4vph2ZeJNrvVQ=; b=zfg1FFmURhKieL6mL6GLePuSqmRXvswo6EGwxyv/qjaIva690LjeXIFnQKHskOjC1h 2GISW1noKChILzPDVZQrdOzirYM1MwfguvDivDoAasTUKP8wK59ijEDmcQGHlFwrT37h 6yxOk3/S+IKWsHUfSZ5CBhuDCQNwGw0bb8MF6Fiy0ksMg90SnvpLVkLWiYpV0On2MTgN zdoXGSU7yeHPPlslCFvJszNnTQgzBAZanAXi/8RNCSqBbtzRan94C7abe9Z+7Qjrjpdk S8Ws3gJHDPuUaCGvwd1IbtVOZ+7+g/gvok4MJ/Evbfwcy+Kd5No3aVUg9IJ5g08I/gVc DqgQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=jcNzKT9L; 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 e20si10386416oti.219.2019.12.29.11.15.26; Sun, 29 Dec 2019 11:15:39 -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=jcNzKT9L; 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 S1728532AbfL2R2E (ORCPT + 99 others); Sun, 29 Dec 2019 12:28:04 -0500 Received: from mail.kernel.org ([198.145.29.99]:50928 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728522AbfL2R2B (ORCPT ); Sun, 29 Dec 2019 12:28:01 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.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 4B28F21744; Sun, 29 Dec 2019 17:28:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1577640480; bh=2AgzNFGDqkQM8/zPWuaEzLdcOC5DwNgXkhI5m7l8VAo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jcNzKT9LLEimadupJ86qUt/sRJGK6XuMdIasLgbLfjW54VLXwasQZEp55hTFjPlqS qr84EPxV0Jn3sC6/qj+zAgxkCpOlq189t6I3DVBTClOMemhoAkQaWfj+mzPNFiS7T0 HQx4gey915Ei28+pIqEmYafoMy+IHpajrR07zlAI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Josef Bacik , David Sterba Subject: [PATCH 4.19 014/219] btrfs: dont double lock the subvol_sem for rename exchange Date: Sun, 29 Dec 2019 18:16:56 +0100 Message-Id: <20191229162511.066433726@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191229162508.458551679@linuxfoundation.org> References: <20191229162508.458551679@linuxfoundation.org> User-Agent: quilt/0.66 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 From: Josef Bacik commit 943eb3bf25f4a7b745dd799e031be276aa104d82 upstream. If we're rename exchanging two subvols we'll try to lock this lock twice, which is bad. Just lock once if either of the ino's are subvols. Fixes: cdd1fedf8261 ("btrfs: add support for RENAME_EXCHANGE and RENAME_WHITEOUT") CC: stable@vger.kernel.org # 4.4+ Signed-off-by: Josef Bacik Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/inode.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -9491,9 +9491,8 @@ static int btrfs_rename_exchange(struct btrfs_init_log_ctx(&ctx_dest, new_inode); /* close the race window with snapshot create/destroy ioctl */ - if (old_ino == BTRFS_FIRST_FREE_OBJECTID) - down_read(&fs_info->subvol_sem); - if (new_ino == BTRFS_FIRST_FREE_OBJECTID) + if (old_ino == BTRFS_FIRST_FREE_OBJECTID || + new_ino == BTRFS_FIRST_FREE_OBJECTID) down_read(&fs_info->subvol_sem); /* @@ -9727,9 +9726,8 @@ out_fail: ret = ret ? ret : ret2; } out_notrans: - if (new_ino == BTRFS_FIRST_FREE_OBJECTID) - up_read(&fs_info->subvol_sem); - if (old_ino == BTRFS_FIRST_FREE_OBJECTID) + if (new_ino == BTRFS_FIRST_FREE_OBJECTID || + old_ino == BTRFS_FIRST_FREE_OBJECTID) up_read(&fs_info->subvol_sem); ASSERT(list_empty(&ctx_root.list));