diff mbox

libceph: don't clear bio_iter in prepare_write_message()

Message ID 513B6520.8050303@inktank.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alex Elder March 9, 2013, 4:36 p.m. UTC
This patch is available in the branch "review/wip-msgr-refactor"
(prior to 6 other patches) in the ceph-client git repository.
That branch is based on branch "review/wip-abstract-2".

					-Alex

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>
---
 net/ceph/messenger.c |    4 ----
 1 file changed, 4 deletions(-)

 	     m, con->out_seq, le16_to_cpu(m->hdr.type),

Comments

Josh Durgin March 11, 2013, 7:07 p.m. UTC | #1
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>

On 03/09/2013 08:36 AM, Alex Elder wrote:
> This patch is available in the branch "review/wip-msgr-refactor"
> (prior to 6 other patches) in the ceph-client git repository.
> That branch is based on branch "review/wip-abstract-2".
>
> 					-Alex
>
> 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>
> ---
>   net/ceph/messenger.c |    4 ----
>   1 file changed, 4 deletions(-)
>
> diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
> index e75a03d..17d9321 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),
>

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index e75a03d..17d9321 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",