From e2ac80e18c79550faebdd4aa4f2bb3bde3d02fd2 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Mon, 7 May 2012 16:54:12 -0300
Subject: [RHEL6 qemu-kvm PATCH 1/3] fix mirror_abort NULL pointer dereference

RH-Author: Paolo Bonzini <pbonzini@redhat.com>
Message-id: <1336409652-19595-1-git-send-email-pbonzini@redhat.com>
Patchwork-id: 39620
O-Subject: [RHEL 6.3 qemu-kvm PATCH v2] fix mirror_abort NULL pointer dereference
Bugzilla: 818226
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
RH-Acked-by: Markus Armbruster <armbru@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>

Bugzilla: 818226

Upstream status: N/A

Brew build: http://brewweb.devel.redhat.com/brew/taskinfo?taskID=4382612

NULL pointer dereference spotted by Coverity.
---
        v1->v2: avoid testing container_of(NULL) against NULL

 block/mirror.c |    7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 block/mirror.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/block/mirror.c b/block/mirror.c
index 2bf3580..ee546db 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -289,12 +289,11 @@ int mirror_start(BlockDriverState *bs,
 
 void mirror_abort(BlockDriverState *bs)
 {
-    MirrorBlockJob *s = container_of(bs->job, MirrorBlockJob, common);
-
-    if (s) {
+    if (bs->job) {
+        MirrorBlockJob *s = container_of(bs->job, MirrorBlockJob, common);
         block_job_cancel(&s->common);
+        qemu_coroutine_enter(s->common.co, s);
     }
-    qemu_coroutine_enter(s->common.co, s);
 }
 
 void mirror_commit(BlockDriverState *bs)
-- 
1.7.3.2

