Go to file
aliguori f8de16605c Fix (at least one cause of) qcow2 corruption. (Nolan Leake)
qcow2's get_cluster_offset() scans forward in the l2 table to find other
clusters that have the same allocation status as the first cluster.
This is used by (among others) qcow_is_allocated().

Unfortunately, it was not checking to be sure that it didn't fall off
the end of the l2 table.  This patch adds that check.

The symptom that motivated me to look into this was that
bdrv_is_allocated() was returning false when there was in fact data
there.  This is one of many ways this bug could lead to data corruption.

I checked the other place that scans for consecutive unallocated blocks
(alloc_cluster_offset()) and it appears to be OK:
    nb_clusters = MIN(nb_clusters, s->l2_size - l2_index);
appears to prevent the same problem from occurring.

Signed-off-by: Nolan Leake <nolan <at> sigbus.net>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6977 c046a42c-6fe2-441c-8c8c-71466251a162
2009-04-05 17:40:38 +00:00
audio Support for DragonFly BSD (Hasso Tepper) 2009-03-07 20:06:23 +00:00
bsd-user Fix BSD user: there is no NPTL 2009-03-07 18:59:05 +00:00
darwin-user Use a dedicated function to request exit from execution loop 2009-03-07 21:28:24 +00:00
fpu Rename one more _BSD to HOST_BSD (spotted by Hasso Tepper) 2009-03-08 15:58:00 +00:00
gdb-xml Work around QEMU GDB stub suboptimality 2009-03-07 22:00:56 +00:00
hw Fix oops on 2.6.25 guest (Rusty Russell) 2009-04-05 17:40:08 +00:00
keymaps Fix fr-be keymap 2009-02-09 23:19:44 +00:00
linux-user Use a dedicated function to request exit from execution loop 2009-03-07 21:28:24 +00:00
pc-bios Update OpenBIOS images to r482 2009-03-31 15:46:09 +00:00
slirp Delete some unused macros detected with -Wp,-Wunused-macros use 2009-03-16 16:33:01 +00:00
target-alpha target-alpha: bug fix: avoid nop to override next instruction 2009-03-29 01:04:39 +00:00
target-arm Fix ARM quadword VDUP (core register). 2009-03-17 12:19:58 +00:00
target-cris The _exit syscall is used for both thread termination in NPTL applications, 2009-03-07 15:24:59 +00:00
target-i386 Immediate versions of ro[lr] 2009-04-02 22:54:35 +00:00
target-m68k tcg: rename bswap_i32/i64 functions 2009-03-13 09:34:48 +00:00
target-mips target-mips: optimize gen_movcf_*() 2009-03-29 15:45:02 +00:00
target-ppc target-ppc: Explain why the whole TLB is flushed on SR write 2009-03-29 13:36:32 +00:00
target-sh4 SH: Fix linux-user _is_cached typo. 2009-04-03 07:33:24 +00:00
target-sparc Delete some unused macros detected with -Wp,-Wunused-macros use 2009-03-16 16:33:01 +00:00
tcg Fix branches and TLB matches for 64 bit targets 2009-04-04 19:10:26 +00:00
tests Get rid of user_mode_only 2009-01-14 19:40:27 +00:00
.gitignore Extend gitignore (Jan Kiszka) 2009-01-22 17:15:25 +00:00
CODING_STYLE Document QEMU coding style (v2) (Avi Kivity) 2009-04-05 17:40:34 +00:00
COPYING COPYING: update from FSF 2008-10-12 17:54:42 +00:00
COPYING.LIB Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
Changelog Update changelog 2009-03-13 16:22:41 +00:00
LICENSE Add missing newline at the end of file 2008-12-14 08:50:18 +00:00
MAINTAINERS Update maintainers list. 2008-08-25 22:26:03 +00:00
Makefile Fix out of tree compilation 2009-03-28 08:14:42 +00:00
Makefile.target Compile all files with -ffixed-g5 etc. to avoid env (%g5) corruption 2009-04-04 09:21:28 +00:00
README Add missing newline at the end of file 2008-12-14 08:50:18 +00:00
TODO Update 2008-12-04 11:29:42 +00:00
VERSION Add version information for 0.10.0 release. 2009-03-04 22:47:59 +00:00
a.out.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
acl.c Remove tabs introduced from VNC ACL series 2009-03-06 20:27:40 +00:00
acl.h Support ACLs for controlling VNC access ("Daniel P. Berrange") 2009-03-06 20:27:37 +00:00
aes.c Delete some unused macros detected with -Wp,-Wunused-macros use 2009-03-16 16:33:01 +00:00
aes.h AES crypto support 2004-08-01 21:54:53 +00:00
aio.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
alpha-dis.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
alpha.ld alpha support 2003-04-29 20:53:42 +00:00
arm-dis.c clean build: Fix arm build warnings 2009-03-07 21:48:00 +00:00
arm-semi.c Fix more FSF addresses 2009-01-05 18:11:53 +00:00
arm.ld Link ARM prologue closer to code segment to avoid a build failure 2008-07-10 17:21:31 +00:00
balloon.h Add missing file from previous commit. 2008-12-04 20:35:16 +00:00
block-bochs.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-cloop.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-cow.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-dmg.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-nbd.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-parallels.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-qcow.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-qcow2.c Fix (at least one cause of) qcow2 corruption. (Nolan Leake) 2009-04-05 17:40:38 +00:00
block-raw-posix.c Fix wrong return value 2009-03-30 17:51:29 +00:00
block-raw-win32.c Remove dead AIO code for win32 2009-03-29 20:54:17 +00:00
block-vmdk.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-vpc.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-vvfat.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block.c check for bs->drv in bdrv_flush (Christoph Hellwig) 2009-03-29 01:31:51 +00:00
block.h block: support known backing format for image create and open (Uri Lublin) 2009-03-28 17:55:10 +00:00
block_int.h block: support known backing format for image create and open (Uri Lublin) 2009-03-28 17:55:10 +00:00
bswap.h Sparse fixes: truncation by cast 2009-03-07 15:46:23 +00:00
bt-host.c Clean build: Add bt-host.h 2009-03-10 21:43:35 +00:00
bt-host.h Clean build: Add bt-host.h 2009-03-10 21:43:35 +00:00
bt-vhci.c Sparse fixes: NULL use, header order, ANSI prototypes, static 2009-03-07 15:32:56 +00:00
buffered_file.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
buffered_file.h Introduce a buffered file wrapper for QEMUFile 2008-10-13 03:10:22 +00:00
cache-utils.c Properly initialize len argument of sysctl and include stdio.h (perror) 2009-02-04 20:39:09 +00:00
cache-utils.h Remove all traces of __powerpc__ 2009-01-14 18:39:49 +00:00
cocoa.m Update cocoa.m to match new DisplayState code (Samuel Benson) 2009-03-04 19:25:22 +00:00
configure Compile all files with -ffixed-g5 etc. to avoid env (%g5) corruption 2009-04-04 09:21:28 +00:00
console.c Delete some unused macros detected with -Wp,-Wunused-macros use 2009-03-16 16:33:01 +00:00
console.h DisplayAllocator interface (Stefano Stabellini) 2009-03-13 15:02:13 +00:00
cpu-all.h Use a dedicated function to request exit from execution loop 2009-03-07 21:28:24 +00:00
cpu-defs.h The _exit syscall is used for both thread termination in NPTL applications, 2009-03-07 15:24:59 +00:00
cpu-exec.c Make i386-softmmu boot on Sparc host 2009-04-04 07:41:20 +00:00
cris-dis.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
curses.c DisplayAllocator interface (Stefano Stabellini) 2009-03-13 15:02:13 +00:00
curses_keys.h Sparse fixes: remove duplicate entry 2009-03-07 15:53:15 +00:00
cutils.c add qemu_iovec_init_external (Christoph Hellwig) 2009-03-28 17:46:10 +00:00
d3des.c Ansify to please sparse 2008-10-27 19:49:12 +00:00
d3des.h Actually add d3des implementation files. 2007-08-25 02:09:50 +00:00
def-helper.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
device_tree.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
device_tree.h Implement device tree support needed for Bamboo emulation 2008-12-16 10:43:48 +00:00
dis-asm.h Update ppc-dis.c from binutils 2.17 2009-02-09 19:58:22 +00:00
disas.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
disas.h monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
dma-helpers.c Fix DMA API when handling an immediate error from block layer (Avi Kivity) 2009-03-28 16:11:25 +00:00
dma.h Implement cancellation method for dma async I/O (Avi Kivity) 2009-03-20 18:26:07 +00:00
dyngen-exec.h Prune unused AREGs 2009-03-08 12:41:36 +00:00
elf.h Fix most warnings that would be caused by gcc flag -Wundef 2008-09-06 17:47:39 +00:00
elf_ops.h Make the ELF loader aware of backwards compatibility 2009-03-13 21:16:24 +00:00
exec-all.h Remove GenOpFunc typedefs 2009-02-08 17:17:52 +00:00
exec.c ROM write access for debugging (Jan Kiszka) 2009-03-28 17:51:36 +00:00
feature_to_c.sh Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
gdbstub.c gdbstub: Allow re-instantiation (Jan Kiszka) 2009-03-28 18:05:53 +00:00
gdbstub.h Guest debugging support for KVM (Jan Kiszka) 2009-03-12 20:12:48 +00:00
gen-icount.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
host-utils.c Code used by the linux-user targets should not use vl.h. 2007-11-05 13:01:41 +00:00
host-utils.h Include <strings.h> for ffs(). 2008-11-12 17:18:41 +00:00
hostregs_helper.h Prune unused AREGs 2009-03-08 12:41:36 +00:00
hpet.h Add a local copy of hpet.h. 2007-09-16 20:03:23 +00:00
hppa-dis.c HPPA (PA-RISC) host support 2008-04-12 20:14:54 +00:00
hppa.ld HPPA (PA-RISC) host support 2008-04-12 20:14:54 +00:00
hxtool Fix hxtool eating backslash sequences for sh != bash 2009-03-29 10:50:43 +00:00
i386-dis.c Update i386-dis.c from commits before GPLv3 switch 2009-03-07 16:57:53 +00:00
i386.ld Add TLS sections. 2008-05-31 16:21:33 +00:00
ia64.ld ia64 host support (David Mosberger) 2005-04-07 22:20:31 +00:00
keymaps.c Refactor keymap code to avoid duplication ("Daniel P. Berrange") 2009-03-06 20:27:10 +00:00
keymaps.h Add missing file from previous commit 2009-03-06 22:47:54 +00:00
kqemu.c Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
kqemu.h kqemu API change - allow use of kqemu with 32 bit QEMU on a 64 bit host 2008-05-30 20:48:25 +00:00
kvm-all.c Guest debugging support for KVM (Jan Kiszka) 2009-03-12 20:12:48 +00:00
kvm.h Guest debugging support for KVM (Jan Kiszka) 2009-03-12 20:12:48 +00:00
libfdt_env.h Implement device tree support needed for Bamboo emulation 2008-12-16 10:43:48 +00:00
loader.c Delete some unused macros detected with -Wp,-Wunused-macros use 2009-03-16 16:33:01 +00:00
m68k-dis.c Spelling and grammar fixes 2008-11-30 16:25:37 +00:00
m68k-semi.c Fix more FSF addresses 2009-01-05 18:11:53 +00:00
m68k.ld m68k host port (Richard Zidlicky) 2003-08-10 22:14:22 +00:00
migration-exec.c monitor: Decouple terminals (Jan Kiszka) 2009-03-05 23:01:42 +00:00
migration-tcp.c monitor: Decouple terminals (Jan Kiszka) 2009-03-05 23:01:42 +00:00
migration.c monitor: Introduce MONITOR_USE_READLINE flag (Jan Kiszka) 2009-03-05 23:01:51 +00:00
migration.h monitor: Decouple terminals (Jan Kiszka) 2009-03-05 23:01:42 +00:00
mips-dis.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
mips.ld Linker scripts for MIPS hosts. 2007-05-05 19:24:38 +00:00
mipsel.ld Linker scripts for MIPS hosts. 2007-05-05 19:24:38 +00:00
monitor.c gdbstub: Allow re-instantiation (Jan Kiszka) 2009-03-28 18:05:53 +00:00
monitor.h monitor: Introduce MONITOR_USE_READLINE flag (Jan Kiszka) 2009-03-05 23:01:51 +00:00
nbd.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
nbd.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
net-checksum.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
net.c host_device_remove: remove incorrect check for device name (Eduardo Habkost) 2009-03-28 15:58:58 +00:00
net.h monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
osdep.c Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
osdep.h snapshot subcommand for qemu-img (Kevin Wolf) 2009-01-07 17:40:15 +00:00
pci-ids.txt List virtio console device in pci-ids.txt 2009-01-24 16:37:31 +00:00
posix-aio-compat.c new scsi-generic abstraction, use SG_IO (Christoph Hellwig) 2009-03-28 17:28:41 +00:00
posix-aio-compat.h new scsi-generic abstraction, use SG_IO (Christoph Hellwig) 2009-03-28 17:28:41 +00:00
ppc-dis.c Update ppc-dis.c from binutils from 4th July, 2007, just before GPLv3 switch 2009-02-09 19:59:57 +00:00
ppc.ld Update ppc.ld to work with newer binutils. 2007-04-28 19:00:30 +00:00
ppc64.ld Correct version of Heikki Lindholms ppc64.ld script 2008-08-20 22:39:24 +00:00
qemu-aio.h Refactor AIO to allow multiple AIO implementations 2008-09-22 19:17:18 +00:00
qemu-binfmt-conf.sh Code provision for n32/n64 mips userland emulation. Not functional yet. 2007-09-30 01:58:33 +00:00
qemu-char.c char: Fix closing of various char devices (Jan Kiszka) 2009-03-28 17:58:14 +00:00
qemu-char.h monitor: Improve mux'ed console experience (Jan Kiszka) 2009-03-05 23:01:47 +00:00
qemu-common.h add qemu_iovec_init_external (Christoph Hellwig) 2009-03-28 17:46:10 +00:00
qemu-doc.texi Syncing documentation vs. -help vs. qemu_options table 2009-03-28 06:44:27 +00:00
qemu-img.c qemu-img: adding a "-F base_fmt" option to "qemu-img create -b" (Uri Lublin) 2009-03-28 17:55:19 +00:00
qemu-img.texi qemu-img: adding a "-F base_fmt" option to "qemu-img create -b" (Uri Lublin) 2009-03-28 17:55:19 +00:00
qemu-lock.h Remove all traces of __powerpc__ 2009-01-14 18:39:49 +00:00
qemu-log.h Define macros that will become the new logging API (Eduardo Habkost) 2009-01-15 21:52:11 +00:00
qemu-malloc.c Fix qemu_realloc() (Kevin Wolf) 2009-02-11 21:00:32 +00:00
qemu-nbd.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
qemu-nbd.texi Fix formatting of documentation (Stefan Weil) 2008-09-22 20:41:57 +00:00
qemu-options.hx Fix compile problems with r6884 2009-03-28 08:13:56 +00:00
qemu-sockets.c Fix some more warnings 2009-01-14 18:34:22 +00:00
qemu-tech.texi Update (thanks to Edgar, Thiemo, malc, Paul, Laurent and Andrzej) 2008-10-09 18:52:04 +00:00
qemu-timer.h Break up vl.h. 2007-11-17 17:14:51 +00:00
qemu-tool.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
qemu.sasl Add SASL authentication support ("Daniel P. Berrange") 2009-03-06 20:27:28 +00:00
qemu_socket.h Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
readline.c monitor: Provide empty command as final history entry (Jan Kiszka) 2009-03-13 15:02:28 +00:00
readline.h monitor: Improve mux'ed console experience (Jan Kiszka) 2009-03-05 23:01:47 +00:00
rules.mak build system: Further improve quiet mode (Jan Kiszka) 2009-01-26 17:07:46 +00:00
s390-dis.c Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
s390.ld Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
savevm.c make qemu_announce_self handle non contiguous net tables (Marcelo Tosatti) 2009-03-13 15:03:58 +00:00
sdl.c Fix absolute mouse events generated by SDL frontend. 2009-03-21 01:09:16 +00:00
sdl_keysym.h Refactor keymap code to avoid duplication ("Daniel P. Berrange") 2009-03-06 20:27:10 +00:00
sh4-dis.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
softmmu-semi.h Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
softmmu_defs.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_exec.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_header.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
softmmu_template.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
sparc-dis.c Make OpenBSD sparc-softmmu compile warning free 2009-01-14 18:08:08 +00:00
sparc.ld More detabification 2007-10-06 11:28:21 +00:00
sparc64.ld Map code buffers below 2G on Sparc64 2008-07-26 15:05:57 +00:00
sys-queue.h Remove CRs 2008-12-14 08:53:17 +00:00
sysemu.h Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
tap-win32.c Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
texi2pod.pl Update texi2pod.pl. 2008-02-04 14:47:49 +00:00
thunk.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
thunk.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
translate-all.c global s/loglevel & X/qemu_loglevel_mask(X)/ (Eduardo Habkost) 2009-01-15 22:36:53 +00:00
uboot_image.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
usb-bsd.c Support for DragonFly BSD (Hasso Tepper) 2009-03-07 20:06:23 +00:00
usb-linux.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
usb-stub.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
vgafont.h Some little fixes on QEMU 2008-09-06 16:31:30 +00:00
vl.c Remove nodisk_ok machine feature (Jan Kiszka) 2009-03-28 17:28:58 +00:00
vnc-auth-sasl.c Remove tabs introduced from VNC ACL series 2009-03-06 20:27:40 +00:00
vnc-auth-sasl.h Support ACLs for controlling VNC access ("Daniel P. Berrange") 2009-03-06 20:27:37 +00:00
vnc-auth-vencrypt.c Add more missing files 2009-03-06 23:44:29 +00:00
vnc-auth-vencrypt.h Add more missing files 2009-03-06 23:44:29 +00:00
vnc-tls.c Add more missing files 2009-03-06 23:44:29 +00:00
vnc-tls.h Add more missing files 2009-03-06 23:44:29 +00:00
vnc.c vnc: throttle screen updates. (Gerd Hoffmann) 2009-03-20 15:59:24 +00:00
vnc.h vnc: throttle screen updates. (Gerd Hoffmann) 2009-03-20 15:59:24 +00:00
vnc_keysym.h Refactor keymap code to avoid duplication ("Daniel P. Berrange") 2009-03-06 20:27:10 +00:00
vnchextile.h vnc: cleanup surface handling, fix screen corruption bug. (Gerd Hoffmann) 2009-03-20 15:59:14 +00:00
x86_64.ld update 2005-01-06 20:50:00 +00:00
x_keymap.c Fix SDL on evdev hosts (Anthony Liguori) 2009-03-03 17:37:21 +00:00
x_keymap.h Fix SDL on evdev hosts (Anthony Liguori) 2009-03-03 17:37:21 +00:00

README

Read the documentation in qemu-doc.html.

Fabrice Bellard.