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 0010680726 for ; Tue, 13 Oct 2026 07:56:57 +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 69D7ti10010010; Tue, 13 Oct 2026 10:55:45 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69D7ti10010010 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="Qd3jcaVf" Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69D7tR83009943 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Tue, 13 Oct 2026 10:55:27 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69D7tR83009943 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4a1ad49096fso2992645e9.0 for ; Tue, 13 Oct 2026 00:55:27 -0700 (PDT) X-Gm-Message-State: AFq9FYJQPCBX2Cnj44dWCoFVTSpcZaWpqT6/KcmBYiUv5Ck/NbQICxx2 fUSIvCt6X4qot+SNWyrj6QGyxhdwPTf5lq+zfAT1L/rTAic87M2+p2T0NAoUoZz1FgVAcxoexxs QSscWc6W5/MbLOmaZhEB1DOYEQZHzhWHYThnDVbaQO7PtNAlQyoN7MQ== X-Gm-Gg: AYBFou0Jd/jngzG73bSUg3OHhSH1Y4z+5behSn8uMIB28+IOsWwoUKvi/mHkgeNEDVG /3qxXaRegZtXi72AaCn+95iITD/A/gy8hwIJb49olkDTtKzmxfhMAjsHPtypi4pUvwRp8tHnnki jkyxaM0KXWr0aIGzhuVgMrUHc8g2HkMktc2SAJssLC4J3zeskQ9Enk9ZJxnuKQ5cR62x9srxlVB dUwZfrGllvCTYShznR96SMeIkgw9gyap8dvMYRJoE7iBUdwS3kw2BFGFIFukaRa32DL9dukbhwr o4wo2JrAwI4yi7EyTgX0HuQficcdM4UEqvN6NcEqzv800bS9GWBWRUz8EjK62pXF4VTcLfJquyJ /nFct0Zd9Vw2omNaA3EF/N1QeJRGC X-Received: by 2002:a05:600c:c44c:20b0:4a1:8849:17ae with SMTP id 5b1f17b1804b1-4a18dc6a5a5mr180451375e9.1.1791878127119; Tue, 13 Oct 2026 00:55:27 -0700 (PDT) X-Received: by 2002:a05:600c:c44c:20b0:4a1:8849:17ae with SMTP id 5b1f17b1804b1-4a18dc6a5a5mr180451025e9.1.1791878126586; Tue, 13 Oct 2026 00:55:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1791878126; cv=none; d=google.com; s=arc-20260327; b=gk2D4tkcsMIBZafKI7MePZWyWLRGqYLCOLxo60E9Ltw3RFWrJ0WAzuLTn/5PfKm0Si 6BQg1h8hIeuyO8UhYShTbnwYRAyPgwK/yspk4NuwKBmsOvZ9HQjQ2pzHOv/sMvOu0j/k zsp8YFE7eJ+nqGwwngUvrW+2BsMf64Qq4NMSzI4YgHfFq4FQY76KmzFa+x/cpOrrl4Od 40NtgcBsvKQZn5uyTCJ5ytczeqD8s/QYdqdF3qDXvPL+dtmEEDzL2El7/7kglcDh+86g Yla/GAhE44xyy/eUz/leyLl2dgq9BlgMIYSqjIApyul5QuDfOjnr5ux5u/5rO7LrGVn8 BPhQ== 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=dvWbNVryeSNAIaAfxUhOiamGVpU7AoUjIPrnwVuUEbCGokfwA3S8Eqe8uGaHtH1o8I +e1O4bc4dOkqxqXnIPdSitRSpAvigXOwJUdcONHuLsdEUxkZ+NjVPaCIlI1iFIU5ypQj GQReX3KbpSq6lwXT7I7tsegn0KYNb5I8ABAyo1s3KOELq+7RPSYroi7N0Hgh+YoXbop5 4dscnHTH/khifxYUHD5xTRrSjlFiLommWHKFi1M06SQz51lDO1PlnxgxWTFnHDD5pov/ OMy9W9MZzKd7VXM8INspZ207uuLOcRoykkVRvlhrNGOtk+RNLgXM6fcqZMjEBaDfbQ8A z1sw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=Qd3jcaVf; 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-48de0c0345dsi3819642f8f.370.2026.10.13.00.55.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Oct 2026 00:55:26 -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=Qd3jcaVf; 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=Qd3jcaVfpm1S 9ss5qbVqkXSF8UitibkKGBIpKLyibDlj8JMWvT7Q80hL0bbuquEto4san3SmGhhVWHkFrG41q45RJ N4qCa634shsWX2RfhbaantrixysJiZuQcQiOuHJhCKy6O2+LlOYkyJP4m2p3ZYXPmmyXrDoEkzGE1 enL3Kx5sm+XhDLfKUo/7DpS1AN9Ah+VVIBJ/bStlSfcHQ6hIoj9tqTioFxJcY9A5hcNm0icGuAyM1 /FNN8ZU4BMsg5OunHUYmxq9m8B5CGP+7XZtywQu2s3SZt3y/I7ZpERJjRlD0nqCphjIuRSFrCPLcl vsyCdeDm+gNuZ2YqjxSHkg==; 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 1xGXIh-004zlI-0D; Tue, 13 Oct 2026 09:55:16 +0200 From: Alexander Ivanov To: den@openvz.org Date: Tue, 13 Oct 2026 09:55:06 +0200 Message-ID: <20261013075513.90618-5-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261013075513.90618-1-alexander.ivanov@virtuozzo.com> References: <20261013075513.90618-1-alexander.ivanov@virtuozzo.com> MIME-Version: 1.0 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 v5 04/11] 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