diff options
| -rw-r--r-- | fs/nfs/nfs4proc.c | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 1933e6719bb0..f82bde005a82 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -270,7 +270,7 @@ static int nfs4_handle_exception(struct nfs_server *server, int errorcode, struc  		case 0:  			return 0;  		case -NFS4ERR_OPENMODE: -			if (nfs_have_delegation(inode, FMODE_READ)) { +			if (inode && nfs_have_delegation(inode, FMODE_READ)) {  				nfs_inode_return_delegation(inode);  				exception->retry = 1;  				return 0; @@ -282,10 +282,9 @@ static int nfs4_handle_exception(struct nfs_server *server, int errorcode, struc  		case -NFS4ERR_DELEG_REVOKED:  		case -NFS4ERR_ADMIN_REVOKED:  		case -NFS4ERR_BAD_STATEID: -			if (state != NULL) -				nfs_remove_bad_delegation(state->inode);  			if (state == NULL)  				break; +			nfs_remove_bad_delegation(state->inode);  			nfs4_schedule_stateid_recovery(server, state);  			goto wait_on_recovery;  		case -NFS4ERR_EXPIRED: @@ -3825,8 +3824,9 @@ nfs4_async_handle_error(struct rpc_task *task, const struct nfs_server *server,  		case -NFS4ERR_DELEG_REVOKED:  		case -NFS4ERR_ADMIN_REVOKED:  		case -NFS4ERR_BAD_STATEID: -			if (state != NULL) -				nfs_remove_bad_delegation(state->inode); +			if (state == NULL) +				break; +			nfs_remove_bad_delegation(state->inode);  		case -NFS4ERR_OPENMODE:  			if (state == NULL)  				break; | 
