diff options
| -rw-r--r-- | fs/cifs/cifsfs.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index d1ed7f9946d5..1d2a93c60e75 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c | |||
| @@ -556,9 +556,8 @@ cifs_do_mount(struct file_system_type *fs_type, | |||
| 556 | 556 | ||
| 557 | sb = sget(fs_type, NULL, set_anon_super, NULL); | 557 | sb = sget(fs_type, NULL, set_anon_super, NULL); |
| 558 | if (IS_ERR(sb)) { | 558 | if (IS_ERR(sb)) { |
| 559 | kfree(cifs_sb); | ||
| 560 | root = ERR_CAST(sb); | 559 | root = ERR_CAST(sb); |
| 561 | goto out; | 560 | goto out_cifs_sb; |
| 562 | } | 561 | } |
| 563 | 562 | ||
| 564 | /* | 563 | /* |
| @@ -569,7 +568,7 @@ cifs_do_mount(struct file_system_type *fs_type, | |||
| 569 | cifs_sb->mountdata = kstrndup(data, PAGE_SIZE, GFP_KERNEL); | 568 | cifs_sb->mountdata = kstrndup(data, PAGE_SIZE, GFP_KERNEL); |
| 570 | if (cifs_sb->mountdata == NULL) { | 569 | if (cifs_sb->mountdata == NULL) { |
| 571 | root = ERR_PTR(-ENOMEM); | 570 | root = ERR_PTR(-ENOMEM); |
| 572 | goto err_out; | 571 | goto out_super; |
| 573 | } | 572 | } |
| 574 | 573 | ||
| 575 | sb->s_flags = flags; | 574 | sb->s_flags = flags; |
| @@ -581,21 +580,23 @@ cifs_do_mount(struct file_system_type *fs_type, | |||
| 581 | flags & MS_SILENT ? 1 : 0); | 580 | flags & MS_SILENT ? 1 : 0); |
| 582 | if (rc) { | 581 | if (rc) { |
| 583 | root = ERR_PTR(rc); | 582 | root = ERR_PTR(rc); |
| 584 | goto err_out; | 583 | goto out_super; |
| 585 | } | 584 | } |
| 586 | 585 | ||
| 587 | sb->s_flags |= MS_ACTIVE; | 586 | sb->s_flags |= MS_ACTIVE; |
| 588 | 587 | ||
| 589 | root = dget(sb->s_root); | 588 | root = dget(sb->s_root); |
| 590 | out: | 589 | goto out; |
| 591 | cifs_cleanup_volume_info(&volume_info); | ||
| 592 | return root; | ||
| 593 | 590 | ||
| 594 | err_out: | 591 | out_super: |
| 595 | kfree(cifs_sb->mountdata); | 592 | kfree(cifs_sb->mountdata); |
| 593 | deactivate_locked_super(sb); | ||
| 594 | |||
| 595 | out_cifs_sb: | ||
| 596 | unload_nls(cifs_sb->local_nls); | 596 | unload_nls(cifs_sb->local_nls); |
| 597 | kfree(cifs_sb); | 597 | kfree(cifs_sb); |
| 598 | deactivate_locked_super(sb); | 598 | |
| 599 | out: | ||
| 599 | cifs_cleanup_volume_info(&volume_info); | 600 | cifs_cleanup_volume_info(&volume_info); |
| 600 | return root; | 601 | return root; |
| 601 | } | 602 | } |
