forked from luck/tmp_suning_uos_patched
libceph: fix ceph_msg_new error path
If memory allocation failed, calling ceph_msg_put() will cause GPF since some of ceph_msg variables are not initialized first. Fix Bug #970. Signed-off-by: Henry C Chang <henry_c_chang@tcloudcomputing.com> Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
parent
3772d26d87
commit
ca20892db7
@ -2267,6 +2267,19 @@ struct ceph_msg *ceph_msg_new(int type, int front_len, gfp_t flags)
|
||||
m->more_to_follow = false;
|
||||
m->pool = NULL;
|
||||
|
||||
/* middle */
|
||||
m->middle = NULL;
|
||||
|
||||
/* data */
|
||||
m->nr_pages = 0;
|
||||
m->page_alignment = 0;
|
||||
m->pages = NULL;
|
||||
m->pagelist = NULL;
|
||||
m->bio = NULL;
|
||||
m->bio_iter = NULL;
|
||||
m->bio_seg = 0;
|
||||
m->trail = NULL;
|
||||
|
||||
/* front */
|
||||
if (front_len) {
|
||||
if (front_len > PAGE_CACHE_SIZE) {
|
||||
@ -2286,19 +2299,6 @@ struct ceph_msg *ceph_msg_new(int type, int front_len, gfp_t flags)
|
||||
}
|
||||
m->front.iov_len = front_len;
|
||||
|
||||
/* middle */
|
||||
m->middle = NULL;
|
||||
|
||||
/* data */
|
||||
m->nr_pages = 0;
|
||||
m->page_alignment = 0;
|
||||
m->pages = NULL;
|
||||
m->pagelist = NULL;
|
||||
m->bio = NULL;
|
||||
m->bio_iter = NULL;
|
||||
m->bio_seg = 0;
|
||||
m->trail = NULL;
|
||||
|
||||
dout("ceph_msg_new %p front %d\n", m, front_len);
|
||||
return m;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user