Patchwork [STABLE,06/10] block: Fix multiwrite error handling

login
register
mail settings
Submitter Kevin Wolf
Date April 9, 2010, 9:46 a.m.
Message ID <1270806388-28138-7-git-send-email-kwolf@redhat.com>
Download mbox | patch
Permalink /patch/49798/
State New
Headers show

Comments

Kevin Wolf - April 9, 2010, 9:46 a.m.
When two requests of the same multiwrite batch fail, the callback of all
requests in that batch were called twice. This could have any kind of nasty
effects, in my case it lead to use after free and eventually a segfault.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Patch

diff --git a/block.c b/block.c
index 9697dc9..06e22a6 100644
--- a/block.c
+++ b/block.c
@@ -1617,7 +1617,7 @@  static void multiwrite_cb(void *opaque, int ret)
 {
     MultiwriteCB *mcb = opaque;
 
-    if (ret < 0) {
+    if (ret < 0 && !mcb->error) {
         mcb->error = ret;
         multiwrite_user_cb(mcb);
     }