diff options
Diffstat (limited to 'fs/nfs/super.c')
| -rw-r--r-- | fs/nfs/super.c | 25 | 
1 files changed, 20 insertions, 5 deletions
| diff --git a/fs/nfs/super.c b/fs/nfs/super.c index f1afee4eea77..6baf9a393466 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c @@ -2214,7 +2214,7 @@ static int nfs_get_sb(struct file_system_type *fs_type,  	} else {  		error = nfs_bdi_register(server);  		if (error) -			goto error_splat_super; +			goto error_splat_bdi;  	}  	if (!s->s_root) { @@ -2256,6 +2256,9 @@ out_err_nosb:  error_splat_root:  	dput(mntroot);  error_splat_super: +	if (server && !s->s_root) +		bdi_unregister(&server->backing_dev_info); +error_splat_bdi:  	deactivate_locked_super(s);  	goto out;  } @@ -2326,7 +2329,7 @@ static int nfs_xdev_get_sb(struct file_system_type *fs_type, int flags,  	} else {  		error = nfs_bdi_register(server);  		if (error) -			goto error_splat_super; +			goto error_splat_bdi;  	}  	if (!s->s_root) { @@ -2363,6 +2366,9 @@ out_err_noserver:  	return error;  error_splat_super: +	if (server && !s->s_root) +		bdi_unregister(&server->backing_dev_info); +error_splat_bdi:  	deactivate_locked_super(s);  	dprintk("<-- nfs_xdev_get_sb() = %d [splat]\n", error);  	return error; @@ -2578,7 +2584,7 @@ static int nfs4_remote_get_sb(struct file_system_type *fs_type,  	} else {  		error = nfs_bdi_register(server);  		if (error) -			goto error_splat_super; +			goto error_splat_bdi;  	}  	if (!s->s_root) { @@ -2616,6 +2622,9 @@ out_free:  error_splat_root:  	dput(mntroot);  error_splat_super: +	if (server && !s->s_root) +		bdi_unregister(&server->backing_dev_info); +error_splat_bdi:  	deactivate_locked_super(s);  	goto out;  } @@ -2811,7 +2820,7 @@ static int nfs4_xdev_get_sb(struct file_system_type *fs_type, int flags,  	} else {  		error = nfs_bdi_register(server);  		if (error) -			goto error_splat_super; +			goto error_splat_bdi;  	}  	if (!s->s_root) { @@ -2847,6 +2856,9 @@ out_err_noserver:  	return error;  error_splat_super: +	if (server && !s->s_root) +		bdi_unregister(&server->backing_dev_info); +error_splat_bdi:  	deactivate_locked_super(s);  	dprintk("<-- nfs4_xdev_get_sb() = %d [splat]\n", error);  	return error; @@ -2893,7 +2905,7 @@ static int nfs4_remote_referral_get_sb(struct file_system_type *fs_type,  	} else {  		error = nfs_bdi_register(server);  		if (error) -			goto error_splat_super; +			goto error_splat_bdi;  	}  	if (!s->s_root) { @@ -2929,6 +2941,9 @@ out_err_noserver:  	return error;  error_splat_super: +	if (server && !s->s_root) +		bdi_unregister(&server->backing_dev_info); +error_splat_bdi:  	deactivate_locked_super(s);  	dprintk("<-- nfs4_referral_get_sb() = %d [splat]\n", error);  	return error; | 
