Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp13373506ybl; Sun, 29 Dec 2019 10:20:09 -0800 (PST) X-Google-Smtp-Source: APXvYqzYuffoufOjDJ/G2tJukFfZVjMKX4Q3twBDMRms1bqUGPNdZNNGbUgtLYwjMqG5oDbLTCR8 X-Received: by 2002:a9d:6502:: with SMTP id i2mr42356063otl.206.1577643609239; Sun, 29 Dec 2019 10:20:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577643609; cv=none; d=google.com; s=arc-20160816; b=M5md9rYpaoJi9qO6ju4VXNTnRh3b0Xy6qB6AnS4dv68Czj9nL8zC5sDXquljRHAHEk aBHv0sTGyxQ5S7vUywN+nIar2qCuEBf9fzRydz7hQInshJ7+EUWaP+Sc+seYHzRjwEEX TB+6EKcHyb+CAW1TAA/HMuYPEbCkoblVS9UxHEcRp80+1YCAHd5re6qJqNPGNuKnY9cU 4eJ8CYeIJgVdyhNvZlI5NHYI9gRX7dn0VE+D7bztp/fl+Of+rNhbYDMI4r6pgwN6odgc P/rwpVBP6bGsgLYFcT5A+AWsxEsjGSt6uT+wycjtsUeODQ845CK8ITEH3ddJplcRbVqu kYUw== 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=eemAONYpHs1QK32UOLjFJX+KZYNi2576KcWbG4NJl6g=; b=bcqRcfrwOq6K+yKAak3ndP9z27EW5i/pYhSHu02zoWjD12G5pA0hnpzziAlvh11D+8 au4laz8mXj5bk1BUQrVkPgGHo3m4fuBqxmAQWoCpJokREhZSFgDSOQaCof2Ia+/47kKf PMFQJqtCd5BMLNO9ZcV6LuOKqZaxs1e20zMW74WjZ4WCR0I21AABNpmXry/iUDxiadVA rjNBcHKCs6H81YVwse3aCbzo1MqYJg0DORhkhFB8uyJ3tTLuiPUIp1O1U2qfjyDtCezF 7cjgq//1j18ClsAFnb0aX8yKa2Ss8RcvksCIUEEo6LPOdcdgyJD7T0SZqsOFp75khgSc W4dQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=B8t6Ajxr; 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 g8si11795044oia.262.2019.12.29.10.19.57; Sun, 29 Dec 2019 10:20:09 -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=B8t6Ajxr; 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 S1726714AbfL2RVY (ORCPT + 99 others); Sun, 29 Dec 2019 12:21:24 -0500 Received: from mail.kernel.org ([198.145.29.99]:36404 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726264AbfL2RVW (ORCPT ); Sun, 29 Dec 2019 12:21:22 -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 2774B207FF; Sun, 29 Dec 2019 17:21:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1577640081; bh=3ZYC5+MquSt1XMcYyrgvKkz9qymnD4I1vRxST9MVI4Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=B8t6Ajxra8mIZr7gxiXc7T124yHXv4FkOdp3jD9hkY6R4KGJlYHfbhA7QKD9w0KPV jICJSGo6pFdJM8ayfm8DYAo/dyaCzGLvCqY3lk9z7j+WhUw3a+Uvd9M3eTHZ0Q2fQ/ /nrTxmhiIwyUMlfmhDHwEQ8GXjhlyTb3MzzCCDyM= 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.14 011/161] btrfs: dont double lock the subvol_sem for rename exchange Date: Sun, 29 Dec 2019 18:17:39 +0100 Message-Id: <20191229162359.127861755@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191229162355.500086350@linuxfoundation.org> References: <20191229162355.500086350@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 @@ -9820,9 +9820,8 @@ static int btrfs_rename_exchange(struct return -EXDEV; /* 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); /* @@ -10014,9 +10013,8 @@ out_fail: ret2 = btrfs_end_transaction(trans); 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); return ret;