From: Peter Lieven <pl@kamp.de>
To: Paolo Bonzini <pbonzini@redhat.com>, qemu-devel@nongnu.org
Cc: kwolf@redhat.com, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH] block/iscsi: fix potential segfault on early callback
Date: Tue, 10 Jun 2014 10:14:00 +0200 [thread overview]
Message-ID: <5396BE48.5010408@kamp.de> (raw)
In-Reply-To: <5396BD0E.8030300@redhat.com>
On 10.06.2014 10:08, Paolo Bonzini wrote:
> Il 10/06/2014 09:52, Peter Lieven ha scritto:
>> it might happen in the future that a function directly invokes its callback.
>> In this case we end up in a segfault because the iTask is gone when the BH
>> is scheduled.
>>
>> Signed-off-by: Peter Lieven <pl@kamp.de>
>> ---
>> block/iscsi.c | 5 ++++-
>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/block/iscsi.c b/block/iscsi.c
>> index 019b324..4bf4238 100644
>> --- a/block/iscsi.c
>> +++ b/block/iscsi.c
>> @@ -146,6 +146,7 @@ iscsi_schedule_bh(IscsiAIOCB *acb)
>> static void iscsi_co_generic_bh_cb(void *opaque)
>> {
>> struct IscsiTask *iTask = opaque;
>> + iTask->complete = 1;
>> qemu_bh_delete(iTask->bh);
>> qemu_coroutine_enter(iTask->co, NULL);
>> }
>> @@ -153,6 +154,7 @@ static void iscsi_co_generic_bh_cb(void *opaque)
>> static void iscsi_retry_timer_expired(void *opaque)
>> {
>> struct IscsiTask *iTask = opaque;
>> + iTask->complete = 1;
>> if (iTask->co) {
>> qemu_coroutine_enter(iTask->co, NULL);
>> }
>> @@ -171,7 +173,6 @@ iscsi_co_generic_cb(struct iscsi_context *iscsi, int status,
>> struct IscsiTask *iTask = opaque;
>> struct scsi_task *task = command_data;
>>
>> - iTask->complete = 1;
>> iTask->status = status;
>> iTask->do_retry = 0;
>> iTask->task = task;
>> @@ -209,6 +210,8 @@ out:
>> iTask->bh = aio_bh_new(iTask->iscsilun->aio_context,
>> iscsi_co_generic_bh_cb, iTask);
>> qemu_bh_schedule(iTask->bh);
>> + } else {
>> + iTask->complete = 1;
>> }
>> }
>>
>>
>
> Applied, thanks. I'll leave the nfs patch to Kevin and/or Stefan.
Thank you,
Stefan/Kevin I messed up the commit message. Can you please fix when picking up:
---8<---
it will happen in the future that a function directly invokes its callback.
In this case we end up in a segfault because the NFSRPC is gone when we the
BH is scheduled.
--->8---
Thanks,
Peter
prev parent reply other threads:[~2014-06-10 8:14 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-10 7:52 [Qemu-devel] [PATCH] block/iscsi: fix potential segfault on early callback Peter Lieven
2014-06-10 8:08 ` Paolo Bonzini
2014-06-10 8:14 ` Peter Lieven [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5396BE48.5010408@kamp.de \
--to=pl@kamp.de \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.