staging: lustre: llite: check request != NULL in ll_migrate

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>
This commit is contained in:
wang di 2017-02-11 12:12:37 -05:00 committed by Greg Kroah-Hartman
parent b96dea60bc
commit 7b0a17f5f6
1 changed files with 23 additions and 18 deletions

View File

@ -2667,28 +2667,33 @@ int ll_migrate(struct inode *parent, struct file *file, int mdtidx,
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 */