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 2ECCF802A5 for ; Mon, 12 Oct 2026 13:28:51 +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 69CDRaoW022962; Mon, 12 Oct 2026 16:27:37 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69CDRaoW022962 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="iBlIo/da" 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 69CDQvsx022875 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Mon, 12 Oct 2026 16:26:57 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69CDQvsx022875 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-49953abe51fso14273865e9.1 for ; Mon, 12 Oct 2026 06:26:57 -0700 (PDT) X-Gm-Message-State: AFq9FYJXnt0u6ibb/elrFihbtM16DIfLAXy98tjvGMpAQj3POIA7ylF+ U21ONbh8z/xjd4phrw//VKjJxCzKaScW8N8bouT7+I7kzPjRtADWYWn3FzSXAH65fKt4EgKPib8 0a0uNEC5EKLvn0UINoS/dW7N3ZFwSotI591RPYTeIkxALg53lldG0wg== X-Gm-Gg: AYBFou0AmhecKJtk1OD77F9gr28CTn6vFvI4oOSEV6SWiT4ErIM6iGIh8dKWYlbNzNW nyk0xrV82VUqxrzvifjK7Ad1OAROZDDmR2rWZbpa7SOzrUeYdfx36zYLfxoTfq/ssmOFXOMdAkS rQK3wRHdqcdJmuRk6hqYukhC46Gi+xfr0VUOajTw+k1R9lFHh1SLPC6bJ9WLlzrGJGLDWvWKf3t wI4N9+6cAdl0BQu5k2rum7KwDycIuEM+JR7lkYs5gEgRl6x3Ud3hLo7sVMkSl8fSpq4/5Vkz3bR KUJKSXzWERe2tJnRzpXSQzpNdNW4u27womMatnlJ7Dp63dmks0T7IYJWGa/kE3TyX1Y24AWZG/q VqakrE8dcTDCwcfy/0AdmY8Eomk2H X-Received: by 2002:a05:600c:3e16:b0:4a1:992f:d0e7 with SMTP id 5b1f17b1804b1-4a1992fd259mr91650565e9.16.1791811615775; Mon, 12 Oct 2026 06:26:55 -0700 (PDT) X-Received: by 2002:a05:600c:3e16:b0:4a1:992f:d0e7 with SMTP id 5b1f17b1804b1-4a1992fd259mr91649505e9.16.1791811614887; Mon, 12 Oct 2026 06:26:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1791811614; cv=none; d=google.com; s=arc-20260327; b=pzL/75EJ3TyD9lkBXf15e2yhQFP8QCBDW8dM8Ri8584baoG/OqGVpa+jiVqA0bKbxo eJPqrY5WX//s78DWI0sIdnSuyBvg9W1tJyg9bNSoWyOhbF3Ct44qb+5CbGv2iMl4udwE W6pKfxLBHIO/ehBGgAGCDVDpz4u4OL0gi1mzMMPXpWVqkQLp1/CUwXox+46HnypC/lrC lM6504xKfb+xK4tc5/jN+1ExekQdjgE57eAK79n29kHz6qcbpUbThz69PeZM93j2Kho4 yXLwbjPBZ4TjZdRO3jKxM/uW/89KpDh4wYyD1NM7hfKnBi0WFiM9qoDpY7W+cQx90R9M J/ag== 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=AuNwKHmDlWe0g4y+xMhBYwuTKfpU59FZqW+A3DfzcspLhTi3mAIJzhuW3UumXa2cGu a41ZuG+t3ZxQtwgogv6tDFN0aBWWayFXNrXXNZEGehPX7f6VDCeain8eB9bhJznhWhn6 W2/6xH7rYMIpJp7elri9d/J/Ohn6KlghzEavWgALIKiX1xMwRP20CZYL4lmBdUwmZ5TP pBvy1PHdR7/ePtFjmeygGshHZ2Zi9HZENfEMHdNzxLV3HLTEQC9z9Bfiwz7+V3typSIt v2c7Ew33IijvIe10YR/fAa4Uydy42rUELRiLERysJX5FN/r9zLX3X3OvGRk6QIG/iGPC KSRQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b="iBlIo/da"; 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 5b1f17b1804b1-4a18bf5e88bsi288029555e9.10.2026.10.12.06.26.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Oct 2026 06:26:54 -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="iBlIo/da"; 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=iBlIo/daZ2g3 hgtkV01eKIkePCo1TgmIKkwA9L1phqblDioLiUJsbT0lVlob5EWVvht6n2/85L7nc7lcu8kFpjXCS kurlPAp46qSXc5mtEXGRo0yZbF2wOZ4Y4FXE6d9U+G3CbWYGaqys6R5F/Rfm9Y0weZCFoOL0Ttte9 iYkpYZ7igDhFb2FG8RPXexu2ZXsnU4ANqf/t2uR/JrRLD1Zk6eRGRlEcMkaqJufF0T04cfLOiMjtb NvMuxTeIJR+acdp+K2Iidfs7lz5AQ7+9i1YSoSKB3ztqp6Cdfg5FTILlEi08sZa76iRETT2uApE5r yszK3MvuLEwc64FyxnawUQ==; 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 1xGFzw-001WAY-05; Mon, 12 Oct 2026 15:26:45 +0200 From: Alexander Ivanov To: den@openvz.org Date: Mon, 12 Oct 2026 15:26:39 +0200 Message-ID: <20261012132646.41494-5-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261012132646.41494-1-alexander.ivanov@virtuozzo.com> References: <20261012132646.41494-1-alexander.ivanov@virtuozzo.com> MIME-Version: 1.0 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 v4 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