Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98a03708 authored by Alex Elder's avatar Alex Elder Committed by Sage Weil
Browse files

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: default avatarAlex Elder <elder@inktank.com>
Reviewed-by: default avatarJosh Durgin <josh.durgin@inktank.com>
parent 07aa1558
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -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),