Skip to content

Commit

Permalink
nfsd4: fix recovery-dir leak on nfsd startup failure
Browse files Browse the repository at this point in the history
The current code never calls nfsd4_shutdown_recdir if nfs4_state_start
returns an error. Also, it's better to go ahead and consolidate these
functions since one is just a trivial wrapper around the other.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
  • Loading branch information
Jeff Layton authored and J. Bruce Fields committed Mar 6, 2012
1 parent 393d8ed commit a6d6b78
Showing 1 changed file with 13 additions and 13 deletions.
26 changes: 13 additions & 13 deletions fs/nfsd/nfs4state.c
Original file line number Diff line number Diff line change
Expand Up @@ -4677,21 +4677,26 @@ set_max_delegations(void)

/* initialization to perform when the nfsd service is started: */

static int
__nfs4_state_start(void)
int
nfs4_state_start(void)
{
int ret;

nfsd4_load_reboot_recovery_data();
boot_time = get_seconds();
locks_start_grace(&nfsd4_manager);
printk(KERN_INFO "NFSD: starting %ld-second grace period\n",
nfsd4_grace);
ret = set_callback_cred();
if (ret)
return -ENOMEM;
if (ret) {
ret = -ENOMEM;
goto out_recovery;
}
laundry_wq = create_singlethread_workqueue("nfsd4");
if (laundry_wq == NULL)
return -ENOMEM;
if (laundry_wq == NULL) {
ret = -ENOMEM;
goto out_recovery;
}
ret = nfsd4_create_callback_queue();
if (ret)
goto out_free_laundry;
Expand All @@ -4700,16 +4705,11 @@ __nfs4_state_start(void)
return 0;
out_free_laundry:
destroy_workqueue(laundry_wq);
out_recovery:
nfsd4_shutdown_recdir();
return ret;
}

int
nfs4_state_start(void)
{
nfsd4_load_reboot_recovery_data();
return __nfs4_state_start();
}

static void
__nfs4_state_shutdown(void)
{
Expand Down

0 comments on commit a6d6b78

Please sign in to comment.