* [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.