diff options
author | Alex Elder <elder@inktank.com> | 2013-03-06 23:39:39 -0600 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-05-01 21:16:45 -0700 |
commit | 98a0370898799895aa8f55109f54c33fcd8196b0 (patch) | |
tree | e983e54ce08f46dcb3227a47751b8e6e461119e8 /net/ceph/messenger.c | |
parent | 07aa155878499f599a709eeecfaa0ca9ea764a88 (diff) |
libceph: don't clear bio_iter in prepare_write_message()
At one time it was necessary to clear a message's bio_iter field to
avoid a bad pointer dereference in write_partial_msg_pages().
That no longer seems to be the case. Here's why.
The message's bio fields represent (in this case) outgoing data.
Between where the bio_iter is made NULL in prepare_write_message()
and the call in that function to prepare_message_data(), the
bio fields are never used.
In prepare_message_data(), init-bio_iter() is called, and the result
of that overwrites the value in the message's bio_iter field.
Because it gets overwritten anyway, there is no need to set it to
NULL. So don't do it.
This resolves:
http://tracker.ceph.com/issues/4402
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Diffstat (limited to 'net/ceph/messenger.c')
-rw-r--r-- | net/ceph/messenger.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c index e75a03d25c9..17d9321b713 100644 --- a/net/ceph/messenger.c +++ b/net/ceph/messenger.c @@ -804,10 +804,6 @@ static void prepare_write_message(struct ceph_connection *con) m->hdr.seq = cpu_to_le64(++con->out_seq); m->needs_out_seq = false; } -#ifdef CONFIG_BLOCK - else - m->bio_iter = NULL; -#endif dout("prepare_write_message %p seq %lld type %d len %d+%d+%d (%zd)\n", m, con->out_seq, le16_to_cpu(m->hdr.type), |