staging: lustre: llite: check request != NULL in ll_migrate
authorwang di <di.wang@intel.com>
Sat, 11 Feb 2017 17:12:37 +0000 (12:12 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 12 Feb 2017 12:13:06 +0000 (13:13 +0100)
Check if the request is NULL, before retrieve reply body
from the request.

Signed-off-by: wang di <di.wang@intel.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-7396
Reviewed-on: http://review.whamcloud.com/17079
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/llite/file.c

index 9870901195595a6afb371c10e3abc289c5c3031e..0c83bd76c3d0f6aa6120a60f70d001c4f8e35fac 100644 (file)
@@ -2667,28 +2667,33 @@ again:
        if (!rc)
                ll_update_times(request, parent);
 
-       body = req_capsule_server_get(&request->rq_pill, &RMF_MDT_BODY);
-       if (!body) {
-               rc = -EPROTO;
-               goto out_free;
-       }
+       if (request) {
+               body = req_capsule_server_get(&request->rq_pill, &RMF_MDT_BODY);
+               if (!body) {
+                       rc = -EPROTO;
+                       goto out_free;
+               }
 
-       /*
-        * If the server does release layout lock, then we cleanup
-        * the client och here, otherwise release it in out_free:
-        */
-       if (och && body->mbo_valid & OBD_MD_CLOSE_INTENT_EXECED) {
-               obd_mod_put(och->och_mod);
-               md_clear_open_replay_data(ll_i2sbi(parent)->ll_md_exp, och);
-               och->och_fh.cookie = DEAD_HANDLE_MAGIC;
-               kfree(och);
-               och = NULL;
-       }
+               /*
+                * If the server does release layout lock, then we cleanup
+                * the client och here, otherwise release it in out_free:
+                */
+               if (och && body->mbo_valid & OBD_MD_CLOSE_INTENT_EXECED) {
+                       obd_mod_put(och->och_mod);
+                       md_clear_open_replay_data(ll_i2sbi(parent)->ll_md_exp,
+                                                 och);
+                       och->och_fh.cookie = DEAD_HANDLE_MAGIC;
+                       kfree(och);
+                       och = NULL;
+               }
 
-       ptlrpc_req_finished(request);
+               ptlrpc_req_finished(request);
+       }
        /* Try again if the file layout has changed. */
-       if (rc == -EAGAIN && S_ISREG(child_inode->i_mode))
+       if (rc == -EAGAIN && S_ISREG(child_inode->i_mode)) {
+               request = NULL;
                goto again;
+       }
 out_free:
        if (child_inode) {
                if (och) /* close the file */