All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] libceph: don't clear bio_iter in prepare_write_message()
@ 2013-03-09 16:36 Alex Elder
  2013-03-11 19:07 ` Josh Durgin
  0 siblings, 1 reply; 2+ messages in thread
From: Alex Elder @ 2013-03-09 16:36 UTC (permalink / raw)
  To: ceph-devel

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),
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] libceph: don't clear bio_iter in prepare_write_message()
  2013-03-09 16:36 [PATCH] libceph: don't clear bio_iter in prepare_write_message() Alex Elder
@ 2013-03-11 19:07 ` Josh Durgin
  0 siblings, 0 replies; 2+ messages in thread
From: Josh Durgin @ 2013-03-11 19:07 UTC (permalink / raw)
  To: Alex Elder; +Cc: ceph-devel

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),
>


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-03-11 19:08 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-09 16:36 [PATCH] libceph: don't clear bio_iter in prepare_write_message() Alex Elder
2013-03-11 19:07 ` Josh Durgin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.