From patchwork Sat Jul 1 10:07:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Ivanov X-Patchwork-Id: 1802218 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=WI85IdQp; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QtSZt2q4Wz20ZC for ; Sat, 1 Jul 2023 20:09:10 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qFXWa-0001WY-Iu; Sat, 01 Jul 2023 06:08:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWY-0001Vw-Db; Sat, 01 Jul 2023 06:08:14 -0400 Received: from mail-db3eur04on071e.outbound.protection.outlook.com ([2a01:111:f400:fe0c::71e] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWW-00076K-50; Sat, 01 Jul 2023 06:08:14 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I45dS3DwLXGmlm5kx/QyiO0GVW9i89b5aUl6EJTq0xo8fHh8MkL+xI5SIipoKevuYeH9/F0AiWzsR55SkYzpOsUQGBMiYpu01Ii+04eO5BGQE7a2jaEN6NQmEGrSxXpFKwzjG0FwzA43lVC9KKJ8QbkzWfBvlENTsIqBO9BIfFmjV3ekS6kLaKNAZRLKW+5H4l5gJkMv28laJ/Knr8P1I69CB+VEdkWuFlshurWW8q6kxa9PnyjxddyHFNT4wSVYqir19xze5ShvHYHX5eg0/n5nbZaKq6Mji0JgjkwBOaI1qd0/R6u75XsL2Ui4rsaiHxiTi0+0U7+eNv1+GBcoXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=u4RodxjprgK5br3qArjQt1InVIySxUMi0MlRq9BpZro=; b=mPmZEFTbma+u3NR4WGrArXpfQDNjcjUyenX7bWKlPXP6uKzT1CM7uVvkx015ZG84Sf+ZlCoeq6v588l3CSH8WxRaO8btVJqbsszx/TdvHwtpu1W/2EyH6/2Lgwq8RQFSkdJ35wnbp7O/pl3IWhPhDlWX8Q0cRQgnIapcpjcW7nIEuav0r6FfLgImAieH3Z/lrQaa6/heHtFTPmQw/0kDOI7P99TqtH9tYq0O73ogABt93H0c8RtYsJwOrmcG4U3AiV2d10mnpxFh+nsSFtXvaGPusN7ZnCCY3pZaSpL8SS/8I7rtM8xsI1bAfjMNrvYjCgb3kmChF0eeuAC925up3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u4RodxjprgK5br3qArjQt1InVIySxUMi0MlRq9BpZro=; b=WI85IdQpI857sIFlJQbjkKFzJ6/1d3kw4KV8vd01tl4PD3Gwe3uXQRElK6UzFw4ow67C7hMVBHz5wCor7tXk7c0fqEBLqNazMBPSBBZhpqIaR9mWRPp2KPuiZn1+siZn8TwUngCzvrOYlq6pw18XdrhOPPecMdZ73II0vg+Cl9FxY7FCb2B783PvhAn5hJgqah2bOjPGIAKvlISrcPe6u9PPDBmVckW67RlKDZxFs+HqSJrVv3+CwYLQoDqdeYOwFbDdkjOUf37riJZ2K+v2yqLiYliS5+A41vFtAdaFICC7XRP6aQrMTJsVvqRhQzgdq3EkzPRwl7b7vQ3iWzQeFA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by AS2PR08MB8832.eurprd08.prod.outlook.com (2603:10a6:20b:5e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Sat, 1 Jul 2023 10:08:07 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6544.024; Sat, 1 Jul 2023 10:08:07 +0000 From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v7 1/8] parallels: Incorrect data end calculation in parallels_open() Date: Sat, 1 Jul 2023 12:07:52 +0200 Message-Id: <20230701100759.261007-2-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> References: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> X-ClientProxiedBy: VI1PR10CA0108.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::37) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|AS2PR08MB8832:EE_ X-MS-Office365-Filtering-Correlation-Id: 6a2c62aa-f0af-451e-60ce-08db7a1b1104 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: opEFppgd7BX8oyX3fyQdNlpk9Zpq+jOzvyXtz1723WEspeqXnjugMVFAoHhL0yNn5d3tDuBqjPSmEY5QlsbgSxoTS2+ZJJHAp0ebuo+0FHcOV0hQxQw7d57sHmunKHQclCon/sdef/exarsIbPGXThZ7kcBaMkgBtx8/j9e49QdOovxsA8tUqHKTzgRfaGuJugNcfVLaKaxRVuRQ+rEGvQAGcUcWDtqId6hirTVWLr63Hg66pX1xZzBPZYtfKAJBEMwJn2tqlD27DWcr4Mi9cBAbpa0LCm+EkTsQVsoBhdLI+O/nfCbZGf38P5AxsybIA1G1B3vKD7+3ciOpQt2HuvESj+FpGyOyTD/DNepxk5zALmV6iTxHk3KbJwvPvMa17orOYlevbiNt97XI56YqYkH7N4IGwrPpUe4g9/J01Y4xU1rxYxSy5hjxk8W34yMxeV8f1eT/EiD4TK1hJrKOlCxWHV6mVLUTTzMZ7VtU9XPROdhgczyiNpJZV1YU/wWB6OJ+yRlDrb1Yx2MjbKNV212CYLQ+9o8mBiX0OoNl2BHNOHsMSM/pI9sXnSuIvtPsb4Z33rmhTv4HGH+BeoROs6gD3ErCu9L2veyH7sz44QaQ3erurM28fGOf08iO/Qwi X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(346002)(376002)(39850400004)(396003)(366004)(451199021)(26005)(478600001)(1076003)(6666004)(6506007)(6512007)(86362001)(2616005)(186003)(38350700002)(38100700002)(6916009)(66556008)(66946007)(4326008)(66476007)(83380400001)(52116002)(6486002)(316002)(5660300002)(8676002)(8936002)(44832011)(41300700001)(2906002)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5ROfpQiUR+YZ6Gv5gvAOVS0QlhixSkxfcljPGeA+S+udisK/juMA4mMLULBe0cO4PjEbeTZGf4chk6F+N+dwGCMu9xPlRmJhVPAaxcEBUXMVitcOS/8b3S+E8oPKlx5FbIBPnW93yk+aXW85gMdNCc+RfEfyZWnVoSTNlHezwmR3AJ9thdiPMr8udpeQjhhe1QPU9LEAs/N+QMloy7x1NCKpplBs2RHFoTdkN3sDNUQZgC8JVGHPehl8muBzXIty3dGft4IN7t8uqcfSAyYPuGIgDkKZS1+8NH/shavGuHN4D/IBnv033d/q/tCMq4TkfwIs1yimBBumSX6fLhgaZdWau8YcHSLKHQtefU8D4BMxcIRLfYLKdpL9srG6E54+5oXtGsfp8jjz6J9pkuwhAJuY9LdJ2ynxiaiX0FOH918srWhc9llTzwhZW61QgbbCatr8VWF4rQA0zXFwZOl0sWts0qghSm735IcNjcBFiRYfq6ElPgqklZwDWGaiI9a2MLoBwBcdyD1/jQ/n+bcNKxnzOKchwOUoKnc/zAj8L6RwIrVHM1h85O3S2CNFhslmzDTm2A16BegRncbAVwViPtQ656l+KdJNrc7xaMFgrgp2g+tkkvZoFX2fV3ap8w5aiZvBLn2tX9HKiyJYTsojYwBjd7tB/fBEqN1OWGtwPEY+a+PklTZZaFvXrUQ3HMKuHb+Zfq/Eopj3pivqnblNekjBVaYjiaI8qlT9v31vaU9/kHuAToVkpSUtlAKAy3VbmQqZqZjje1oY6sH0Svqa3Q68gfTAsPSyq2IfbCvNaMurAmOACnlZe9CesHoiYQrc/BjsfsKA71dX/ufIRvz1GnjLHmhEMm89F/9NYv6kwgblTFrkGWqnw5KD7KJXKQzR/BoUaPL4ukbn8VRTuKh/Xbbka62P4rWJqkJLVhpwLf08CeNOZa+kZhJuqCUu3DI7mbrFA3JaLQcG/hHh6XmNP/Tp1gylQUHBz7GMseTp4e8+W7rNiZg7sE88ueZO7Hhfg3uxGa5gINhm+TgGCDQurSeu8weZHt6E6oy0MO6SsNcGoS11YS7b4MF8sER6fp5s6IIWFGCHSl9tyy96exJra5FxHYHcZvENpLlYlkJ5xXiNvfRPIJFRPabpZYiwT5r9gad6PerSxo+mVeRN1LKVvoef+V7l189U3k9Th7JfbShEW/0o5zzWQTlfvTCy9qMYAwvk9+nIyg6SSJ5O9yZAd37HyK8r49Z5onWkOYenSuU6Wgd1x8mVOP5jwm96CR4G4hVzvr3a2SmY7YldUgACLNUr8rfS08rh3SgdQiwbKtpKDdTSxGhsYECo6az7UTkw98rlfEY8CLizYImfsLDqW3sVjIOOE++MyZkfyNpTcoFmWxVyIzdBTydmlhIFmdQ+KLQzg8bpauM05bN73mnJ+5C5zWEAfhn2uwGtuvpOZkKC1d9lD/hBLNQQFraPz7SAQUOkxcknDsRMp5n82jHnbIQa5Vsz5VaR1w3EoHKCTmFrzYuShIGd0T9pkNcBcVIzYRZfqgIXyBKfOtoLei8COMA+4o9B9pXkQrxTJ9uL4MFkf76nSoNw8CE3kuTF5ZSQ5Gs32Mjyc2IBLwE4zwqsK2edKKGlmmUTX7CXPZPYH+I= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6a2c62aa-f0af-451e-60ce-08db7a1b1104 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2023 10:08:07.2132 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /BeA8VbAgNtGdAf5+su6twtx9r+BifGVIAH7SO0f/7+ywy+jAOWhyHC/ngt2lrsFBZhiEoCJonP8EW4Bl1a1QzElzmGV5KUwCqb72OY2ZaQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8832 Received-SPF: pass client-ip=2a01:111:f400:fe0c::71e; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org The BDRVParallelsState structure contains data_end field that is measured in sectors. In parallels_open() initially this field is set by data_off field from parallels image header. According to the parallels format documentation, data_off field contains an offset, in sectors, from the start of the file to the start of the data area. For "WithoutFreeSpace" images: if data_off is zero, the offset is calculated as the end of the BAT table plus some padding to ensure sector size alignment. The parallels_open() function has code for handling zero value in data_off, but in the result data_end contains the offset in bytes. Replace the alignment to sector size by division by sector size and fix the comparision with s->header_size. Signed-off-by: Alexander Ivanov Reviewed-by: Denis V. Lunev Reviewed-by: Hanna Czenczek --- block/parallels.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 18e34aef28..86bc3bfcb8 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -861,9 +861,9 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, } s->data_end = le32_to_cpu(ph.data_off); if (s->data_end == 0) { - s->data_end = ROUND_UP(bat_entry_off(s->bat_size), BDRV_SECTOR_SIZE); + s->data_end = DIV_ROUND_UP(size, BDRV_SECTOR_SIZE); } - if (s->data_end < s->header_size) { + if (s->data_end < (s->header_size >> BDRV_SECTOR_BITS)) { /* there is not enough unused space to fit to block align between BAT and actual data. We can't avoid read-modify-write... */ s->header_size = size; From patchwork Sat Jul 1 10:07:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Ivanov X-Patchwork-Id: 1802223 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=cqj5/vYV; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QtSbq5yxtz20ZC for ; Sat, 1 Jul 2023 20:09:59 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qFXWc-0001Y6-AF; Sat, 01 Jul 2023 06:08:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWa-0001Wb-Ej; Sat, 01 Jul 2023 06:08:16 -0400 Received: from mail-db3eur04on071e.outbound.protection.outlook.com ([2a01:111:f400:fe0c::71e] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWY-00076K-W3; Sat, 01 Jul 2023 06:08:16 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KULPkrbHe12Gp93U+URPUmSqSiRBG94A15diaHzv5ecK6fGNOsTVsiihqm/aJ5DNXF0MKmrhJcNkUC7Qfo29USfo+s5hWpg8ddFSSjEEC1LaOumpeClc13ZDX59q9M3Z8fAaGY5Uj6P9dKIT62+9auZ0dpfH+EmRMgU9INm64scUgbmOSz/yBBsJ3ZtBskA1hFmM/O4Nqzcy1LNjv1Q0rSxoiw6MORd/awrezHoDcWxcMBTHoUDCkKWkjRfq7u/DILnkdZiSbjoEeOPkmxS3D7Qx816Z/1LBejeaIBjSVdSe2Dn5hZAc7M67IWz+hPKRRKEnb5HHUGJEHpb9JLdd5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=eYFtJkHvB2sGs529bdWj6IlGeO3j8PwXarlbxavyln4=; b=RDxpBdHISj2RRdOeKXpOynwhTek1CWPv6MK/cbTrky7H1t5rC8ooFmP1tJnnlxK6ieSCGgf2NGvahTixd/ASjCC8vRvlGBffhGxuyE3bbgAsrin5uGTJdcMeeErBdChF81f22FhArlZprF+m2vSbt9sJVq5BJxX/Dr98j9zP5Zfj2RH56cPGEneaNMOfpXzFXCAPSh/SKl4oatCVcomxJpsPJq1CUrKMIuSPHtII2FxGw8uH0uebY5nbrRBEt+jXkz6+73iB9B7aMnEOnXnvsk8gbOZXTM3/PT64j3RRU8+8KOpfky8MyMl7LKPqeMFh5mf+cumiHQdL5PK0GVSuow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eYFtJkHvB2sGs529bdWj6IlGeO3j8PwXarlbxavyln4=; b=cqj5/vYV18KV9NxbBEqck3w3aZSLa5ayiGDFlDv6aH7fPjFTnUqLypZdViDYbvjIfj1yqyzBdOdFur1jXOMxXsMGUYzeuHr8dZ908EJdMON9tG/GLBm5k64Gc8n4t6vjk/I7S2EHkQE5Fs/R/30DSHJNVHg30KKv/nbiYI9yAHWEIjvIaLGOlwUG2/qCTKeVIn8V300HZhGmkSTgA/cAkcAPzfhL8rufOBcKoksV1iRC8onl12nDVg+tyu3wkEPu30I/5kSPVJ1X3YzABQ08xGIu3WKncwuxbsD4CwxTrKmV61kMgnMEUbP53xuhgN508NbqWe8I8v7LS0EMc9uGMw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by AS2PR08MB8832.eurprd08.prod.outlook.com (2603:10a6:20b:5e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Sat, 1 Jul 2023 10:08:07 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6544.024; Sat, 1 Jul 2023 10:08:07 +0000 From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v7 2/8] parallels: Check if data_end greater than the file size Date: Sat, 1 Jul 2023 12:07:53 +0200 Message-Id: <20230701100759.261007-3-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> References: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> X-ClientProxiedBy: VI1PR10CA0108.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::37) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|AS2PR08MB8832:EE_ X-MS-Office365-Filtering-Correlation-Id: a5c68334-1f58-41b3-6efe-08db7a1b1155 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aMsNon3P5DyVZrUz8VvYYaDiuKeevoMM3eIcuczh45Yttjzbw90KkR0YzAG1Y/cMbyn7pWHa2ogGgR/nv6qE/oX2kESzXBAbkHrL5YFicGueizZHsxzNlcdR1XORi1CATV6AHAzZtfSC2jPqiWn/FQCuWYYzJOrjVoippRkiRqRBPxZ/XVrwhUuWZuJ798rqw2YxnJ7J8XXyU+7OMmQtGymLSJsA3WwytlqHo3hCbVOWVZ/UzaWdto0yexGOGqxm1LaxMCGqiezza1c4mp7REp5v8ZAwS9hnf8kjPjWGdo8vWngHxiKE0kvNS+HsgAoL+bOfvoGwYlLtFXKAAqQjPLYeHMA6h5Mb9MMF8m0rA2f2jCgJCbJ//FpjYgfkUCXU/R1U0xOqwNnnv5hMkESEoWS4DFKzk9zNxvzNVU0mNlT5chjGyNgxUBxFnkD0BNrL2qZWJV560uwYiKs0o1/QD7xWfzGOqP/j9sAo8C7v1o26xZ+eMHPh1dVVQNrWNAxEKlRU1XeMIy+aLTf4p4tpJGbFpne+9WhLwkvpDDR2P013PRB+NbhoL2QMmnsrtf60FvuhXjg8WK+qr+FDMvCLp74ydrMDqemD0mKOZf0YvSefJE6XNQwSAej4o9r0Fktx X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(346002)(376002)(39850400004)(396003)(366004)(451199021)(26005)(478600001)(1076003)(6666004)(6506007)(6512007)(86362001)(2616005)(186003)(38350700002)(38100700002)(6916009)(66556008)(66946007)(4326008)(66476007)(83380400001)(52116002)(6486002)(316002)(5660300002)(8676002)(8936002)(44832011)(4744005)(41300700001)(2906002)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ssKBkjXIbDlB0k6lFVyKMMfwAsHgRf0z6Pre7ySsihJ4t5c5wn8uj0TroGh6LBO6UONdS8CNTkKDH8KrAfcIsCcw8/lUztUZwFAsdR/IWifSX4T1Z5U80L4UYAJhDVafBzjfMgFdK3HYPPiHnX0TYpZGXT1d1eYyNeR5QlzDo6QSixfj5tB3cWWkKSjK4K9mrF7s3qBopBQrWnQJRpgGbyUnL0HFAlcHJEVZgLY1o5KPQuoWOtFx/mvGKW6atjvz5O4UUmcQJSatOtqAQrcbIc0Xw3JJJNhXH36pthZb+nEu09HUKOkGGs4m9kfivuxMtmB66FceeNT1p5zDoXGH6cBahpgukl0thPe0vyRqOaVBeFu9UyFMipcgC1uw95lK5toITWKVjfXuBy/NZejgmQQifP/ezxhGouVxr9x/D+2NOhbxx7LN5C3EGiwmjmsChV0ySeTnNKxZY866IbsAeREwD//VjDX75Gv1Z+PUHliux/8p7J3Sic3GOdaqpMkhX5+aBwNR2cL9Fgvz+U7fyUMZpgfToPE/F7mNXbmUe7pXV/pu0XsGgSLQc3w+78y4cL8c2MfoG7slh4oeOQlK50zuLxzuUSfnz5rt4juGdX21Ap0PtrPs7eGrZHRMru7RqpSEXa906DB2zqBPR1bq8xeBnUmUMuBkj7t6HuM1srFz/2KGXxRfNQg+7nLxxlGfANn3L0xStg2OeJwsuOxnJAp+Uyr84eqdfVIzp/lIEZ5TCOoCWRgT3Y7/reswzZI/QY9of/Zt1usEoD3//MGEdv6LAjIIDpEZHjjPcXROvFWS9cpaexHszChdeIOM1IuCZY4gio3o4Tcc3e2F3FPgl/S4U2nQZ39xTPnLU4e0At8g1Fj0/UXcdvP+mu8vIAyXaTBFcuRgBhDAOKiGDF73R8tvrLcX4nElhzDFghMatyhueuzsy7CQ7ANbcIr86HbvOvfi8sLAw1MfoRS8pBmkCqVN29db5WsCfEHqmm+V0d9p10CsZohAGzPcv3JEL9xyuYP1IQXsNtLXBD8XOPE+QCOD4KBlidVV54iskQH+CCdbHiahgPnFveMEaz7HTnRaOOXpnUDVJJCsbfxhnliBVTb+dOs05MjHdDxcWdoqxWB7CYkSe0N83wYhji4i3F1Am9b21jIcUnugVn2XHdNfNUL6g1D/ETfR59c0HCQVk7ffCn5/DSAAqGlv4+6bVUnOD3S2lCjdaJNEdZN/CgEVwu+Lem3ajBmUFGD/BbLXWQDFnGK2UYCvcE8B92nw0AGUyUkxkBZ4V5PbKoGqXqq4/uNpy3/wd3S1OPzvsz9qibtKjNTlXSn8YCPHubN6geU4trmBTDLdIyB2d6BRJXHrDYtF1ZUP25hry4BlF139LxqM7D8/iSAi1NSyo+HPeG7UV2g3Cepl1pWb1P3Q5yMC2uqHhTqhDXeN96w5Hj+xx1a+q1NudeZ8cw2TSDn5MJcpBNfm23LXGP32uH61GxxB9UugYXa+kgtqhPg0En6tv7jKXu0BlsHyHRoRcHEjNhUsdHVCLLZBZw3THqBwNwnecFtH5KKSI2eoF/Us0PNR8SEeRYFBnERS95BC76NyUgKKVuCxFWGAEcs3GBrQti3/lHykvWKaDQnWqlJc6wF3SAI= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a5c68334-1f58-41b3-6efe-08db7a1b1155 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2023 10:08:07.7938 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WoapTDgUGsgzFiUOcvzdInq+YwYUwAljsDkCR3IQWZCPLvgGWG8TOFoHTAzLQfeQ7uY8UDEMsI7eZCV4vEYvngMmwVXg5/S7tvPodN0bswc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8832 Received-SPF: pass client-ip=2a01:111:f400:fe0c::71e; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Initially data_end is set to the data_off image header field and must not be greater than the file size. Signed-off-by: Alexander Ivanov Reviewed-by: Denis V. Lunev --- block/parallels.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/block/parallels.c b/block/parallels.c index 86bc3bfcb8..40a26908db 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -868,6 +868,11 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, and actual data. We can't avoid read-modify-write... */ s->header_size = size; } + if (s->data_end > file_nb_sectors) { + error_setg(errp, "Invalid image: incorrect data_off field"); + ret = -EINVAL; + goto fail; + } ret = bdrv_pread(bs->file, 0, s->header_size, s->header, 0); if (ret < 0) { From patchwork Sat Jul 1 10:07:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Ivanov X-Patchwork-Id: 1802219 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=ibkK0GIY; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QtSZt482zz20bj for ; Sat, 1 Jul 2023 20:09:10 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qFXWf-0001au-6w; Sat, 01 Jul 2023 06:08:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWc-0001Y7-3R; Sat, 01 Jul 2023 06:08:18 -0400 Received: from mail-db5eur02on20710.outbound.protection.outlook.com ([2a01:111:f400:fe12::710] helo=EUR02-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWa-00076b-Fn; Sat, 01 Jul 2023 06:08:17 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E3zwyS+DobY+bhGSo7vV2sT5d5eN0MOrx2gfjmIV4O1NBR77bEfK22uC9X+5AQmsWArLSDDnAE5ita0FTO4ElIx01plhXp1LSV/loC6zrBysQ/x12QqUQULprWcxMHe1L976uU7fGOin3S/WSt+lOhOy8L8/QbfnBy6OZESiTi0FV3QfD/D1//yTcRur8B0k7LUeQP/U7NGhLE/oTNBDkCGSBYxaksnMhSAujh5WuNPKXPU9d5B3h5spv7dFLyWD7CO0i8Mg2G/GULRwIQ1fiqX37nW/EMZuRdesSZh8hW4MjEKJHPEe4gJyd7Nrqa4RIjgtxDRX9fDnxs9lttc/qA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iuf7RnmcuBo2aUY6XCR3g+hut+RBVotOg18q+tJ6irg=; b=FrC3i7Vbn6SXJ5vyzOdSR/eDVSFpPGOYw38F0+dAVaY3k1LstwuV39soaK5D76a2OPKaR5eQ6SQ3igcc1M+jibai33gicuZ01ft6Y1qfu9vBaURSYO3ojyxS2U/mNj4nQmmz2INm/weXaVukeUCwonvTwrgpm++LoJGnU+5nv+frUdpapabdZiR9UaYkdjLMHEiIqO1uil1n+QBLB8vk3cINfQok6VVf599AD0WSUz9uOWBljaxdL0V6U7BTwwVMNmd/4iBdhG52EfdHMPv3WmrqK/dtnzeCEQFSvA40EbmTET2sKsTx70+Mq0AwwlshMpDhXDRJSfs1qIdB9D4YVA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iuf7RnmcuBo2aUY6XCR3g+hut+RBVotOg18q+tJ6irg=; b=ibkK0GIYfVqiwLwFGb6aAh12r9UGlebFuuh3p8JWN4i2sXwY5qNTDI0pGsmcGJ/Xk7MIcDHDM0+BgBe8dF1tuMIa0vipilfz7OdR/Q/mfNHrbGhrl3WQYhbVBBr1Pob2ePnzPO9PHbFrD3lFU7Kinox/bj2fdOsonlzMqWvI8t/9BLkqIvEFZmPn3pe1lLQm3NHwwetBuyOBJD2FkE4b5ccu570b6u7BwFPMyMtn5vd6Xhtzjlg5j7VTaj69p2lHVJ1vqfTcJUucBQJRzDtv27SMgCMb074dEGMtjA0AeUbCydLuILnIi6YNJ+e1hHfwkkuyl24h1QrTcpcZ3cDRJA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by AS2PR08MB8832.eurprd08.prod.outlook.com (2603:10a6:20b:5e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Sat, 1 Jul 2023 10:08:08 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6544.024; Sat, 1 Jul 2023 10:08:08 +0000 From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v7 3/8] parallels: Add "explicit" argument to parallels_check_leak() Date: Sat, 1 Jul 2023 12:07:54 +0200 Message-Id: <20230701100759.261007-4-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> References: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> X-ClientProxiedBy: VI1PR10CA0108.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::37) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|AS2PR08MB8832:EE_ X-MS-Office365-Filtering-Correlation-Id: fcae5f8c-0722-4851-3c1f-08db7a1b11ab X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: b4MwBigVYqmV60zKbDl5kyelRgl5kJ1qJaTa1BfOrnX9VGZutghRzaPOHYHYByCqca4I1NOUn58bzNgRBN4zww1+YBsr354IyqMsNZK3YmjIlF7IvkHJXs30VQd3wNXBFu5am4BVppROaPErhyRp7R2QOC8ag6zuRSsc5p6jX7m3hsF3a0IfE6gsb1q2DFO59JFcJK8E6UjQZoWjThBFLQdIFqFT9pjohY/5vna5TDzR6hYBQh7J5OXAsMycbFKz8DqaKctq1S94Vot0H4PTJV+n8tg+n+Utnu4vTiPstaARcNoQ3LMIubu7owW7cu1UZZBeWMTJMwyCWT0jFZGmk15EFaLR0ezaPUj1KZaPaVGIpWD9GUMOEm1w/UKXkDyClq6TScZUNf9X7A8F2Xb9JgdZ8VA5i6F1anOjH/mXCjpGHWKOAvmUtHCG2BXDEG1YbEtElCkDTqQSUvblSVgW8jkReyit5iuOK7Jk7twgGThDodYvyme4E/NheCP/wQd6gnm9Foz4YNaMFgEBatP+H9UlFyk4M7RgNFEz7Y4GRCrZhh6OLpGNPIXdyZnmZe4VqXswW0nFh/wGWDQmfj9/sf6NomFPIEMNuYpzxa61Wht9jAQ6ENXl/hKEN7uculrK X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(346002)(376002)(39850400004)(396003)(366004)(451199021)(26005)(478600001)(1076003)(6666004)(6506007)(6512007)(86362001)(2616005)(186003)(38350700002)(38100700002)(6916009)(66556008)(66946007)(4326008)(66476007)(83380400001)(52116002)(6486002)(316002)(5660300002)(8676002)(8936002)(44832011)(41300700001)(2906002)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cNOxjOF0D6/3EaduQbYoPDuP8gYLAViQyBsaVy807c8Xg8fWJROBRYJzSUEOq3gaa+FoH3H/EPEkdl2unDvKBg2+5EFuUhVfOOKG1YuGfvJNHFCC5Quzgq/R6Yiou2oB20MyXNOWi83I7njhQd+DU1FTEIH1WrnR+vRE5KNac5sRFyb/ZkCXkSqu3czLCk7mk+Bl+NoqQ6d4TaqK/YjzPlguimHAHhZg8unk/MqeZc0n3nZIyGNLlatTcfg45kyvgWsZTOL5/UJP/nS+23w+x0olgiP2jVNHAMAtWyJtijr5qasXAiwB6ZzZULuu+rvjvKgXb4L5UOX3Ahyv5o4CVx1PsOrJCY5OKH4C8LDoCz4fsH3DK4Huu+6IhFPBvJu2ez/Y89g92ds4s1E4aJ9BhZwscOoQp+390tpNyfXc8hyNG2p/dQ2+jifwsfjO1CGxjSQ0O3KQb8K+laioCET17CzfXN82kF2AatgeR3AkX/U9lUsBjCOMy4craHNn4nyfnUctyQxb6mSciWtS8Yk6AhMYsfcREyXRGbxzsvgfwaD7jcuFlte4/YjyXYhYhWCMvFoOSeh+ESNGX5Ek34zjNGAdVjHxadm7FapJV+8LBmk8LMdjx5LhRcQ8OaEMOB5bFHIAropxLOKyPxGzyJ8yG4sboLZtRb3Xn1ag9GrT++2Bl/TI44tLW/27BxcJgdM605AViofpo1BGso379+wJkPus5AfftRChKmVmYYNjavyrPnY0gtRowHXwIPNxJrQgjEreMLqkt8/FvIongiitBnvZKXTrkG9n8EWo725hOgtMNlrDp0qZRf/5TdQexRY6jZ5bAtX1t2ICXKxheMUClgKgzeEswmd764LtJiqdryPSykuJrNC8l+sxW7FFKIaKZXRpUZ/1ioQ8L0bWtl1MvQdeeBTsm/d+RFSSxkT/PVVD6PrPo7k8A9HZvzVD4a2g4A7si2J5SRTL7zlxLz2kCGO4LVa/HdyMCm7hea+6RNGl2p0D0Xs0XuH693JzFXgkYDKLXsrf2X6ggE6EPGCzzavSkA3xHyBhuymlmRlkwH8W1/7qXsQIERLAj6jEjFWeft0C12t7hr4LtCFwMKcVUyCCAKu2LeWnDxHVr9lcTy4dtQeJF6qCaHR1PDp3wJv/f0iNZO7dJZke3icDQ0I4haGeooO8g3KBLonTuoENonO/dOhICXMhe/Y1lGBJCIt7SJ9nsR+vH7U2bOUTOh1ZmoBw4OirGR2GS8urMaazsCpkvDUlRL/sTD6J68ResI/TPJsKjqmeGG6lETLj3/XArGX5CWG13syd4XOpuoCwuuHox2boFq+zxqirlGYNfMq9IsJtq9I0mHQluaVaTfdw6fVbFO1z3nMD8V+Ww0d4LOoFqnmNRAmQycv0zN3PDI8/OGHc2Epbkdb7LlRzBbwjQdcjUjQqK+mexN5IBgW0PgO5p1FseNSzLYlTIVN/8jm7fV63A9JFl2d8jFm3EUHBk8KkdhIcey5+LjqTFf+0cUW5mW/7bdtiHRHl4uOQ3kLAnkDgkyPkb03njv/2uEhBeMCqhrL038ff0fwd0Nf3DvndZJyo4nX+MX4ztFOucUs3Qd4l2W/Kl57hd7HYB+F5t65Iy7VDPG95/PkGymz82bU= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: fcae5f8c-0722-4851-3c1f-08db7a1b11ab X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2023 10:08:08.2998 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: JXxrt5rbXlli4llZwEkup4mmD558oJwu47gwnsgZOu7UITvPkWO4SI1bOthlSXlIEgvge0KSdjqkMAyvllsr377qD1bi7Hrz6ZJ6C9HjO1w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8832 Received-SPF: pass client-ip=2a01:111:f400:fe12::710; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR02-DB5-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org In the on of the next patches we need to repair leaks without changing leaks and leaks_fixed info in res. Also we don't want to print any warning about leaks. Add "explicit" argument to skip info changing if the argument is false. Signed-off-by: Alexander Ivanov Reviewed-by: Denis V. Lunev --- block/parallels.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 40a26908db..3cff25e3a4 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -484,7 +484,7 @@ parallels_check_outside_image(BlockDriverState *bs, BdrvCheckResult *res, static int coroutine_fn GRAPH_RDLOCK parallels_check_leak(BlockDriverState *bs, BdrvCheckResult *res, - BdrvCheckMode fix) + BdrvCheckMode fix, bool explicit) { BDRVParallelsState *s = bs->opaque; int64_t size; @@ -499,10 +499,13 @@ parallels_check_leak(BlockDriverState *bs, BdrvCheckResult *res, if (size > res->image_end_offset) { int64_t count; count = DIV_ROUND_UP(size - res->image_end_offset, s->cluster_size); - fprintf(stderr, "%s space leaked at the end of the image %" PRId64 "\n", - fix & BDRV_FIX_LEAKS ? "Repairing" : "ERROR", - size - res->image_end_offset); - res->leaks += count; + if (explicit) { + fprintf(stderr, + "%s space leaked at the end of the image %" PRId64 "\n", + fix & BDRV_FIX_LEAKS ? "Repairing" : "ERROR", + size - res->image_end_offset); + res->leaks += count; + } if (fix & BDRV_FIX_LEAKS) { Error *local_err = NULL; @@ -517,7 +520,9 @@ parallels_check_leak(BlockDriverState *bs, BdrvCheckResult *res, res->check_errors++; return ret; } - res->leaks_fixed += count; + if (explicit) { + res->leaks_fixed += count; + } } } @@ -570,7 +575,7 @@ parallels_co_check(BlockDriverState *bs, BdrvCheckResult *res, return ret; } - ret = parallels_check_leak(bs, res, fix); + ret = parallels_check_leak(bs, res, fix, true); if (ret < 0) { return ret; } From patchwork Sat Jul 1 10:07:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Ivanov X-Patchwork-Id: 1802224 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=PA2Avz4y; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QtSc50ZLpz20ZQ for ; Sat, 1 Jul 2023 20:10:13 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qFXWe-0001aR-Jo; Sat, 01 Jul 2023 06:08:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWc-0001YL-Ij; Sat, 01 Jul 2023 06:08:18 -0400 Received: from mail-db3eur04on071e.outbound.protection.outlook.com ([2a01:111:f400:fe0c::71e] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWb-00076K-4y; Sat, 01 Jul 2023 06:08:18 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JsiSllcvqcK5dtYMgdZIgh15i0DX/H5BgpSOs3m/CrxnEGb4F8Tp+kNeSt38if4It24u1Tt8mnyfsZGgJTLrxqIQ4wHKgzbgHKsty7FkeozV+YhD4G1crAqhQBzjPqEB5ZEIhnULSIOCO/HTreWOsCl7jl5kDMkj5OlcjNr9fBgOeeH+8H9vktrzWJ4Mf1u1A0hGxU67SLLdeB7/xhHRnjeNZJ0VVxzq1c2UeQUiueatKDq1r8rGYruK/pdjMyxjukVHZeZa+Hl1VCPB53nvSsf0WQoClOC6hbCrWhdpg7vhyC4uDITkqqJxuGyR/77gDxHVF4Fyqlq090bZSR5/ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=YiCjSh44KAFGkdhWDPs9WkYqKHVrJ/JeEMCzqN6s+hI=; b=ixPTMz87eEb2d539Y20a8gP2rOsCqKffQb/10657BIIgWI0RKRK8JG34xLFLWyCwhnZtHroHPYGwGjframTJlxRTnGjX90Gr9OP7mmtr6cuEMDclpdTAQiZqHhcrIt0jAnTQC30974/Dl0lQXNgLzQlPbKtFTYUiahutd/1YwDBTJk7cUGEpaBkX47dxUUuVw/9xl6lCAqCLcsbfjV+9b7cxKCODDvo1HJDcV8pvmrfyoV/fQLIYvBroU0dZDG7cwHbNYK1sJV4z+ugYanGNSJ2GLD+4cvohfmGzlSQl+/Ar0z5WUbUW/I1gQ9eiO4H7px/Fis+lZxj2jJfQ/YIMUw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YiCjSh44KAFGkdhWDPs9WkYqKHVrJ/JeEMCzqN6s+hI=; b=PA2Avz4yGLMWfUoIEQNqIuBKIBisstRv4iH62Gqehr6WezL1v+DZX2wXKOuzR4OFV/T/U0G22dOZw6+XNexQFyPzH9r8OqBcwjdlyYHxS94oAuaqDOpRFLNeXt8kPt+jOwSnjuEHCkbQbSHQkg1QbyueNFzs5l/QesJQqj8s6Sur1jSUmJRzhuH6USPX0l945pOyB6cGDpH3MaD75JrysF3Bo1Fh1aveMFJudsvSAhyiPEM6QlxTeh+FJUi6nHG91aNuYSegiYl9ndiYDlaHbO6mFUvsGKqzdcKasdYNFOTW8dztj/niHIEZ6LsAAs+iYGDGLPY+z5CDe25ahJV5rg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by AS2PR08MB8832.eurprd08.prod.outlook.com (2603:10a6:20b:5e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Sat, 1 Jul 2023 10:08:08 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6544.024; Sat, 1 Jul 2023 10:08:08 +0000 From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v7 4/8] parallels: Add data_start field to BDRVParallelsState Date: Sat, 1 Jul 2023 12:07:55 +0200 Message-Id: <20230701100759.261007-5-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> References: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> X-ClientProxiedBy: VI1PR10CA0108.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::37) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|AS2PR08MB8832:EE_ X-MS-Office365-Filtering-Correlation-Id: 82d49de7-9c33-4c6d-83e1-08db7a1b11f7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Q1I/UEhOX758WCvN+n2kSzXgtdmUzXviE16FXxUcdUICAht6namOdm1NCjIvXcOHs2/6OBc2BUFEq4b12ebcNNzJQJDk0NJH785HKmoID0/pglqFs4wPrB98ogxAd63QZ8FYBz6Bnq809JJbY76bBe8UxflKC87A32G/GdtXjG17W5yCgSYem/N3Wd45fN9csUgyYj1T4L+f3LikhyGaagdqY/Y9d0m4jHNKPnzpwvK5b5eMOcYyY0dGImwouaU7BnC6xVx/lKxZTlrNQ0uzK10hiao1/jqfDBSfeluShbsve7QcwpWjn3aKZXQsxc8U3z9ZkNY03zIzMNowCYFdLnW6EBuXZ/WIJjsx6S/DvNQBjqoQ9now/91h23J3sCys1Egh4LW6F1HqW1tzSDQebUcSBRMpQ7p9OUW34XpPx2nfFQLrIooYgARRvsX3ae0getXaN5rZzVG2/OXfVglXH6VsBIDy2hfZXWrFD9vY+myHHKn8KsezaN3hLBvyoa52ZiuxiJtkh4cyfhtBL5YbvPqWZGnJ2mZlNikh9iaqhgfwoI8TBakkyamTbO48cvA014yazOCGUa2vUGxwA7VwcNF6/MCS8qnzBkXX2JGUHOgLzMmhgoqPhjJ6IZAYcwni X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(346002)(376002)(39850400004)(396003)(366004)(451199021)(26005)(478600001)(1076003)(6666004)(6506007)(6512007)(86362001)(2616005)(186003)(38350700002)(38100700002)(6916009)(66556008)(66946007)(4326008)(66476007)(83380400001)(52116002)(6486002)(316002)(5660300002)(8676002)(8936002)(44832011)(41300700001)(2906002)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: x01nb3D5nGfXjYskX6S90I1SmhCwEAp7HC/HR3zvYw5DVqIrmLt8qcD8GZMbyRaCSiupUv7hAXMGGu8V24f1B31xoX3zUqIpteXRLnpmfK44qPA4Ut/P8QazAreHoWzsLnBS+Lr9ukHRC7rc6yE9FKh6Rhg5tilcnj5NALtpyB67MnWDqjiw0EAi220/D7JhzNp/OedzsMnZtz5k5edWucklmQiAt0Fy6oplWQcxCVhtGLeAlN+EpmJY9B1HDPjC+7Ia3+Oyjc+DJVduDiJhJuXcASQw3L8PRaxjMbmGY56AhNT0wPQM2nJUvaxt4URNooe+gKIt4jAV5eIxEWfnOjY0kXkRiT/dc2CsCoWHiA1n6f6+xjPQ6qV33oMJxnlIcogu5NEW7SX4mR2Ob1xKprAP3lg6ExIIMgarUS/I9QPcPSbvWL7FYOryvIo1r7P5LJXoY1YRqUGX3VOUv422E1A9BfQMZ/dHtnHTe/hT8ypufVr3f8NAft8l7GIMasM8H1Mv8b2xELbSyLcim/ZhvcyXVn9X7zpFbKyHvULcc6v3ceq4CwyGehfhfGzJd8kW8T8J59anKQeBcTcyiM0Q9dEz5mlgxs3Gke6fBo7z9TYR5cVf1t9diU5zP+fNpUZZZwHNlehfDfHOWtSdgYr4mVVrUbUaWswmuL/WSZ+An1+YU0RooQpTSP4pkoA4zkvQ5KEFWkugH2NGGl0S4wCQfIDnvADlVu7hP0Rf8MurxRAS381rbjUHtI2mUoi3s/hXq5hra5jmeL4p1DMZtLCqv89epXFW/bKmsrKdz2COUALUbHZhEhI0I9mXrnkNF+42rSZdn7KSs9qGav5/0TuvOOVxcL1ps9SWFXkD73TB6WXbqOqhLg+5j/VT20/7b+YTGGjGZliBxtCmZ6AnGFu+cEUMnAbridZ3CnBQA/xGT4m6mH6Zh4t7VORM3mHQXf6YMsirDI5tPpdrVCzeegYopCvdAe49N2QWdReBeeC+/86LANB/3OvaJiqPogR5RuDqciyisiScJnpklIMGfJJK/BHYXOuTOnmZFbyQ+GtuxUgg/FuMiRkQLo+tHqaUoGLWktKaCRJQA0DCw7NbpeIli6LxkjfW2UDJn2OGWLtPFLDLpkXIylWmE8xfgX/O1KofaKgo4MyNKjNswYedyzmbALCfHqM9YeGZce8HWXweDvCXSI8mKc7+QStmyCgd4+NFIrDEte8Krqg3wIyRIAQkvtvi5Xivn3so9/JwXAKL4Wny6nJpwTctZLZhxXjrfIkdEVZg9mzca55+Dp/Gt/Q+zg6ffc/Kevm/PMTjefeCkhz3Mdb1FHcyjuRc4NxX1VlOTCTTb5nA3JZ7i+28ounQnRKbF5n7B5aMdTG4wqec7qSTcDv8g9XZn3aTCpN3VK9FDlDCpuV0fmlkl+kWeYcM1jAY3C2ZprUxSaRaGQwxSNejF1UBjuXAer1UslRGyJdutgCWGiiIn7AjIM8jwt4pi8NBUUuqisA/R2b/MnEGKzfAAUCBx9JC1Kt4cHLbFscEJUffg8Ren2y/Hps90dBvK+deluQT3D108YaOf7a7TfmQtClaP4I+oAYKcOT6uxgEFJgRxLOUcJ/W8GqEvZmr3WgpqudVRLfrRkQVv11xkJw= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82d49de7-9c33-4c6d-83e1-08db7a1b11f7 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2023 10:08:08.8261 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: l1EconiTzdGQ5VwiYTZpVSMy4kjotCpYtnAjdGbLkDSN7xzqBjwGpYLPE/9fsx5x1TZfIfNpF4OHYbis3m+CRwy6CfeRxzjU9FKUsgvwTQ4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8832 Received-SPF: pass client-ip=2a01:111:f400:fe0c::71e; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org In the next patch we will need the offset of the data area for host cluster index calculation. Add this field and setting up code. Signed-off-by: Alexander Ivanov Reviewed-by: Denis V. Lunev --- block/parallels.c | 7 ++++--- block/parallels.h | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 3cff25e3a4..374c9d17eb 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -864,10 +864,11 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, ret = -ENOMEM; goto fail; } - s->data_end = le32_to_cpu(ph.data_off); - if (s->data_end == 0) { - s->data_end = DIV_ROUND_UP(size, BDRV_SECTOR_SIZE); + s->data_start = le32_to_cpu(ph.data_off); + if (s->data_start == 0) { + s->data_start = DIV_ROUND_UP(size, BDRV_SECTOR_SIZE); } + s->data_end = s->data_start; if (s->data_end < (s->header_size >> BDRV_SECTOR_BITS)) { /* there is not enough unused space to fit to block align between BAT and actual data. We can't avoid read-modify-write... */ diff --git a/block/parallels.h b/block/parallels.h index f22f43f988..4e53e9572d 100644 --- a/block/parallels.h +++ b/block/parallels.h @@ -75,6 +75,7 @@ typedef struct BDRVParallelsState { uint32_t *bat_bitmap; unsigned int bat_size; + int64_t data_start; int64_t data_end; uint64_t prealloc_size; ParallelsPreallocMode prealloc_mode; From patchwork Sat Jul 1 10:07:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Ivanov X-Patchwork-Id: 1802222 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=dscgwGu3; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QtSbL0tYQz20ZC for ; Sat, 1 Jul 2023 20:09:34 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qFXWg-0001bH-2c; Sat, 01 Jul 2023 06:08:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWe-0001aE-E2; Sat, 01 Jul 2023 06:08:20 -0400 Received: from mail-db5eur02on20710.outbound.protection.outlook.com ([2a01:111:f400:fe12::710] helo=EUR02-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWc-00076b-Lq; Sat, 01 Jul 2023 06:08:20 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bLw5MRkan4czi4GaFSLIb5wm6SVJqSBMxe+Cs3fGVnSf7SsHINyZtYzoxplYcx66Zh1R8mUevmXiiIF6a343sUjw5X4qveSF71HtDyK5PqOy9pgoorQVEkwJ1bccgrNJEJMoCVJnZKp3n/YYcuIxGBhxtPxk056u6lUzSWmZ6TU6JwWkPEjUAFy+Rkxwz1L5dPihQnQRTl4VvjPljJnpUw8asIiyk/WqQQhmWYwfRkyP9k/nVhruyN0V7p5tP0B7FWkg0lK/Ty1MzQdG9u42qSAFs/0riMlq/eQGfo/jnTHq/Ctou5qaOYWK3vH+sY1F45upyaFoVJbna1XFmE62MQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=eAqaascQH9M/pNRP+aybKI2JegEv7iKFNQOBciZfauE=; b=ag5wL6NPauTmiHqG4fwx8fHrei8BB71ovR+pEQ5LlzGge9KPjd9dQMJrGkW2Js9J1AnfjoBOeKxY9oFQeRm8HsA60IUADGinh3vaOFGEjbdnbGb7v3qO4MeDrhMrMoP/s/XcdE2ANSue2HR9Hr3i1YPtFA+eLgbrlJQAivJju1dDsonHHfx7jvhZK8zipsFeKN3ZPt5NjW/OPyYgzvDZTOWPArc5PaIO3txEFIMvK5I52955L9N+mJGO21fBtdN6NtgFJTujV0wRNs69lIYemjZlSWkw28frPa9lByx8mjGpcK6QweXxVxEvQJ75lxx3PppXXk5rSlm9qsO3f4/TxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eAqaascQH9M/pNRP+aybKI2JegEv7iKFNQOBciZfauE=; b=dscgwGu31EeL+1YSqmsoLlSRo8A1Azj9qtButjIKv/wxzWq1L7c/AobI72OS6Z1zBMyMKGCijjIh8PhaxbxGNasFlVl8F+sSmstIu+a5ohWHreEWVLyz9K6SlvFjpmDJVMtYwqGUTxdrIbqdihcaBiOUl59Waf9rZA/ETjazgFxyJp2IXaYII8qqAjGtMKFaa8c/qNgpzLii3GTW8B88R19O5fyBMeHNsnjpgCFo8XSyhLZSz9g4zZlbTlLRbzPhWtZke8+RImG5r9IzLp1YkDDhQPZhE8z6G+J16HRZRZ0Oru0DWCCButkmaBAmZPY+tndd/cG3jqpe89jpOAb3Og== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by AS2PR08MB8832.eurprd08.prod.outlook.com (2603:10a6:20b:5e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Sat, 1 Jul 2023 10:08:09 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6544.024; Sat, 1 Jul 2023 10:08:09 +0000 From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v7 5/8] parallels: Add checking and repairing duplicate offsets in BAT Date: Sat, 1 Jul 2023 12:07:56 +0200 Message-Id: <20230701100759.261007-6-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> References: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> X-ClientProxiedBy: VI1PR10CA0108.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::37) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|AS2PR08MB8832:EE_ X-MS-Office365-Filtering-Correlation-Id: 0eea9a5a-8a36-49fc-f404-08db7a1b124a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /ZOHxD/89VI16LR2Cb3lQ156ibzK6QIa80glk4AT34dSBLtGfqPdWZ1vJIH+tfjYaRtihUpniuvUbD4bcD4b7fYeAKA1YRN0itQTtRPqg/r4wt/SzJftmroMKAnAXEFSVPp7IJnF4VVovSHwWuNuPrxVqwWig9PL2EoEZc4mWO19iSkM2lUDNU7Z2L4NFnHr2apvTzSNmWhey/NWEIIV72zY5f8DXA1XuWRAtqelsLjYSxeuSEIcEzrA1055oH/Ptnf0OyI8wadl0elMYKn41+WO4kdjqxVXz0SCvp3x7wnvV3CWdmQHtn5XF/lOzuaFdnyFCnxcdJOK/2AsZc0cCQdUK2R2gU3ZB1IzXkwMojoVcYYvJzgBp30o7LKuRfNsjovbsSf16HVmeGIdw3KwsSTx7fL/ybLorwDs4ovposj6wfz7XqOqjDOD2U5GqcxZH+vLq8Q7RqxFItyycdDjdYSVZztsWjAL4pNwsvE2KlSbxIZ/Ylq6DNwxYp15309rs7Oe/f8RdGif4+guMYZEsjX/iJz6KVWcm8TyZS0xHpAzBucV4FflS3v8ltSGw54miNwHPnJs33SQJqTbWOwNMQCh0bFs4iloY14qWnvuAEGD7wyfY+4rdW1u6SNQk5pq X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(346002)(376002)(39850400004)(396003)(366004)(451199021)(26005)(478600001)(1076003)(6666004)(6506007)(6512007)(86362001)(2616005)(186003)(38350700002)(38100700002)(6916009)(66556008)(66946007)(4326008)(66476007)(83380400001)(52116002)(6486002)(316002)(5660300002)(8676002)(8936002)(44832011)(41300700001)(2906002)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1TAR/bgYVtm4UySH71RxEp6QpKhuRu4ulzySN8mGOPQ4dzTtBYBOUovhpU81myvM+9ETSKTm0SsPhnOn4yrEk7B6ZsREXOiE9W6sEYli5gPoyoB2WWOlbixNLB9+T+Q3uxMEe6D+ILcGHNSbo8T9ISg91eG4gDzeSUFSdhmUg7dAEK7QHR3hCAdglmX7grwu+F2lgo+xupJmwHaFCkMjneSCAMUoQ6DOzkhMLWwoFznNKb4yC/n4QS2WY5BV7MfQ+6twW6ylBOz/5yq8+YfvYvKPxTooSOkZOPajFZMn3IASK7L1Om9/ch5NehzwKq3OfV+qPkJ/yBbtThXWjBqPvV+Js7lekjXqK28lk03pzPVx+OHyFWCfAgxUZzkMBlRYD/cRWMsFQCDprmOhjMmpTyQuXi6f9yPniSPvxZvQwLiJKcuF2eYXc/dozxAtqZDnq87ROZHt5NoGPD6ALnjOpxh3hNnKqqTw/VmuDqJJ8BdaXbss/6Rzuhnu4xmvKDA7x63BwPPOxmLvGSEmFLZG8121PhtGXl9ArWIBtgLxW8TlL5ULikPAfxIhcNKjxJiXZSRGGr7NZOs0qgEs9dQtx2btpbbBGV5SG85Rn49Y/xRo55g4JCX2m1iNR7jDaDducX5b+lupJ6DYJPUbJjMHF7jSy1ebCwubAxCIhBvfipLcGdnnAOmIhJfPtvfhVs+ErHJ/vC+62MSthTO/HkR33CayLhdJPI1OqsKOdnQcnSrzzZzo9TYnFQn084LKDHoq0GDVJUQilzTLzpXNjeaGuX9tYnnb0vb4P2QubbWT2xRGNDxT6hkvvNZ2F83V//PBEXqkfogUGPGDEggnYEvQcH3F//eNXPhyRDuwX+tmk9PaKBxq5fUU9pZVzgWqUZFIeV+CC6gfm4coWX1+9ZLchHKf/zuPY0DykLH/GU8cRZxRwDSHVn/4ZClHW59lnVOwwVhN4iGXrr8Vq5x0x2K60rw+89Z9MJ0kfS4oZ4XsydUKKakmv4wAsHc6oSPUOcKoAnAM+/Brp4++b9SJfIW0ys4rqYQWlRd1CAvD8JLulNYPAtHyctOqNy8Zy/lM6zmA4WzY054ri+d3DDjH5wlZlckaotcJFJK3b7ra4BPH9ySQnLOQMDaYosicbmYWCc0zQMTaiKsODt5zLVtOPu+rbYfn2v5J0lXZVc5TcaSAzkcp+jIRea70qb4eDma1++GwxZDFEX8QYIBVZK6wqkvZPEc09DkBemQk2jciJe3aOb90arRgyvERMiflasqtRUinDZlVJ9x3Gg1Em3CBAUcx4hYeEgJI7A7UmsFjcVFyIWdQZIkX0gIrHpw3N45fXeor/brT8yZmAeHK0wvmffLvj+8o9ACVi8PPYth5N9eBwXJvBUx4IMY/vPlVDHmDuQ/JbzsYaZjN2OiULMlEHGXXEj1h6MxlI9GYd8dzfPIUJmD48n/C+7eSSNJOMvd2sFV+o0bLSSsZfDMMFzROZFNzxG+0Dv/JtsGeV7Na/vFaoUQxEVk+Y8DsjMOn+WABJjrjSu8yHP3mAHLyX2iMauMzvi4D++n0KJrPATWlJ2GaAtO7EOTThxDZ8btu9BsMKGKUHmOAOgHmDYS9oe3+I4kmTrbWokBxEu9NSWAHN83a1Bs= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0eea9a5a-8a36-49fc-f404-08db7a1b124a X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2023 10:08:09.3529 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pSp8Es8N3iqekwNhBq0vJJXcuYAKfEoLk7kv1ztxBRYAL4TRafRKY7lou6V8lORK4nDASGJpLznXJKgnLk8mowZuo7Jv8T6hEqBrmxiN0hY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8832 Received-SPF: pass client-ip=2a01:111:f400:fe12::710; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR02-DB5-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Cluster offsets must be unique among all the BAT entries. Find duplicate offsets in the BAT and fix it by copying the content of the relevant cluster to a newly allocated cluster and set the new cluster offset to the duplicated entry. Add host_cluster_index() helper to deduplicate the code. When new clusters are allocated, the file size increases by 128 Mb. Call parallels_check_leak() to fix this leak. Signed-off-by: Alexander Ivanov Reviewed-by: Denis V. Lunev --- block/parallels.c | 144 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) diff --git a/block/parallels.c b/block/parallels.c index 374c9d17eb..0f207c4b32 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -136,6 +136,12 @@ static int cluster_remainder(BDRVParallelsState *s, int64_t sector_num, return MIN(nb_sectors, ret); } +static uint32_t host_cluster_index(BDRVParallelsState *s, int64_t off) +{ + off -= s->data_start << BDRV_SECTOR_BITS; + return off / s->cluster_size; +} + static int64_t block_status(BDRVParallelsState *s, int64_t sector_num, int nb_sectors, int *pnum) { @@ -529,6 +535,139 @@ parallels_check_leak(BlockDriverState *bs, BdrvCheckResult *res, return 0; } +static int coroutine_fn GRAPH_RDLOCK +parallels_check_duplicate(BlockDriverState *bs, BdrvCheckResult *res, + BdrvCheckMode fix) +{ + BDRVParallelsState *s = bs->opaque; + int64_t host_off, host_sector, guest_sector; + unsigned long *bitmap; + uint32_t i, bitmap_size, cluster_index, bat_entry; + int n, ret = 0; + uint64_t *buf = NULL; + bool fixed = false; + + /* + * Create a bitmap of used clusters. + * If a bit is set, there is a BAT entry pointing to this cluster. + * Loop through the BAT entries, check bits relevant to an entry offset. + * If bit is set, this entry is duplicated. Otherwise set the bit. + * + * We shouldn't worry about newly allocated clusters outside the image + * because they are created higher then any existing cluster pointed by + * a BAT entry. + */ + bitmap_size = host_cluster_index(s, res->image_end_offset); + if (bitmap_size == 0) { + return 0; + } + if (res->image_end_offset % s->cluster_size) { + /* A not aligned image end leads to a bitmap shorter by 1 */ + bitmap_size++; + } + + bitmap = bitmap_new(bitmap_size); + + buf = qemu_blockalign(bs, s->cluster_size); + + for (i = 0; i < s->bat_size; i++) { + host_off = bat2sect(s, i) << BDRV_SECTOR_BITS; + if (host_off == 0) { + continue; + } + + cluster_index = host_cluster_index(s, host_off); + assert(cluster_index < bitmap_size); + if (!test_bit(cluster_index, bitmap)) { + bitmap_set(bitmap, cluster_index, 1); + continue; + } + + /* this cluster duplicates another one */ + fprintf(stderr, "%s duplicate offset in BAT entry %u\n", + fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR", i); + + res->corruptions++; + + if (!(fix & BDRV_FIX_ERRORS)) { + continue; + } + + /* + * Reset the entry and allocate a new cluster + * for the relevant guest offset. In this way we let + * the lower layer to place the new cluster properly. + * Copy the original cluster to the allocated one. + * But before save the old offset value for repairing + * if we have an error. + */ + bat_entry = s->bat_bitmap[i]; + parallels_set_bat_entry(s, i, 0); + + ret = bdrv_co_pread(bs->file, host_off, s->cluster_size, buf, 0); + if (ret < 0) { + res->check_errors++; + goto out_repare_bat; + } + + guest_sector = (i * (int64_t)s->cluster_size) >> BDRV_SECTOR_BITS; + host_sector = allocate_clusters(bs, guest_sector, s->tracks, &n); + if (host_sector < 0) { + res->check_errors++; + goto out_repare_bat; + } + host_off = host_sector << BDRV_SECTOR_BITS; + + ret = bdrv_co_pwrite(bs->file, host_off, s->cluster_size, buf, 0); + if (ret < 0) { + res->check_errors++; + goto out_repare_bat; + } + + if (host_off + s->cluster_size > res->image_end_offset) { + res->image_end_offset = host_off + s->cluster_size; + } + + /* + * In the future allocate_cluster() will reuse holed offsets + * inside the image. Keep the used clusters bitmap content + * consistent for the new allocated clusters too. + * + * Note, clusters allocated outside the current image are not + * considered, and the bitmap size doesn't change. + */ + cluster_index = host_cluster_index(s, host_off); + if (cluster_index < bitmap_size) { + bitmap_set(bitmap, cluster_index, 1); + } + + fixed = true; + res->corruptions_fixed++; + + } + + if (fixed) { + /* + * When new clusters are allocated, the file size increases by + * 128 Mb. We need to truncate the file to the right size. Let + * the leak fix code make its job without res changing. + */ + ret = parallels_check_leak(bs, res, fix, false); + } + +out_free: + g_free(buf); + g_free(bitmap); + return ret; +/* + * We can get here only from places where index and old_offset have + * meaningful values. + */ +out_repare_bat: + s->bat_bitmap[i] = bat_entry; + goto out_free; +} + static void parallels_collect_statistics(BlockDriverState *bs, BdrvCheckResult *res, BdrvCheckMode fix) @@ -580,6 +719,11 @@ parallels_co_check(BlockDriverState *bs, BdrvCheckResult *res, return ret; } + ret = parallels_check_duplicate(bs, res, fix); + if (ret < 0) { + return ret; + } + parallels_collect_statistics(bs, res, fix); } From patchwork Sat Jul 1 10:07:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Ivanov X-Patchwork-Id: 1802225 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=lQ2kg5qL; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QtSc85FQMz20ZQ for ; Sat, 1 Jul 2023 20:10:16 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qFXWh-0001cH-70; Sat, 01 Jul 2023 06:08:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWe-0001ac-RY; Sat, 01 Jul 2023 06:08:20 -0400 Received: from mail-db3eur04on071e.outbound.protection.outlook.com ([2a01:111:f400:fe0c::71e] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWd-00076K-4d; Sat, 01 Jul 2023 06:08:20 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=isVBw38ihEsoSb6DiVJyfdeudfe6drVhkBfdOAmeD4E4DwTWOL/44ay4n9/RkfcpeecrctIiz6kGXwWrZJa1eQsWYzL4a0Ah73tsRS7SRe20LFZkZ5sMzYO9zLZXjeOooPOYlDhjnMqG0+jZEE1LoWkIJpMdjWjffDi0jNOxhA3XD/Px46/u0FhXzKIPBhZkiP26gHH9pMNi2EaGsRLw5c9OaHqwkSrNSs7K1O+d+czQzFch6W4jVrnDuu/DvUE7lsTx1wYaeBTonnqn4grMmbTeccMrWunoevCFT2vARTrbn/OoiOLuRasWQo8p0YixeYy0I0Dz2bVDemnXlBP9RQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=U3BcdPQNdG3Nb34lNGe7htFHPepO6EN9GIGkGd7p1KE=; b=m86HnZvQPrzUdkGEDEL8bddQa4o9h0otFRjgBbbA9nDtq8JkGPGbpAVggord5utFSPGqtjbEShHGT1YW5q2MFD0H9tAzVgn+z8ftJ5OI+M7l5OeZAvJhtJ44VNOG0Al+mN9VosJ2lXm4gqyv0RFQe0S+nzYO8Dvsu93/r0PylvphaV3O0YJRdNe9cyXIrFdf5I5YufPFXp6Ju4+R9C8Hwi2Qn9ozgk/hD7aXTN3cervgrBqcfMJOqwSXMo94PR7DjZnf+lx2yw42mcTfeRlejzzWnbKUVusx2p389QkEa7wck0A/90Tt6gvbFCUaU/yLejYNT1J+Cb6MaiG0sai6mA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=U3BcdPQNdG3Nb34lNGe7htFHPepO6EN9GIGkGd7p1KE=; b=lQ2kg5qL9IWV3UwiDergzrUi+fd4qlTd40eG55GNGH4y/bgkD4Cr8cLVWSQp9tyN9qkVKfJnedvUFfCAZ/oXgpahyJqCE3wy0bAH8kbwBV+C6zm5eRlm3KW9cozvb1pFs+W9jEkEBbad9e1sB3YpgAkVNtQob9fWTaHzoKwHRKn+Qpqah9sgwQkO5ij2fESP+BbP1s68lXvAksxRCjc4VR1DO6eZ+UvasgNVAF2RHjtn3j8HEtEjODgCvivpEmESK2XaSf27UIfaPT/IXVanaKFZzbnjWkFTK/jHAM6QGm8q1WuBgjNaIL/VUB6NEFuYYF6icEAX59PRAzCq6yQHCA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by AS2PR08MB8832.eurprd08.prod.outlook.com (2603:10a6:20b:5e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Sat, 1 Jul 2023 10:08:10 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6544.024; Sat, 1 Jul 2023 10:08:10 +0000 From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v7 6/8] parallels: Image repairing in parallels_open() Date: Sat, 1 Jul 2023 12:07:57 +0200 Message-Id: <20230701100759.261007-7-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> References: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> X-ClientProxiedBy: VI1PR10CA0108.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::37) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|AS2PR08MB8832:EE_ X-MS-Office365-Filtering-Correlation-Id: b7758162-0668-4287-9ee7-08db7a1b1299 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: enOXJlISMhRh8RT5DCmy4ux+zq/OULtzCm3UBA4FoWSyezck5dzoQDDGc/GoW4+MZ/oTrvoPKGJaWE2nebxnXE6Dpg+tAsCGgsj4pO3nVyRIFWuCA42E6biqh1ImyvftBHrW2c4PCGPkm/sH1/YiirbzQ85DVtENzfSnEOIXp+Tz5b3jMfs9oGBbpTHT4CeKOrIyLSNJwwKHkzEivr0h2Nw34XNW/hSiIyPYLz88ijlkLDpO+sJceBXdjnJKmV8bmY3fr3y1UdZEO+gYmAnF4aX7XhpkctJfGgnwQT4mjcbn+rKyj2cWZb2EXl/kX7HfOA5ZEeyJgzF32QE6oramoNoe0qGLpzOaDvnGrWWfV3zhiJ87gyXmX1oegfuL+OhF5x8OGQ2DfoAECTp1hYcR0/xTiY7yFhTlyCXeV2+yOqPyKVens/QJQ/ybf2VRqQv2as4XfQs8rwcopyPVg0JwJLdCRLELjNuaEwvLa3+EnobwUm/6JT8lWaHpd9W83wbm5eo2VHMbTluFRylm4Ghv+638prUvP3/6Vj9WL9VpPpAayngCVWYj0y47fDAbDLOdELyJHla4naNMiCI+a8kNCXtIREujVHqe1hcvR6i071FsL9QUXr+9WT0bMY7ixcsn X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(346002)(376002)(39850400004)(396003)(366004)(451199021)(26005)(478600001)(1076003)(6666004)(6506007)(6512007)(86362001)(2616005)(186003)(38350700002)(38100700002)(6916009)(66556008)(66946007)(4326008)(66476007)(83380400001)(52116002)(6486002)(316002)(5660300002)(8676002)(8936002)(44832011)(41300700001)(2906002)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Cb2MtzPnAa9O5UUWZJ1Ah6jsEhJv3PNk0ZVUCamTGq+qcflNwRx6ge4L8UNbtu3oNV78x/ej6Rh6tz54HaXwDFSdH1I3wYWFkAPu11nLTyXcp6mekgZqg1R5tDnIOkQFNRXg0K27u9ek5SFYY2soB4eXpAr8NlKKKv1xQPrGWvaP5e99CF9NCisJvPY8c3sz8DqV4/5JoTabN9OnJ42inpC+tOYf6lPP4BoaelrYxhzXiMoCj88/OozMU3ijq+hyJwTBpnTGZadaD8NEK7T9xg9R+6QatDttwC2DnqQ9A/8ca7xlM8dm+X5HcKPZRhGLs112a0oDLR0eAO6lk/sH6ahd+qPyzWL9HC9WXr3EEYV2NIxLTQEcRS7HjwcZYO2iOqhyFM36jt3LhzQ9AcczWbZj3pL/CVRrcLOQTC+IPl8LejhY+X1rMXh/QNbNztxGOxGE2/cXkCKucZHfnmx93SlFGaqRf3IwCNOGB3koi0nLhf3Vu3WYmCpymg+LaDWMzfcRFVcMHy+/KFWOFDVOt9+H8HcMr/bHi0Up0q3k+AhoH0o/dTweXJmYi3+BKNqdboG7XjSj6uIhn6MOxTHhKRT+aDPHmSVX+p/0VXI5KtRlzgMOPT36iIB5LP3bFcfR04zALAAurdc86MKkFHTRtQ8QcQvdTFQCVSu+qw+EPPzsWzO54xLq4fJ74tWzn/ydODkGr3MElxuayh77sBnx5LR6OUZPQIckmI7klb1xsZlTD7Msm8gNzusCQPX82scV77nOSQKchUK/6XX+U54BRWMOFD/ukBb1UdoJnz6PLh0gvT+V/e3SGig8PribI142Rsa9FZ4Gr08mVaRdL8ppQZhwExf15T6Jn+0NMfwtT2pkCnJcgjs15F/v6YhDMSMuaBfSQXb5+dL6taLSOxQSwl/rn/NrfTzhpvPk2uDJBdy5sJk8xhooEqlho2skkpZ8ttjS5TJqBX6uKimBLSnyD9v9qLdEYUzvWBcukrHEeWAnSflMm4zbQ0XzFWWzR7F/bT2M4CH2/795gKfGkP0qPmq2iTZMC16L3nGdbTavha01rinrKmymWEiFTNWCU1dl/sfPdmsMaPqXNxoBy7s8B772qmdDXvlNP/DdE1B96Jf8EBNYV2CHw2DsdlmU1JzyFyW+5wM5T7ShLOSJYeGIf+FmngaRvEe166y3/OLtbhZ5b/KvQYsW5B/pveZbx60ngLfg/9YFSndNGcjkJnIAzOCwAuICcBdH/Dm5WYKhZvqeQB1OJyCiVK3lK/ZpCaIgia8Nac3KwjQFEl6mT5EGD1dVTfPLD2dLE6ag923tQ5WkcJGD0rTRobtCRaR1c7/aobkLUVUzZBH+qO/xv44NyOyxko+xmi1Ig8PqrxB+LSyqbfvsxY6vrRqBOV0LDjnLfo/4tTGF9+plNoWhq8nwfLVXTOUtkz/H1Xvr/69dKfpnuntRCSZoelv42xDeIPeTkVoT8XP0O821snt0lIjPKaLfakIvLBUbxdwNerjDLfr+2u4QIiVahtAr8iLLnZ+yvaBLfy4UVxXkd4JMtqrt3PQiAmkIu1YBAX+66cP8l3ABWe/0xgdSYtJMj0+It+qZcg1oaqJKgIApvItbi3vrv4wbhnMB/emte/SXLDq1FHQ= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: b7758162-0668-4287-9ee7-08db7a1b1299 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2023 10:08:09.9568 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: InTQu6SLibfMZbnOWENouaqbq17fQH9w5MyG4H4PB2KXUhYPKuejYJcKmVVwt0PKXx1IYiasUr+Tug4Ip019CH8eAX9p43Eb0w/e+2C+wyY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8832 Received-SPF: pass client-ip=2a01:111:f400:fe0c::71e; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Repair an image at opening if the image is unclean or out-of-image corruption was detected. Signed-off-by: Alexander Ivanov Reviewed-by: Denis V. Lunev --- block/parallels.c | 70 +++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 0f207c4b32..51fd8ddf5a 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -947,7 +947,7 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, BDRVParallelsState *s = bs->opaque; ParallelsHeader ph; int ret, size, i; - int64_t file_nb_sectors; + int64_t file_nb_sectors, sector; QemuOpts *opts = NULL; Error *local_err = NULL; char *buf; @@ -1018,11 +1018,6 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, and actual data. We can't avoid read-modify-write... */ s->header_size = size; } - if (s->data_end > file_nb_sectors) { - error_setg(errp, "Invalid image: incorrect data_off field"); - ret = -EINVAL; - goto fail; - } ret = bdrv_pread(bs->file, 0, s->header_size, s->header, 0); if (ret < 0) { @@ -1030,33 +1025,8 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, } s->bat_bitmap = (uint32_t *)(s->header + 1); - for (i = 0; i < s->bat_size; i++) { - int64_t off = bat2sect(s, i); - if (off >= file_nb_sectors) { - if (flags & BDRV_O_CHECK) { - continue; - } - error_setg(errp, "parallels: Offset %" PRIi64 " in BAT[%d] entry " - "is larger than file size (%" PRIi64 ")", - off << BDRV_SECTOR_BITS, i, - file_nb_sectors << BDRV_SECTOR_BITS); - ret = -EINVAL; - goto fail; - } - if (off >= s->data_end) { - s->data_end = off + s->tracks; - } - } - if (le32_to_cpu(ph.inuse) == HEADER_INUSE_MAGIC) { - /* Image was not closed correctly. The check is mandatory */ s->header_unclean = true; - if ((flags & BDRV_O_RDWR) && !(flags & BDRV_O_CHECK)) { - error_setg(errp, "parallels: Image was not closed correctly; " - "cannot be opened read/write"); - ret = -EACCES; - goto fail; - } } opts = qemu_opts_create(¶llels_runtime_opts, NULL, 0, errp); @@ -1117,10 +1087,40 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, bdrv_get_device_or_node_name(bs)); ret = migrate_add_blocker(s->migration_blocker, errp); if (ret < 0) { - error_free(s->migration_blocker); + error_setg(errp, "Migration blocker error"); goto fail; } qemu_co_mutex_init(&s->lock); + + for (i = 0; i < s->bat_size; i++) { + sector = bat2sect(s, i); + if (sector + s->tracks > s->data_end) { + s->data_end = sector + s->tracks; + } + } + + /* + * We don't repair the image here if it's opened for checks. Also we don't + * want to change inactive images and can't change readonly images. + */ + if ((flags & (BDRV_O_CHECK | BDRV_O_INACTIVE)) || !(flags & BDRV_O_RDWR)) { + return 0; + } + + /* + * Repair the image if it's dirty or + * out-of-image corruption was detected. + */ + if (s->data_end > file_nb_sectors || s->header_unclean) { + BdrvCheckResult res; + ret = bdrv_check(bs, &res, BDRV_FIX_ERRORS | BDRV_FIX_LEAKS); + if (ret < 0) { + error_setg_errno(errp, -ret, "Could not repair corrupted image"); + migrate_del_blocker(s->migration_blocker); + goto fail; + } + } + return 0; fail_format: @@ -1128,6 +1128,12 @@ fail_format: fail_options: ret = -EINVAL; fail: + /* + * "s" object was allocated by g_malloc0 so we can safely + * try to free its fields even they were not allocated. + */ + error_free(s->migration_blocker); + g_free(s->bat_dirty_bmap); qemu_vfree(s->header); return ret; } From patchwork Sat Jul 1 10:07:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Ivanov X-Patchwork-Id: 1802226 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=uhlxgi46; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QtScB2c17z20ZQ for ; Sat, 1 Jul 2023 20:10:18 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qFXWh-0001cL-SD; Sat, 01 Jul 2023 06:08:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWg-0001bR-HN; Sat, 01 Jul 2023 06:08:22 -0400 Received: from mail-db5eur02on20710.outbound.protection.outlook.com ([2a01:111:f400:fe12::710] helo=EUR02-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWf-00076b-2e; Sat, 01 Jul 2023 06:08:22 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N7P562MaO4Z/2CTAEDyGM1EIl72VA3GTMgjOwCDaxDK/zszcruYVK3x7JyZAazBsoqagZgsQoUkSAbMzlYOuzLbWCF4YpTsHYPFzpJUpHxl1lzjXMq05UeCghVHqN3tYp5tKRic4jqLamZEQsJjFUxCrWqQlBSyoVRxowU0f32sCODANcpB4qi+ohZuyT3AOuchJeUrrn0GJEGaEowhXCKmubTMFwMJg+NDwA77s4raEVPfcxCS1l+3/MaP3tVizI4MaYLhYO+l6dRHfTlLJH0zZljxQoEsVUYH6fNMg7PQWwAtewI0oOTP22sVTJjoev93cC4pXlf7zif7NaxtUGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZSSUnPvXRGyiilsEqbjc3ibuVMssEPxMtFYeHhlCeEM=; b=aKiRrAzVQ+HKYveZZBLed3ww9Vqs7aWCT0ztU6/g81n40BWBB34FYDwX1bAE/dYj3jU2gQyTcYGVvCGSd8zuChBRr2pjG2VYM4MX1aoEOKOONEA7EWG0TwsO7/GBLqOiYki5KsgROwIU6KJXgSWN5KjZmswZY2dUPKBEw3ZTY6H7uj4fhivmQKl3O9RJCc/7VlZ7psWCrgbxZDBp1uROqtqaz+HbNkB1wwiDEbA/CUet7Ip+7dz1geAofZxhl5hhKO0pPrv+FikxtsVF64oqvmF5Du5+l+D5sO7k/vtASnnn6I0S047NZqS93gtoRJU7nFs5R8r0qCqf+C6sM4b/YA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZSSUnPvXRGyiilsEqbjc3ibuVMssEPxMtFYeHhlCeEM=; b=uhlxgi467z1cdT4gBwnOem1PuqA3ulOSDg2Xy7XZ1tzr9oHrQVY4wf1ugRdGdOfKSXWuaYCoY8Rt0WcZfcHAW01wVd9bs67Hwv/ke2ttxLD6SYaOsIBJK2Z/TIwLXUCZHAt39x5Adev6Pp1Nu93VvJLfRYcyLLU1+nq1M+RbHphz3+9OsvVFvE6a2Na36C6YtI02zrq0hUOh7GA1q7gE332FjUBlXD+gcOw3exAmYT1lz0FYyg1U6qx6X0guv9PSQwcVjQFvmKSzeOrYwcgK5SPNctaEU5h33j3dCj2WM90Sazh9SrLzsA0WwqeBpnJ1j8EqqtnJ8fdSVBWlgP06ww== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by AS2PR08MB8832.eurprd08.prod.outlook.com (2603:10a6:20b:5e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Sat, 1 Jul 2023 10:08:10 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6544.024; Sat, 1 Jul 2023 10:08:10 +0000 From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v7 7/8] parallels: Use bdrv_co_getlength() in parallels_check_outside_image() Date: Sat, 1 Jul 2023 12:07:58 +0200 Message-Id: <20230701100759.261007-8-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> References: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> X-ClientProxiedBy: VI1PR10CA0108.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::37) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|AS2PR08MB8832:EE_ X-MS-Office365-Filtering-Correlation-Id: b523f661-78e1-4cd2-9406-08db7a1b12f6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oNORmxvwvoR/xQ3PFlYw2bCxVL4XtZHdRSQ6Rnj/JY0Hi7SlSWs36hPaDRuXm2OFWF/+bC4f4nb6XbgJMqIOMYzhEye8CrcgOwNToZ82x6pA5m2cEWtayGdxsELQy92tJPnK+ev/wU8U86ierEMBk9NRRwPfZw7wJWs3Pi+xrIgn41JRlf5qkKYLf2idDRRtNrJZbPa4+kIZUXsvm0lCy/gAvd/huQAniqMvEM35RlJbckRsBPnQ8QnQEa+KYWeN5Bp5MN0mQvMEA/r297wgGXijfibzDJzVIKhtb2YO9ZyQiDZGU3S0TLQSq2Z1OvVP90gtxo9z1nL9+cGWFKVGz82C8olTSHLUfgCes9sNg8mWiwH2CZnGomm077AsnLyRFuGJmm1VJyl17Q399RtXZJ68EhM0qB07j9WZRoY8HjTmNC/aUQ0C7fLKwTVawt1EbTik/8iq20/bD+jb6TmO5hsVuqUYm5zzhLeYi7xYWo2ZH+RNt7xkCDkhbfau7ZhIi68jSw2ZgbB+/opGprDWGJ0jqpVJJ9TYzbpXLL7tbsvjs44eLvFE9vv8vQRtGhQ1nxue1y0xDIO+tjRVYaPRFhdy40Ap3Jxiagat3aXdnJ88l6FFSwOCoVlnF+XsSJvc X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(346002)(376002)(39850400004)(396003)(366004)(451199021)(26005)(478600001)(1076003)(6666004)(6506007)(6512007)(86362001)(2616005)(186003)(38350700002)(38100700002)(6916009)(66556008)(66946007)(4326008)(66476007)(83380400001)(52116002)(6486002)(316002)(5660300002)(8676002)(8936002)(44832011)(4744005)(41300700001)(2906002)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Z/meHLp6LB6N2kroUqxC5lBkJop/HtVZ0YmMGNxcbyVt1fI6EEDxRsw8PXh2N02syRHXsX1bGo72QG37q/Mj4KsgZLG8NK37sNPSfodAchHpwF5Vb3iFXPH92dhg0qdtLcy1jDwqKUrVaYGIuoRil931xc8wDJxiT67xIPQgu02qIYxlq5wrmmi3UbaAmWS7JlEUA6ZLjgQ5QU5Le3kNytzG8yCntRiZJVcgWYfHvmpLYsfqtT9LyymeWy9pw57V+9PDnSGQctDUdS7djnHg4YqqHKduDE7NIGPRH9msxfE9fBQ8CTTxMTV59Gr01qmwSIV0xY1yFOiKlfMwPKLyyxvhZeBmAuCcISQCFRVXZjjxgYgud3s1xnJTYAzvSZPmRIC224mN2HISvaW22O4LJUKmoglXi6yIdmZR5pUYEXB33FQSniMeCTIQ+nZV6HriD/pqp5gLt6HKsk3VzTO46HgoGKRngOqxNJ2BifUjSwTFpeffxPM61Oixxb3V9JwRdzazcE031Wg5jh7gAiis9/M0poRHFbTqg0jn50y246fjNKHtJ28Yxi4vXE9nLyXW7ijdm/ClDLnM9cLzIrJY+aksbOFeEls6bZj9xLodDVXw0LM7fe1WtjYEWviuwjryf3O2F55zh7InakctpLEQTiYyxEsabXxQ7NksOL2ia5eP+EqbEEwZ5uwOmFBHbxkZ5CJ+1U/awcHMWiRJGxNGu5du8w4AuYOkog6stZzSxhekb9e6NQHZo2TEwLA12aSR0m5wq8KiDd8s23N2i4AMnCKbZhSblk4rz57pv0pKMfN5On7SmjglnCoAQRpC7G7QRW/qiyhSiBdBTRKW4/slBQipoRTDbBm3WTZ6t+djlwA2mmsLEDQkvQIku2tg0wIVR1J3r6lJN2p1cou7Mv7tkMjxWMheFTgN/4qxZC+Hq4hqsTLqWrWUZVVlUrBILyWGbv9WI0/8bZZSzZJ2IB5YOyThoeQpkcYlQsxdXXnswl04I5WLA84YxtBSx1M6v3IxUpvghI04emotyPF7Zpy/QYTi+HUDHLpH/dZUspMctBNWviTLbhw+wkPDoa5qadb8OStoZZw8VQ7bvVQnu1oarfrEHCZqk0JElfo2/AoTNWkQJC8z3ybBNeERv0KMhvdxWCTsDOMf7kZhKRFzGY6K0MYKCXISGjgTUEpTjOh5zALByOEyJAGyiSwTZ7JrK470o2Ux5cjMtYxO2DwfRJiKENtQ/1PKCIk5zyAL/UVqsERvgSJgOWBp4U8SotXQGmuq9FGEtwilvSS37wb0iYAIiIZvguynw5JKKp5ohQ8+5Y28PQCPiakAmb/XFNmLCh6w/TfZR44Zr/biS7YJ5dCOfXC8rRxFQ662kM9ctagMUj6UBCydxnBVtncXBsQvkJxswz8H737L0WalD2kH73OmCLobQB8CG+v2JvoacEcyigsdjY+HLW5KbzJdij0RmbyEswDkebT1HwD39u8kyMkzbmQlALYxrNXJZ3r+uVc0CMPFM4F9jAyXAXPEsRVPElQL/D337Myf5oYVlevhyu5oRKIallreDGBZYzVFMeuWsyQrT8r8gzckXf06AYb6WbgVWeHPokqYG5bgzHvocC2qqi0ZGB4fwBwZ1EScCf5VXb8= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: b523f661-78e1-4cd2-9406-08db7a1b12f6 X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2023 10:08:10.5143 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QfxfUo9RpNoHrSnAAd+m96PeNtKUfJzAkvcTnyJsBF6x/b2Lmy18Hr4DVE65coHVPbLYLnBjZCCQ/U2MYgZ4m2IxJQtJlrvBjaOX2j3WeZc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8832 Received-SPF: pass client-ip=2a01:111:f400:fe12::710; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR02-DB5-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org bdrv_co_getlength() should be used in coroutine context. Replace bdrv_getlength() by bdrv_co_getlength() in parallels_check_outside_image(). Signed-off-by: Alexander Ivanov Reviewed-by: Denis V. Lunev --- block/parallels.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/parallels.c b/block/parallels.c index 51fd8ddf5a..456a13bd28 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -496,7 +496,7 @@ parallels_check_leak(BlockDriverState *bs, BdrvCheckResult *res, int64_t size; int ret; - size = bdrv_getlength(bs->file->bs); + size = bdrv_co_getlength(bs->file->bs); if (size < 0) { res->check_errors++; return size; From patchwork Sat Jul 1 10:07:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Ivanov X-Patchwork-Id: 1802221 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.a=rsa-sha256 header.s=selector2 header.b=SaOFms6a; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QtSZt3k7fz20bD for ; Sat, 1 Jul 2023 20:09:10 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qFXWk-0001e9-Lm; Sat, 01 Jul 2023 06:08:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWh-0001cK-QU; Sat, 01 Jul 2023 06:08:23 -0400 Received: from mail-db3eur04on071e.outbound.protection.outlook.com ([2a01:111:f400:fe0c::71e] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qFXWf-00076K-IC; Sat, 01 Jul 2023 06:08:23 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=crGIvzREH7uFLQEiU01nxyNffXSmlG43JNqm7+Sr05QdKDtjeV90H9T44VMFa3a0rmtb/sNqxjfc2wHYKFUv8LDENhEzqIE1XFegiTPZct+u5qMCRqgCD4jQzrRLu/HRuz6Z/7+eNUvQqyBHGFHEuGjBK6qI132PI5CgE5VthCGfiTmQ+OZ2Dj196hy1d/oyebbcwy62dX6Ao5fG1+LSF7SAmvGQwnDwKT7j5yXD4fmHUSz3vEBIA5wcrgkjWczetOxf3SpByNwYuC2TzQveK1MEwhHS1QU2GWF7goPrnSdbRCS+Pl/NVnTzUHGGYducTp2MtW3w5iWwVjOaX1xm4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xjxa6m8ziEeGyp7pGl3c8eS67NElujkYYuKqcoWAapk=; b=mNCYFzt0LrHZDYDOs07uu3SoKS2nEXWkFd9WMgn09QX4pyUrXl3kuezpvZjBmv0Yx09TOCZCBWOq9b32ZfN5cEYd/89Ymwf+nI9gb7wZNewDrZbB61fTOQF00p/CdZSFOkGpJxfXqTeD72+OWzgZi/xgwFq3ZTBQCKbw8Eev3CnJdLJucdBPxCoaqmdFRCaUNsvtBa2jXvalzgNpwaVBWsEFKBLqo4BJ1fiZDFmTn3275tq5B0RgaorYovJKn/uWvAOSJVSJ+N46QPmId7nYm3VUxtR520rrsnCQIHWJB9liWaYnMFiIDZnkTe1f2xLCOyTaFsytXNtP3Hr32TE81Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xjxa6m8ziEeGyp7pGl3c8eS67NElujkYYuKqcoWAapk=; b=SaOFms6a0F6/ADA3G8s5N7u36z6jrA3scqNJiIHuphJKQ1p0cJTZS/xQiK/ykkoHah9dckbqRDv1PJRAHgSH5wAXWeRnwAbLDzpensilGEmi8jIeSFw2U57Tlp2l2nBDnh3OWDKbmOFguNpCy3b7WWExxQjlZQNlmnlzA8U+67xPH6UCLxi68rRDPObgQseRqCIgo6UBmTz8yKRFWN6JnMgsF2ReLv6xrfOWk7qrGQStq0M/b6wW1csFdQUhmy5rONUX8Zouccy5KeWPsSOTgY8eqQMmw4oMOoWaHHgTVHjEIJse5ieGqbiCuF+eORkJOQjCy8vZbdUYbYwj1sMO+A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) by AS2PR08MB8832.eurprd08.prod.outlook.com (2603:10a6:20b:5e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Sat, 1 Jul 2023 10:08:11 +0000 Received: from AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243]) by AS8PR08MB7095.eurprd08.prod.outlook.com ([fe80::ea9f:354c:ea46:3243%7]) with mapi id 15.20.6544.024; Sat, 1 Jul 2023 10:08:11 +0000 From: Alexander Ivanov To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, den@virtuozzo.com, stefanha@redhat.com, vsementsov@yandex-team.ru, kwolf@redhat.com, hreitz@redhat.com Subject: [PATCH v7 8/8] parallels: Add data_off check Date: Sat, 1 Jul 2023 12:07:59 +0200 Message-Id: <20230701100759.261007-9-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> References: <20230701100759.261007-1-alexander.ivanov@virtuozzo.com> X-ClientProxiedBy: VI1PR10CA0108.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::37) To AS8PR08MB7095.eurprd08.prod.outlook.com (2603:10a6:20b:402::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR08MB7095:EE_|AS2PR08MB8832:EE_ X-MS-Office365-Filtering-Correlation-Id: e46202c5-727e-443b-c907-08db7a1b134e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GFcG1tn97qBMF/uK87fNBQ+p1+VPvRiUqf+wnxiMpM9ENBK1dhCXmiUNwEU7eyQsvdJcL7i10S7/oaeiyPT5XHJEXqChNW3ccfJgCLYcRXaXhfhYOpRaSJQUN9F7VTzRstjVBvnT6V2DzlBBVx/X4t+tDaF4UPOtzh3g83JZ7OR/LYau+7ko+R6NuvmbCc12rxVoyHJBT66UQQGWd0z8se/xBFyz7SnyW1CpkFyEbe4jHA1NhwUFDXhaea60MwK/hMxBr2K96iMoGANKsjv+r+3puGqZMukdrPwsyaAvB5zmFrLv9vuRO/qUWGpeudfbR8C3f7D2JaiXX0p1KMc5LvW5ZyyLne+EfWwUvXJFH+Z2TnXQyUviJzLrhDWWO7hiLbySqPiXVpEnLBF7hy0yGvJTri4njMwJAbPIR9snumaNp16fjqINVSxxWcNVnXc7DbE9uCcNcCwGMdmC5H2LxKPC2lwF5TozS8Q1paUwRO8jy7KBJj59E1NfIvwW2xTguje2u69xiImWcMLUJTwNxXEGWHA0e+iEe+tenZvcxZK1f/y5TYXIlPdobGA/6XvnOCFdGZSdYj8DPNEGAytvkvT6W2E9Y+n/mayptakaXQn5Yrd1WB8EKCEkcjjYR+ot X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB7095.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(136003)(346002)(376002)(39850400004)(396003)(366004)(451199021)(26005)(478600001)(1076003)(6666004)(6506007)(6512007)(86362001)(2616005)(186003)(38350700002)(38100700002)(6916009)(66556008)(66946007)(4326008)(66476007)(83380400001)(52116002)(6486002)(316002)(5660300002)(8676002)(8936002)(44832011)(41300700001)(2906002)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: mfdsi0GwC9MDR/Q46k7H22JdbJEE1Z83+IsdPOueqRSNW9baw8K12qAEbNcdfVvbBYjynTaLfnL1gOO5oM4Hm5tiOMe41sgC0NpMzZfQDSI7RqY2ODp83u3+4pIWDyzCWTppSKwybTdO0lV1BGwRoiLY4eQ1OVAkXe0fGhF2KMC9lxnJU0evPh/jMBsy8i5DD4ySDIdmudzU/FUKzb0CTOvTybc2w1b0Ix5G53HMK28L0psNvoGUqvMmp0DmjeiJh5fdUCNB+gOUT22zE6QNRedcw1TBi2Ekj2XPudeYlw9mk9D9qzwjHgeExZL/S7ElcE7b6hrtxxATGhqCJfbdZdDyJRJc01+85zd71IrHifMDfV147rEar/uve2hFzMrvVpVQKi3ATowVsicQNMyyVCm07S4PTp5PaOpJZ375fQY95I8AvF36Ndt542oJ/RwDgyRHflSp5Dyx5HwrhwKVOmAE1bNAxRhUXWLiyMCYDOOOFSZcC1j4ECXQo2t8KO+0onC4zXbKQQSZRllCjMygtxtdQrAryegSO5Q1i8OoOGKYJFcT/8ICGf5sGjZZLFnPVIf94bEUuHdKjQR+rraL6DJEZ8BbhjroNygwB8kFVBi7/tEkurr03NsUq+uwunhPT5OxNN6wiDYUTqxToYKZ0n80er/BrJxgK1iMTLu+QVVIh3fxXQOjYKmwvTFNj/PR5eAKN1L0E1fBMc24bb9n4go8hhDrl6EMBYUAv+bD/E6UXHO2VVDXNHX7CaBzPCrjnNUyXWK0Wfeermk0pp1wi3hVHEmZNHrt3Oc2s3pv48j6QR1O0lUeiWohqqliy/DNzRJAlbjmSiSvidjTKvjKVh0xTnH/F37Y53biK/13/E2PyM16iIApfBzbRRl4We79vc6o+R+T094/L8e94SAfrCNGSHAb5Loxbt1SLt6Mf8d3/pgPCsqocDxfMzoX2K69Q+4wZeRCJ7waQwmFjWXubujYhX6i2Acthgwp0u+HJpd9IKRTIGvgijUDgHAHh2kVgsNYgqg8H6j3HiIXwrRAryqoJPbj+CrVvOY7GzL7J1scIiOSoBkCVHX7f39Bc6uMlAV44iHbNocc5Pzh78cZY5Vq6b6feKH7A4rt/vQhMfKvGp0dcrE5IBilmLbBOUSFOoYbNL2oKIc0X/nQLxO4X2dsvZ7kusNU7zQKq+5umIX7oimaWwGXtlajiW0CFkgV/lkjPSuPGIJf3R+ATbibw4wqWB5JMxN8T8hQsOui3M1FhUmRIdT6GJFGI+OI8MY4mcxeVZ+edgKKLXF0QghW1TJOYuKceick+mjhryfLIo2T0HEJ6qCRxZnTmSxBcBPDHBNF4+PTGM26x+xDyP7PhVp3qGxftT1HXzEbBYkDe2xNhGpoobnqNvXaxTv7oaeLvyOzZtpXWGXrB1WowdOZoSWO6GIvzoARVLAtB7R+/f3C0Jmd7bbCOIerQ7qKD1zDap6zZCY9bdiyqthQayk5IhlTwCJh3UoR4IoyfOCS3E8K+WVuC1gBeV31UNT4FsFBPxR6AfYj2b2ulG5KVNABtlxzbrVm2vuM5ow+X7oYUu+qpP3PxLAMGBlAfiQBqZVDjRBMfNKb9Mz6f5zQTXJH/mZP/8kwFtGR0HUkXPEFyW4= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: e46202c5-727e-443b-c907-08db7a1b134e X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7095.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2023 10:08:11.0809 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 08nLBvOMMQYsOP6lv2eF8Zx3k9/cBbUkNjwW3GKRuPMtwkS4IYDjVwy9ejKnLpa7Hq/ilF/9K2YQvb5HgalvAggtrF801yKv5/XkSCngjBU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8832 Received-SPF: pass client-ip=2a01:111:f400:fe0c::71e; envelope-from=alexander.ivanov@virtuozzo.com; helo=EUR04-DB3-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org data_off field of the parallels image header can be corrupted. Check if this field greater than the header + BAT size and less than file size. Change checking code in parallels_open() accordingly. Signed-off-by: Alexander Ivanov --- block/parallels.c | 98 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 83 insertions(+), 15 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 456a13bd28..51e79056df 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -446,6 +446,65 @@ static void parallels_check_unclean(BlockDriverState *bs, } } +/* + * Returns 0 if data_off is correct or returns correct offset. + */ +static uint32_t parallels_test_data_off(BDRVParallelsState *s, + int64_t file_nb_sectors) +{ + uint32_t data_off, min_off; + bool old_magic; + + old_magic = !memcmp(s->header->magic, HEADER_MAGIC, 16); + + data_off = le32_to_cpu(s->header->data_off); + if (data_off == 0 && old_magic) { + return 0; + } + + min_off = DIV_ROUND_UP(bat_entry_off(s->bat_size), BDRV_SECTOR_SIZE); + if (!old_magic) { + min_off = ROUND_UP(min_off, s->cluster_size / BDRV_SECTOR_SIZE); + } + + if (data_off >= min_off && data_off <= file_nb_sectors) { + return 0; + } + + return min_off; +} + +static int coroutine_fn GRAPH_RDLOCK +parallels_check_data_off(BlockDriverState *bs, BdrvCheckResult *res, + BdrvCheckMode fix) +{ + BDRVParallelsState *s = bs->opaque; + int64_t file_size; + uint32_t data_off; + + file_size = bdrv_co_nb_sectors(bs->file->bs); + if (file_size < 0) { + res->check_errors++; + return file_size; + } + + data_off = parallels_test_data_off(s, file_size); + if (data_off == 0) { + return 0; + } + + res->corruptions++; + if (fix & BDRV_FIX_ERRORS) { + s->header->data_off = cpu_to_le32(data_off); + res->corruptions_fixed++; + } + + fprintf(stderr, "%s data_off field has incorrect value\n", + fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR"); + + return 0; +} + static int coroutine_fn GRAPH_RDLOCK parallels_check_outside_image(BlockDriverState *bs, BdrvCheckResult *res, BdrvCheckMode fix) @@ -709,6 +768,11 @@ parallels_co_check(BlockDriverState *bs, BdrvCheckResult *res, WITH_QEMU_LOCK_GUARD(&s->lock) { parallels_check_unclean(bs, res, fix); + ret = parallels_check_data_off(bs, res, fix); + if (ret < 0) { + return ret; + } + ret = parallels_check_outside_image(bs, res, fix); if (ret < 0) { return ret; @@ -947,7 +1011,7 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, BDRVParallelsState *s = bs->opaque; ParallelsHeader ph; int ret, size, i; - int64_t file_nb_sectors, sector; + int64_t file_nb_sectors, sector, new_data_start; QemuOpts *opts = NULL; Error *local_err = NULL; char *buf; @@ -1008,9 +1072,22 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, ret = -ENOMEM; goto fail; } - s->data_start = le32_to_cpu(ph.data_off); - if (s->data_start == 0) { - s->data_start = DIV_ROUND_UP(size, BDRV_SECTOR_SIZE); + + ret = bdrv_pread(bs->file, 0, s->header_size, s->header, 0); + if (ret < 0) { + goto fail; + } + s->bat_bitmap = (uint32_t *)(s->header + 1); + + if (le32_to_cpu(ph.inuse) == HEADER_INUSE_MAGIC) { + s->header_unclean = true; + } + + new_data_start = parallels_test_data_off(s, file_nb_sectors); + if (new_data_start == 0) { + s->data_start = le32_to_cpu(ph.data_off); + } else { + s->data_start = new_data_start; } s->data_end = s->data_start; if (s->data_end < (s->header_size >> BDRV_SECTOR_BITS)) { @@ -1019,16 +1096,6 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, s->header_size = size; } - ret = bdrv_pread(bs->file, 0, s->header_size, s->header, 0); - if (ret < 0) { - goto fail; - } - s->bat_bitmap = (uint32_t *)(s->header + 1); - - if (le32_to_cpu(ph.inuse) == HEADER_INUSE_MAGIC) { - s->header_unclean = true; - } - opts = qemu_opts_create(¶llels_runtime_opts, NULL, 0, errp); if (!opts) { goto fail_options; @@ -1111,7 +1178,8 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags, * Repair the image if it's dirty or * out-of-image corruption was detected. */ - if (s->data_end > file_nb_sectors || s->header_unclean) { + if (s->data_end > file_nb_sectors || s->header_unclean + || new_data_start != 0) { BdrvCheckResult res; ret = bdrv_check(bs, &res, BDRV_FIX_ERRORS | BDRV_FIX_LEAKS); if (ret < 0) {