block: Fix multiwrite error handling
PATCH 1/1 block: Fix multiwrite error handling
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 <[email protected]>
--- block.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
block.c +1 -1
@@ -1734,7 +1734,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); }
Signature · 1 line
1.6.6.1
Aurelien Jarno
AppliedQuoted 5 lines · Kevin Wolf
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 <[email protected]>
Thanks, applied.
Quoted 23 lines
--- block.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)block.c +1
-1@@ -1734,7 +1734,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); }Signature · 1 line
1.6.6.1
Signature · 2 lines
Aurelien Jarno GPG: 1024D/F1BCDB73 [email protected] http://www.aurel32.net