[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 12/32] block/file-posix: Fix check_cache_dropped() error handling
From: |
Markus Armbruster |
Subject: |
[PULL 12/32] block/file-posix: Fix check_cache_dropped() error handling |
Date: |
Wed, 29 Apr 2020 09:20:28 +0200 |
The Error ** argument must be NULL, &error_abort, &error_fatal, or a
pointer to a variable containing NULL. Passing an argument of the
latter kind twice without clearing it in between is wrong: if the
first call sets an error, it no longer points to NULL for the second
call.
check_cache_dropped() calls error_setg() in a loop. It fails to break
the loop in one instance. If a subsequent iteration error_setg()s
again, it trips error_setv()'s assertion.
Fix it to break the loop.
Fixes: 31be8a2a97ecba7d31a82932286489cac318e9e9
Cc: Stefan Hajnoczi <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Message-Id: <address@hidden>
---
block/file-posix.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/block/file-posix.c b/block/file-posix.c
index 7e19bbff5f..094e3b0212 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -2691,10 +2691,13 @@ static void check_cache_dropped(BlockDriverState *bs,
Error **errp)
vec_end = DIV_ROUND_UP(length, page_size);
for (i = 0; i < vec_end; i++) {
if (vec[i] & 0x1) {
- error_setg(errp, "page cache still in use!");
break;
}
}
+ if (i < vec_end) {
+ error_setg(errp, "page cache still in use!");
+ break;
+ }
}
if (window) {
--
2.21.1
- [PULL 11/32] cryptodev: Fix cryptodev_builtin_cleanup() error API violation, (continued)
- [PULL 11/32] cryptodev: Fix cryptodev_builtin_cleanup() error API violation, Markus Armbruster, 2020/04/29
- [PULL 01/32] various: Remove suspicious '\' character outside of #define in C code, Markus Armbruster, 2020/04/29
- [PULL 26/32] smbus: Fix spd_data_generate() error API violation, Markus Armbruster, 2020/04/29
- [PULL 17/32] bochs-display: Fix vgamem=SIZE error handling, Markus Armbruster, 2020/04/29
- [PULL 23/32] qga: Fix qmp_guest_get_memory_blocks() error handling, Markus Armbruster, 2020/04/29
- [PULL 30/32] fuzz: Simplify how we compute available machines and types, Markus Armbruster, 2020/04/29
- [PULL 15/32] arm/virt: Fix virt_machine_device_plug_cb() error API violation, Markus Armbruster, 2020/04/29
- [PULL 29/32] Makefile: Drop unused, broken target recurse-fuzz, Markus Armbruster, 2020/04/29
- [PULL 21/32] migration/colo: Fix qmp_xen_colo_do_checkpoint() error handling, Markus Armbruster, 2020/04/29
- [PULL 13/32] cpus: Fix configure_icount() error API violation, Markus Armbruster, 2020/04/29
- [PULL 12/32] block/file-posix: Fix check_cache_dropped() error handling,
Markus Armbruster <=
- [PULL 14/32] cpus: Proper range-checking for -icount shift=N, Markus Armbruster, 2020/04/29
- [PULL 18/32] virtio-net: Fix duplex=... and speed=... error handling, Markus Armbruster, 2020/04/29
- [PULL 22/32] tests/test-logging: Fix test for -dfilter 0..0xffffffffffffffff, Markus Armbruster, 2020/04/29
- Re: [PULL 00/32] Miscellaneous patches for 2020-04-29, no-reply, 2020/04/29
- Re: [PULL 00/32] Miscellaneous patches for 2020-04-29, Peter Maydell, 2020/04/29