diff --git a/libvirt-fix-qemu-restore-from-raw.patch b/libvirt-fix-qemu-restore-from-raw.patch
new file mode 100644
index 0000000..2d3c8e1
--- /dev/null
+++ b/libvirt-fix-qemu-restore-from-raw.patch
@@ -0,0 +1,38 @@
+From 8c8bca077a913e7ae49798400f4ac3f121600881 Mon Sep 17 00:00:00 2001
+From: Daniel P. Berrange <berrange@redhat.com>
+Date: Mon, 12 Oct 2009 20:03:50 +0100
+Subject: [PATCH] Fix QEMU restore from file in raw format
+
+The logic for running the decompression programs was broken in
+commit f238709304f9f6c57204cdd943e542cbae38fa5f, so that for
+non-raw formats the decompression program was never run, and
+for raw formats, it tried to exec an argv[] with initial NULL
+in the program name.
+
+* src/qemu/qemu_driver.c: Fix logic in runing decompression program
+
+(cherry picked from commit 74b379cbd5ba9f472a3a2d5710e497966b1a3a37)
+
+Fedora-patch: libvirt-fix-qemu-restore-from-raw.patch
+---
+ src/qemu_driver.c |    3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+diff --git a/src/qemu_driver.c b/src/qemu_driver.c
+index 550a59c..0ce403c 100644
+--- a/src/qemu_driver.c
++++ b/src/qemu_driver.c
+@@ -4541,9 +4541,8 @@ static int qemudDomainRestore(virConnectPtr conn,
+             goto cleanup;
+         }
+ 
+-        if (header.compressed != QEMUD_SAVE_FORMAT_RAW)
++        if (header.compressed != QEMUD_SAVE_FORMAT_RAW) {
+             intermediate_argv[0] = prog;
+-        else {
+             intermediatefd = fd;
+             fd = -1;
+             if (virExec(conn, intermediate_argv, NULL, NULL,
+-- 
+1.6.2.5
+
diff --git a/libvirt.spec b/libvirt.spec
index 59dc021..01287ed 100644
--- a/libvirt.spec
+++ b/libvirt.spec
@@ -151,7 +151,7 @@
 Summary: Library providing a simple API virtualization
 Name: libvirt
 Version: 0.7.1
-Release: 11%{?dist}%{?extra_release}
+Release: 12%{?dist}%{?extra_release}
 License: LGPLv2+
 Group: Development/Libraries
 Source: http://libvirt.org/sources/libvirt-%{version}.tar.gz
@@ -187,6 +187,9 @@ Patch12: libvirt-fix-device-detach-typo3.patch
 # Fix libvirtd memory leak during error reply sending (#528162)
 Patch13: libvirt-fix-libvirtd-leak-in-error-reply.patch
 
+# Fix restore of qemu guest using raw save format (#523158)
+Patch14: libvirt-fix-qemu-restore-from-raw.patch
+
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 URL: http://libvirt.org/
 BuildRequires: python-devel
@@ -415,6 +418,7 @@ of recent versions of Linux (and other OSes).
 %patch11 -p1
 %patch12 -p1
 %patch13 -p1
+%patch14 -p1
 
 %build
 # Needed for libvirt-logrotate-create-lxc-uml-dirs.patch
@@ -809,6 +813,9 @@ fi
 %endif
 
 %changelog
+* Tue Oct 13 2009 Mark McLoughlin <markmc@redhat.com> - 0.7.1-12
+- Fix restore of qemu guest using raw save format (#523158)
+
 * Fri Oct  9 2009 Mark McLoughlin <markmc@redhat.com> - 0.7.1-11
 - Fix libvirtd memory leak during error reply sending (#528162)
 - Add several PCI hot-unplug typo fixes from upstream