mirror of https://gitee.com/openkylin/linux.git
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:
parent
b96dea60bc
commit
7b0a17f5f6
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue