diff --git a/block.c b/block.c
index b16214260986a8939de80bf7d29d71e63ce3dd2c..656baa521ec14ed52da3823f3b4e3f72905fe104 100644
--- a/block.c
+++ b/block.c
@@ -5415,7 +5415,7 @@ int bdrv_has_zero_init(BlockDriverState *bs)
 
     /* If BS is a copy on write image, it is initialized to
        the contents of the base image, which may not be zeroes.  */
-    if (bs->backing) {
+    if (bdrv_cow_child(bs)) {
         return 0;
     }
     if (bs->drv->bdrv_has_zero_init) {