diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ext4/super.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 735c20d5fd56..68a55dffb360 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -1229,6 +1229,11 @@ static int parse_options(char *options, struct super_block *sb, | |||
1229 | if (!*p) | 1229 | if (!*p) |
1230 | continue; | 1230 | continue; |
1231 | 1231 | ||
1232 | /* | ||
1233 | * Initialize args struct so we know whether arg was | ||
1234 | * found; some options take optional arguments. | ||
1235 | */ | ||
1236 | args[0].to = args[0].from = 0; | ||
1232 | token = match_token(p, tokens, args); | 1237 | token = match_token(p, tokens, args); |
1233 | switch (token) { | 1238 | switch (token) { |
1234 | case Opt_bsd_df: | 1239 | case Opt_bsd_df: |
@@ -1518,10 +1523,11 @@ set_qf_format: | |||
1518 | clear_opt(sbi->s_mount_opt, BARRIER); | 1523 | clear_opt(sbi->s_mount_opt, BARRIER); |
1519 | break; | 1524 | break; |
1520 | case Opt_barrier: | 1525 | case Opt_barrier: |
1521 | if (match_int(&args[0], &option)) { | 1526 | if (args[0].from) { |
1522 | set_opt(sbi->s_mount_opt, BARRIER); | 1527 | if (match_int(&args[0], &option)) |
1523 | break; | 1528 | return 0; |
1524 | } | 1529 | } else |
1530 | option = 1; /* No argument, default to 1 */ | ||
1525 | if (option) | 1531 | if (option) |
1526 | set_opt(sbi->s_mount_opt, BARRIER); | 1532 | set_opt(sbi->s_mount_opt, BARRIER); |
1527 | else | 1533 | else |
@@ -1594,10 +1600,11 @@ set_qf_format: | |||
1594 | set_opt(sbi->s_mount_opt,NO_AUTO_DA_ALLOC); | 1600 | set_opt(sbi->s_mount_opt,NO_AUTO_DA_ALLOC); |
1595 | break; | 1601 | break; |
1596 | case Opt_auto_da_alloc: | 1602 | case Opt_auto_da_alloc: |
1597 | if (match_int(&args[0], &option)) { | 1603 | if (args[0].from) { |
1598 | clear_opt(sbi->s_mount_opt, NO_AUTO_DA_ALLOC); | 1604 | if (match_int(&args[0], &option)) |
1599 | break; | 1605 | return 0; |
1600 | } | 1606 | } else |
1607 | option = 1; /* No argument, default to 1 */ | ||
1601 | if (option) | 1608 | if (option) |
1602 | clear_opt(sbi->s_mount_opt, NO_AUTO_DA_ALLOC); | 1609 | clear_opt(sbi->s_mount_opt, NO_AUTO_DA_ALLOC); |
1603 | else | 1610 | else |