qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-devel@nongnu.org, anthony@codemonkey.ws
Subject: Re: [Qemu-devel] [PATCH 08/10] iscsi: Fix NULL dereferences / races between task completion and abort
Date: Sat, 18 Aug 2012 21:21:11 +0200	[thread overview]
Message-ID: <502FEB27.3090403@redhat.com> (raw)
In-Reply-To: <1345039003-19186-9-git-send-email-kwolf@redhat.com>

Il 15/08/2012 15:56, Kevin Wolf ha scritto:
> @@ -76,6 +76,10 @@ static void
>  iscsi_abort_task_cb(struct iscsi_context *iscsi, int status, void *command_data,
>                      void *private_data)
>  {
> +    IscsiAIOCB *acb = (IscsiAIOCB *)private_data;
> +
> +    scsi_free_scsi_task(acb->task);
> +    acb->task = NULL;
>  }
>  
>  static void
> @@ -84,15 +88,15 @@ iscsi_aio_cancel(BlockDriverAIOCB *blockacb)
>      IscsiAIOCB *acb = (IscsiAIOCB *)blockacb;
>      IscsiLun *iscsilun = acb->iscsilun;
>  
> -    acb->common.cb(acb->common.opaque, -ECANCELED);
>      acb->canceled = 1;
>  
> -    /* send a task mgmt call to the target to cancel the task on the target */
> -    iscsi_task_mgmt_abort_task_async(iscsilun->iscsi, acb->task,
> -                                     iscsi_abort_task_cb, NULL);
> +    acb->common.cb(acb->common.opaque, -ECANCELED);
>  
> -    /* then also cancel the task locally in libiscsi */
> -    iscsi_scsi_task_cancel(iscsilun->iscsi, acb->task);
> +    /* send a task mgmt call to the target to cancel the task on the target
> +     * this also cancels the task in libiscsi
> +     */
> +    iscsi_task_mgmt_abort_task_async(iscsilun->iscsi, acb->task,
> +                                     iscsi_abort_task_cb, &acb);

This is definitely a step forward, but iscsi_aio_cancel should actually
be synchronous.  Otherwise the target could write the data between the
callback and the sending of the TMF.  I'll send a patch for testing on
Monday.

Paolo

  reply	other threads:[~2012-08-18 19:21 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-15 13:56 [Qemu-devel] [PULL 00/10] Block patches Kevin Wolf
2012-08-15 13:56 ` [Qemu-devel] [PATCH 01/10] qemu-char: Add MSG_CMSG_CLOEXEC flag to recvmsg Kevin Wolf
2012-08-15 13:56 ` [Qemu-devel] [PATCH 02/10] qapi: Introduce add-fd, remove-fd, query-fdsets Kevin Wolf
2012-08-15 13:56 ` [Qemu-devel] [PATCH 03/10] block: Prevent detection of /dev/fdset/ as floppy Kevin Wolf
2012-08-15 13:56 ` [Qemu-devel] [PATCH 04/10] block: Convert open calls to qemu_open Kevin Wolf
2012-08-15 13:56 ` [Qemu-devel] [PATCH 05/10] block: Convert close calls to qemu_close Kevin Wolf
2012-08-15 13:56 ` [Qemu-devel] [PATCH 06/10] block: Enable qemu_open/close to work with fd sets Kevin Wolf
2012-08-15 23:37   ` Peter Maydell
2012-08-15 13:56 ` [Qemu-devel] [PATCH 07/10] monitor: Clean up fd sets on monitor disconnect Kevin Wolf
2012-08-15 13:56 ` [Qemu-devel] [PATCH 08/10] iscsi: Fix NULL dereferences / races between task completion and abort Kevin Wolf
2012-08-18 19:21   ` Paolo Bonzini [this message]
2012-08-15 13:56 ` [Qemu-devel] [PATCH 09/10] block: Flush parent to OS with cache=unsafe Kevin Wolf
2012-08-15 13:56 ` [Qemu-devel] [PATCH 10/10] qemu-iotests: Fix 030 after switch to GenericError Kevin Wolf
2012-08-15 19:49 ` [Qemu-devel] [PULL 00/10] Block patches Anthony Liguori

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=502FEB27.3090403@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).