nfs41_session_renew() error handling
on failure to renew a session, we don't need to free the session (this leads to crashes). if we simply return the error to compound_encode_send_decode(), we'll fail any subsequent operations on the session, but still be able to unmount and remain stable Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
This commit is contained in:
parent
757b637607
commit
034b2b4ea2
1 changed files with 4 additions and 11 deletions
|
|
@ -314,23 +314,16 @@ int nfs41_session_renew(
|
|||
status = reinit_slot_table(&session->table);
|
||||
if (status) {
|
||||
eprintf("init_slot_table failed %d\n", status);
|
||||
goto out_err_session;
|
||||
goto out_unlock;
|
||||
}
|
||||
status = nfs41_create_session(session->client, session, FALSE);
|
||||
if (status && status != NFS4ERR_STALE_CLIENTID) {
|
||||
if (status) {
|
||||
eprintf("nfs41_create_session failed %d\n", status);
|
||||
status = ERROR_BAD_NET_RESP;
|
||||
goto out_err_slot;
|
||||
goto out_unlock;
|
||||
}
|
||||
out_unlock:
|
||||
ReleaseSRWLockExclusive(&session->client->session_lock);
|
||||
out:
|
||||
return status;
|
||||
out_err_slot:
|
||||
free_slot_table(&session->table);
|
||||
out_err_session:
|
||||
ReleaseSRWLockExclusive(&session->client->session_lock);
|
||||
free(session);
|
||||
goto out;
|
||||
}
|
||||
|
||||
int nfs41_session_set_lease(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue