diff options
Diffstat (limited to 'fs/ocfs2/super.c')
| -rw-r--r-- | fs/ocfs2/super.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 38f986d2447e..36c423fb0635 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c | |||
| @@ -1316,7 +1316,7 @@ static int ocfs2_parse_options(struct super_block *sb, | |||
| 1316 | struct mount_options *mopt, | 1316 | struct mount_options *mopt, |
| 1317 | int is_remount) | 1317 | int is_remount) |
| 1318 | { | 1318 | { |
| 1319 | int status; | 1319 | int status, user_stack = 0; |
| 1320 | char *p; | 1320 | char *p; |
| 1321 | u32 tmp; | 1321 | u32 tmp; |
| 1322 | 1322 | ||
| @@ -1459,6 +1459,15 @@ static int ocfs2_parse_options(struct super_block *sb, | |||
| 1459 | memcpy(mopt->cluster_stack, args[0].from, | 1459 | memcpy(mopt->cluster_stack, args[0].from, |
| 1460 | OCFS2_STACK_LABEL_LEN); | 1460 | OCFS2_STACK_LABEL_LEN); |
| 1461 | mopt->cluster_stack[OCFS2_STACK_LABEL_LEN] = '\0'; | 1461 | mopt->cluster_stack[OCFS2_STACK_LABEL_LEN] = '\0'; |
| 1462 | /* | ||
| 1463 | * Open code the memcmp here as we don't have | ||
| 1464 | * an osb to pass to | ||
| 1465 | * ocfs2_userspace_stack(). | ||
| 1466 | */ | ||
| 1467 | if (memcmp(mopt->cluster_stack, | ||
| 1468 | OCFS2_CLASSIC_CLUSTER_STACK, | ||
| 1469 | OCFS2_STACK_LABEL_LEN)) | ||
| 1470 | user_stack = 1; | ||
| 1462 | break; | 1471 | break; |
| 1463 | case Opt_inode64: | 1472 | case Opt_inode64: |
| 1464 | mopt->mount_opt |= OCFS2_MOUNT_INODE64; | 1473 | mopt->mount_opt |= OCFS2_MOUNT_INODE64; |
| @@ -1514,13 +1523,16 @@ static int ocfs2_parse_options(struct super_block *sb, | |||
| 1514 | } | 1523 | } |
| 1515 | } | 1524 | } |
| 1516 | 1525 | ||
| 1517 | /* Ensure only one heartbeat mode */ | 1526 | if (user_stack == 0) { |
| 1518 | tmp = mopt->mount_opt & (OCFS2_MOUNT_HB_LOCAL | OCFS2_MOUNT_HB_GLOBAL | | 1527 | /* Ensure only one heartbeat mode */ |
| 1519 | OCFS2_MOUNT_HB_NONE); | 1528 | tmp = mopt->mount_opt & (OCFS2_MOUNT_HB_LOCAL | |
| 1520 | if (hweight32(tmp) != 1) { | 1529 | OCFS2_MOUNT_HB_GLOBAL | |
| 1521 | mlog(ML_ERROR, "Invalid heartbeat mount options\n"); | 1530 | OCFS2_MOUNT_HB_NONE); |
| 1522 | status = 0; | 1531 | if (hweight32(tmp) != 1) { |
| 1523 | goto bail; | 1532 | mlog(ML_ERROR, "Invalid heartbeat mount options\n"); |
| 1533 | status = 0; | ||
| 1534 | goto bail; | ||
| 1535 | } | ||
| 1524 | } | 1536 | } |
| 1525 | 1537 | ||
| 1526 | status = 1; | 1538 | status = 1; |
