Re: [PATCH 4.19 70/91] btrfs: reject unknown mount options early

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 2023/10/9 23:36, Greg Kroah-Hartman wrote:
4.19-stable review patch.  If anyone has any objections, please let me know.

Please reject the patch from all stable branches (if that's not yet too late).

The rejection is too strict, especially the check is before the security mount options, thus it would reject all security mount options.

Sorry for the trouble,
Qu


------------------

From: Qu Wenruo <wqu@xxxxxxxx>

commit 5f521494cc73520ffac18ede0758883b9aedd018 upstream.

[BUG]
The following script would allow invalid mount options to be specified
(although such invalid options would just be ignored):

   # mkfs.btrfs -f $dev
   # mount $dev $mnt1		<<< Successful mount expected
   # mount $dev $mnt2 -o junk	<<< Failed mount expected
   # echo $?
   0

[CAUSE]
For the 2nd mount, since the fs is already mounted, we won't go through
open_ctree() thus no btrfs_parse_options(), but only through
btrfs_parse_subvol_options().

However we do not treat unrecognized options from valid but irrelevant
options, thus those invalid options would just be ignored by
btrfs_parse_subvol_options().

[FIX]
Add the handling for Opt_err to handle invalid options and error out,
while still ignore other valid options inside btrfs_parse_subvol_options().

Reported-by: Anand Jain <anand.jain@xxxxxxxxxx>
CC: stable@xxxxxxxxxxxxxxx # 4.14+
Signed-off-by: Qu Wenruo <wqu@xxxxxxxx>
Reviewed-by: David Sterba <dsterba@xxxxxxxx>
Signed-off-by: David Sterba <dsterba@xxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
  fs/btrfs/super.c |    4 ++++
  1 file changed, 4 insertions(+)

--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -991,6 +991,10 @@ static int btrfs_parse_subvol_options(co
  		case Opt_subvolrootid:
  			pr_warn("BTRFS: 'subvolrootid' mount option is deprecated and has no effect\n");
  			break;
+		case Opt_err:
+			btrfs_err(NULL, "unrecognized mount option '%s'", p);
+			error = -EINVAL;
+			goto out;
  		default:
  			break;
  		}





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux