Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp794038rwb; Thu, 1 Dec 2022 08:26:20 -0800 (PST) X-Google-Smtp-Source: AA0mqf7+DayUWFvpILmvTRBO9Knsb32wlbsxoT/0MNxWKHp7FkeAOVeSRzqKAimayxrILtFik1Pv X-Received: by 2002:aa7:c145:0:b0:469:400a:3f8e with SMTP id r5-20020aa7c145000000b00469400a3f8emr47043180edp.108.1669911979770; Thu, 01 Dec 2022 08:26:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669911979; cv=none; d=google.com; s=arc-20160816; b=mu7EL4ta4V4yTTZrGK9NTcnhdIREZo8wus/oNitudmK912T8IUa+PgFh9cZEPRrjhB jymzUe55ddCf+YBAXsWJmYQk97SK9qr+ff+YKUBc9uCPPWfrp8kOVu0L7EpaiqR1MnId FGuwlvS58CFB8Gj25V4kZh+/JLVh4F44szLMYL7bVLqhqssgAjbSHcsv/VZF28pUTSfE ib+yUYp4wAOfHD/46HVJW434vmOf8KpFt4LkIefwAfOhr4zeVP3wMpnK3QwUgL8q7LSx iOvjFROF/LN1frPUS4jiOSthToT/0NL+BmWtRN7tNZWxKiN1qs5v1tbUJoQ1lRSFCouw qHBQ== 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 :message-id:date:subject:cc:to:dkim-signature:from; bh=CV2dlH20Cxq7tftikz70aMcoirouNplf4SFf84nnOqE=; b=OlRWBvFEJs/syKRBD8Q1Z1K4APmki5fnEHM6kjy0OLMScPzxy71QkGWRjhHufaOEJX 3PHnjNUabrHOBnHnr5ox5NcG4EHdSW57KEVrmrL+r0HaPm8MQ4/S0oIQ8JRuqB2Owhji F4LL5Y7PvV3TpbJ+fXL3n2YR2gwDwAoXv4wljTzH6CL5UEgt7zM/cQAzNKEvp1rhKDEU gYjsDhCEX8+zUe5qmOMY0Jss+u/HChY82lD+FT8xci/0ryrSlDjj+2J8iMP7C5iQ5vEr A7+Ytl7OrZ5HNXibgMImCatOgwBaqcE5YiFRaML+4vCf1a6UCYlB/fT8EDi/puM9dZX8 Je0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@synology.com header.s=123 header.b=J0DFTLQV; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=synology.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id wy1-20020a170906fe0100b007269ef1872esi3801211ejb.897.2022.12.01.08.26.00; Thu, 01 Dec 2022 08:26:19 -0800 (PST) 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=@synology.com header.s=123 header.b=J0DFTLQV; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=synology.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232014AbiLAQNC (ORCPT + 82 others); Thu, 1 Dec 2022 11:13:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57300 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231825AbiLAQM6 (ORCPT ); Thu, 1 Dec 2022 11:12:58 -0500 X-Greylist: delayed 328 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Thu, 01 Dec 2022 08:12:57 PST Received: from synology.com (mail.synology.com [211.23.38.101]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3138717E27; Thu, 1 Dec 2022 08:12:57 -0800 (PST) From: Chung-Chiang Cheng DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synology.com; s=123; t=1669910847; bh=S4FmVyhpZDGh9t63RCzhVDZHxm+vJyfoMFACVQFXfxQ=; h=From:To:Cc:Subject:Date; b=J0DFTLQVfRZfQasxYBV/3GIcgN2i84jcVRzywC94UHKlcUPRTXD0yRdCpR5g1DueP 7K+7WcvA9+0FXASQo41mf7hWLnz76jOlNuyCbTYMsqZsxQXj6YcJ36mHgGdA47/vGg HTYUeuLMwEtd4b4Ax8rqXFo3YlFG2z66/wwrBuFY= To: clm@fb.com, josef@toxicpanda.com, dsterba@suse.com, linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org Cc: shepjeng@gmail.com, kernel@cccheng.net, Chung-Chiang Cheng , Johnny Chang Subject: [PATCH] btrfs: refuse to remount read-write with unsupported compat-ro features Date: Fri, 2 Dec 2022 00:07:24 +0800 Message-Id: <20221201160724.2593341-1-cccheng@synology.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Synology-MCP-Status: no X-Synology-Spam-Flag: no X-Synology-Spam-Status: score=0, required 6, WHITELIST_FROM_ADDRESS 0 X-Synology-Virus-Status: no X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_PASS,SPF_PASS 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 btrfs with unsupported compat-ro features can only be mounted as read-only, but we can make it read-write indirectly through remount. Just add the missing check to refuse it. mount -o ro /dev/vdb /mnt mount -o remount,rw /mnt Reported-by: Johnny Chang Signed-off-by: Chung-Chiang Cheng --- fs/btrfs/super.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 5942b9384088..45836a426499 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -1991,6 +1991,8 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data) unsigned old_flags = sb->s_flags; unsigned long old_opts = fs_info->mount_opt; unsigned long old_compress_type = fs_info->compress_type; + u64 compat_ro = btrfs_super_compat_ro_flags(fs_info->super_copy); + u64 compat_ro_unsupp = compat_ro & ~BTRFS_FEATURE_COMPAT_RO_SUPP; u64 old_max_inline = fs_info->max_inline; u32 old_thread_pool_size = fs_info->thread_pool_size; u32 old_metadata_ratio = fs_info->metadata_ratio; @@ -2107,6 +2109,13 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data) if (ret) goto restore; } else { + if (compat_ro_unsupp) { + btrfs_err(fs_info, + "cannot remount read-write because of unknown compat_ro features (0x%llx)", + compat_ro); + ret = -EINVAL; + goto restore; + } if (BTRFS_FS_ERROR(fs_info)) { btrfs_err(fs_info, "Remounting read-write after error is not allowed"); -- 2.34.1