NFSv4: Minor cleanups for nfs4_handle_exception and nfs4_async_handle_error
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 19 Apr 2012 09:45:00 +0000 (10:45 +0100)
committerLeann Ogasawara <leann.ogasawara@canonical.com>
Thu, 19 Apr 2012 13:46:01 +0000 (06:46 -0700)
BugLink: https://bugs.launchpad.net/bugs/974664

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
(cherry picked from commit 14977489ffdb80d4caf5a184ba41b23b02fbacd9)

Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
Signed-off-by: Leann Ogasawara <leann.ogasawara@canonical.com>

fs/nfs/nfs4proc.c

index d945700..979ccc3 100644 (file)
@@ -265,7 +265,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;
@@ -277,10 +277,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:
@@ -3730,8 +3729,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;