aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/super.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/super.c')
-rw-r--r--fs/nfs/super.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index f1afee4eea77..e01637240eeb 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -48,6 +48,7 @@
48#include <linux/vfs.h> 48#include <linux/vfs.h>
49#include <linux/inet.h> 49#include <linux/inet.h>
50#include <linux/in6.h> 50#include <linux/in6.h>
51#include <linux/slab.h>
51#include <net/ipv6.h> 52#include <net/ipv6.h>
52#include <linux/netdevice.h> 53#include <linux/netdevice.h>
53#include <linux/nfs_xdr.h> 54#include <linux/nfs_xdr.h>
@@ -2214,7 +2215,7 @@ static int nfs_get_sb(struct file_system_type *fs_type,
2214 } else { 2215 } else {
2215 error = nfs_bdi_register(server); 2216 error = nfs_bdi_register(server);
2216 if (error) 2217 if (error)
2217 goto error_splat_super; 2218 goto error_splat_bdi;
2218 } 2219 }
2219 2220
2220 if (!s->s_root) { 2221 if (!s->s_root) {
@@ -2256,6 +2257,9 @@ out_err_nosb:
2256error_splat_root: 2257error_splat_root:
2257 dput(mntroot); 2258 dput(mntroot);
2258error_splat_super: 2259error_splat_super:
2260 if (server && !s->s_root)
2261 bdi_unregister(&server->backing_dev_info);
2262error_splat_bdi:
2259 deactivate_locked_super(s); 2263 deactivate_locked_super(s);
2260 goto out; 2264 goto out;
2261} 2265}
@@ -2326,7 +2330,7 @@ static int nfs_xdev_get_sb(struct file_system_type *fs_type, int flags,
2326 } else { 2330 } else {
2327 error = nfs_bdi_register(server); 2331 error = nfs_bdi_register(server);
2328 if (error) 2332 if (error)
2329 goto error_splat_super; 2333 goto error_splat_bdi;
2330 } 2334 }
2331 2335
2332 if (!s->s_root) { 2336 if (!s->s_root) {
@@ -2363,6 +2367,9 @@ out_err_noserver:
2363 return error; 2367 return error;
2364 2368
2365error_splat_super: 2369error_splat_super:
2370 if (server && !s->s_root)
2371 bdi_unregister(&server->backing_dev_info);
2372error_splat_bdi:
2366 deactivate_locked_super(s); 2373 deactivate_locked_super(s);
2367 dprintk("<-- nfs_xdev_get_sb() = %d [splat]\n", error); 2374 dprintk("<-- nfs_xdev_get_sb() = %d [splat]\n", error);
2368 return error; 2375 return error;
@@ -2578,7 +2585,7 @@ static int nfs4_remote_get_sb(struct file_system_type *fs_type,
2578 } else { 2585 } else {
2579 error = nfs_bdi_register(server); 2586 error = nfs_bdi_register(server);
2580 if (error) 2587 if (error)
2581 goto error_splat_super; 2588 goto error_splat_bdi;
2582 } 2589 }
2583 2590
2584 if (!s->s_root) { 2591 if (!s->s_root) {
@@ -2616,6 +2623,9 @@ out_free:
2616error_splat_root: 2623error_splat_root:
2617 dput(mntroot); 2624 dput(mntroot);
2618error_splat_super: 2625error_splat_super:
2626 if (server && !s->s_root)
2627 bdi_unregister(&server->backing_dev_info);
2628error_splat_bdi:
2619 deactivate_locked_super(s); 2629 deactivate_locked_super(s);
2620 goto out; 2630 goto out;
2621} 2631}
@@ -2811,7 +2821,7 @@ static int nfs4_xdev_get_sb(struct file_system_type *fs_type, int flags,
2811 } else { 2821 } else {
2812 error = nfs_bdi_register(server); 2822 error = nfs_bdi_register(server);
2813 if (error) 2823 if (error)
2814 goto error_splat_super; 2824 goto error_splat_bdi;
2815 } 2825 }
2816 2826
2817 if (!s->s_root) { 2827 if (!s->s_root) {
@@ -2847,6 +2857,9 @@ out_err_noserver:
2847 return error; 2857 return error;
2848 2858
2849error_splat_super: 2859error_splat_super:
2860 if (server && !s->s_root)
2861 bdi_unregister(&server->backing_dev_info);
2862error_splat_bdi:
2850 deactivate_locked_super(s); 2863 deactivate_locked_super(s);
2851 dprintk("<-- nfs4_xdev_get_sb() = %d [splat]\n", error); 2864 dprintk("<-- nfs4_xdev_get_sb() = %d [splat]\n", error);
2852 return error; 2865 return error;
@@ -2893,7 +2906,7 @@ static int nfs4_remote_referral_get_sb(struct file_system_type *fs_type,
2893 } else { 2906 } else {
2894 error = nfs_bdi_register(server); 2907 error = nfs_bdi_register(server);
2895 if (error) 2908 if (error)
2896 goto error_splat_super; 2909 goto error_splat_bdi;
2897 } 2910 }
2898 2911
2899 if (!s->s_root) { 2912 if (!s->s_root) {
@@ -2929,6 +2942,9 @@ out_err_noserver:
2929 return error; 2942 return error;
2930 2943
2931error_splat_super: 2944error_splat_super:
2945 if (server && !s->s_root)
2946 bdi_unregister(&server->backing_dev_info);
2947error_splat_bdi:
2932 deactivate_locked_super(s); 2948 deactivate_locked_super(s);
2933 dprintk("<-- nfs4_referral_get_sb() = %d [splat]\n", error); 2949 dprintk("<-- nfs4_referral_get_sb() = %d [splat]\n", error);
2934 return error; 2950 return error;