From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (unknown [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 612A5809C0 for ; Tue, 13 Oct 2026 11:17:35 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69DBGJer012493; Tue, 13 Oct 2026 14:16:20 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69DBGJer012493 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="s9FgRziT" Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69DBGBqh012441 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Tue, 13 Oct 2026 14:16:11 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69DBGBqh012441 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4a01b112fa2so42531515e9.1 for ; Tue, 13 Oct 2026 04:16:11 -0700 (PDT) X-Gm-Message-State: AFq9FYJjBrqOVQ60Ro9p9ICIlb1IAP0APdRBQV+nYeQt2eRE9ZlVdNzd Sf7OOrxJJrbahK8qCPTTuPc0sU/jcw/vH2flxj8GlH18wnZ4jqf7l+F1QMNrc4JwL4H7KpFoWAo jJw9CxbcRx3GqrLg151gPhuX0JTVJRI0IiwlAEwUq4NZXCcD/9uYSHg== X-Gm-Gg: AYBFou2dCdB499H7Lq7bwmNi+sXgkUkRwczp5e9l1vCr6lTfhx7lGc1LlsiO275zY/Q tkeZo+o6eUYBAufIA9/tUzkIldQiGW5ePfyXuwt0t2QnvdZhi08ntNrGOtaMmUwVpNW+fbM7IOG vAxQ6Eb7UZvDKeFogh4y4P5rhC0StYu2IG7QjtUiiFQ5K86TjKWSIUcTpzIcpHTtLLynQ/ictWe LdEio/mU2jrxF8/kkfB4mNhdG8fZVqfLN4H3Z33Os6939m4pHKG5pmbxAPojkXc0X1ILN1EjOAW jf2+TgbXtLTLGbNXXT49iSRSzGKEbiic9QskUw3sFRcCk75vnQqDq52VayxR7DMuHkJoWPAMPjT hwq+WoncGVKUZ826OPUZWSFRBHvA= X-Received: by 2002:a5d:5291:0:b0:486:f3db:e0f2 with SMTP id ffacd0b85a97d-48dbaade0b3mr17265530f8f.14.1791890171163; Tue, 13 Oct 2026 04:16:11 -0700 (PDT) X-Received: by 2002:a5d:5291:0:b0:486:f3db:e0f2 with SMTP id ffacd0b85a97d-48dbaade0b3mr17265476f8f.14.1791890170478; Tue, 13 Oct 2026 04:16:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1791890170; cv=none; d=google.com; s=arc-20260327; b=btabKp3AbMEmwIkeiHEZF2wbXtEsGd53cxVejcHL0YKX62HNy1VL+WPpX5PYE0j40I GEJPYVcvBMeLLG1fCoiRWpVRu7PAbRGwq49wrcYNcZbhIOIm1A5wKDKyYQUf/R7Qnz54 fip/1r4lWaPwcCj3855WUCMdFu9mtPESGaVMV94iqZNogKE+CY7ybqlGkQtaZtjVS1ea D7hWtTnfliwP3+pMCanbnmP0H0E9j4R7qPlRgDyAty2l/LlutLEB0fRDIeLUBsynPGqd Mmsv7SJd2bFoEpa509pVTs77u4yuyIlcJ1d433f0HI/rAZ1Vepb/Lv5q4shPBIS8yzdn dEkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=NeKr6Q0JnMs3wKuq3BUhr+8bIjGM5mR1GR0AgRhijZQ=; fh=M+TyAUhAp4+t7uzAVeqNdLHW5eNz2FQXSv4TjrRhpCk=; b=stYzgL1q6bggsTrX8LWwcOI6FN8IH/Aj/hPrj3yHeVQpX2VVYOZuGN3b75Ku0Dccw1 SKBKtLwQ08RusTCNJTtC8ag9t+CMCP04wR0N5frXmvvUV2XVFL8hQwjMZLvXhgLZQUx1 oUytSg+D49ibkHyItECF/80DsDKey7gX4cSey+kv1kLu4qQWIC6be0KWOgjQY8lL8ljX kgQX5DO6ONy3XrKD3iV3N4Pa1eaGYuFK0ZdmHShWspIn55+Cfk3831Bv2xjMTTZ5D2T6 /CSmVuSn+vBV80uVvbwKgCX7TeFQKFkzSKWcxV8Sd1GjFXwywWlDlOhaE4gq3QP5Fe/v atSg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=s9FgRziT; spf=pass (google.com: domain of alexander.ivanov@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=alexander.ivanov@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from relay.virtuozzo.com (relay.virtuozzo.com. [130.117.225.111]) by mx.google.com with ESMTPS id ffacd0b85a97d-48de3f952e2si2660776f8f.0.2026.10.13.04.16.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 04:16:10 -0700 (PDT) Received-SPF: pass (google.com: domain of alexander.ivanov@virtuozzo.com designates 130.117.225.111 as permitted sender) client-ip=130.117.225.111; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=s9FgRziT; spf=pass (google.com: domain of alexander.ivanov@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=alexander.ivanov@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=NeKr6Q0JnMs3wKuq3BUhr+8bIjGM5mR1GR0AgRhijZQ=; b=s9FgRziT4yjw djmuo84row+wBmFnqQwGyreJN9Dl+uCnO0bRyK/cVfAnU8jf5RICiRYNwi/PI07CwAPQBdDutskSq ZcF70+sVF8jOYU/iOip1c9kU6cmZjUkgcNlgCZ4/tLVkED5FMnZRJKW0RPzM5o9YljSKIIfQC+FeA zLvvAZvgnDvFGQcWqn7BkEdU4IPZ9VJIcq9/WEIQ8MdqmT4nqFaDAY0/uagdWZduT7PTLlEJ/WTDU tr2bl+uvddP/UC7XMKMiP7AMNDWW8ffTLtXM6+3d56qbhUcO0QZ9cc1da/x3Cl8o49y6ohlAKGbK1 wu3tEl5Z/hNQNJTPCNwatw==; Received: from ch-vpn.virtuozzo.com ([130.117.225.6] helo=sky) by relay.virtuozzo.com with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1xGaQw-008pMQ-29; Tue, 13 Oct 2026 13:16:00 +0200 From: Alexander Ivanov To: den@openvz.org Date: Tue, 13 Oct 2026 13:15:56 +0200 Message-ID: <20261013111604.142989-5-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261013111604.142989-1-alexander.ivanov@virtuozzo.com> References: <20261013111604.142989-1-alexander.ivanov@virtuozzo.com> MIME-Version: 1.0 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 v6 04/12] dm-ploop: reject empty deltas X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org ploop_delta_check_header() accepts a header with m_Size == 0, and ploop_add_delta() accepts a raw delta of zero size. The BAT iterators can't handle nr_be == 0: ploop_bat_clu_to_page_nr(nr_be - 1) wraps to page 0, so md pages past the first one are iterated whole and the clu == nr_be - 1 stop condition never matches. A non-raw empty delta has a single md page, so ploop_apply_delta_mappings() and notify_delta_merged() (and ploop_check_delta_before_flip() with PLOOP_DEBUG) walk past it and dereference a NULL d_md on a device with more than one md page. A raw delta is not handled as raw yet, as ploop_add_delta() sets is_raw only after applying its mappings; once it is, an empty raw delta would get all the clusters mapped to it. Reject empty deltas in ploop_delta_check_header(), which covers every caller reading a delta header, and in ploop_add_delta() for raw deltas. https://virtuozzo.atlassian.net/browse/VSTOR-148171 Feature: dm-ploop: ploop target driver Signed-off-by: Alexander Ivanov --- drivers/md/dm-ploop-bat.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/md/dm-ploop-bat.c b/drivers/md/dm-ploop-bat.c index 7b12b0f9fe81..4fc99400a0a4 100644 --- a/drivers/md/dm-ploop-bat.c +++ b/drivers/md/dm-ploop-bat.c @@ -268,7 +268,7 @@ static int ploop_delta_check_header(struct ploop *ploop, offset_clusters = SEC_TO_CLU(ploop, le32_to_cpu(d_hdr->m_FirstBlockOffset)); bat_clusters = ploop_nr_bat_clusters(ploop, delta_nr_be); - if (delta_nr_be > ploop->nr_bat_entries || + if (!delta_nr_be || delta_nr_be > ploop->nr_bat_entries || bat_clusters != offset_clusters) goto out; @@ -503,6 +503,9 @@ int ploop_add_delta(struct ploop *ploop, u32 level, struct file *file, bool is_r goto out; } else { nr_be = POS_TO_CLU(ploop, file_size); + ret = -EPROTO; + if (!nr_be) + goto out; } ret = -EBADSLT; /* Lower delta can't be bigger then upper */ -- 2.53.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel