From nobody Fri Dec 19 07:21:08 2025 Received: from esa1.hc555-34.eu.iphmx.com (esa1.hc555-34.eu.iphmx.com [23.90.104.144]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6567B3491C7 for ; Tue, 16 Dec 2025 13:28:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=23.90.104.144 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765891726; cv=none; b=NDLv5XNrAJt0lpejMSBlfWRWu+2RbHdtxNy1o4ht8aNpyf3icfpOJyqN3LyOhl9IE0cTBvBBLs+xtnjwq0/FWaSQY+3EnWWJYUKb3yLA8gjGjKSdEFEjcZK9ozZNTBS8QXzPhhz7I2MJpd2EkDYtf4VD+zQppL0GKqL809jhfK4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765891726; c=relaxed/simple; bh=37oVug3GO/FYqPPdADlSo+znYXlYx9qasQSWVCIyI2I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cQvcADxMkGgBBoyLe6+6pkrRBtSFEuPVwHPLvZt4YiS42UVruQ9SxZTaK1jS+U/BpQCWERe1IBvgrCwnncJx3e3aX4+RU2f2vT6jXqqdW6O3DtwWb5qubn+vMF3YgfL6DCHax6e1PZGXhPsLaAkARzGGNPfC7rQ6RGmHyvGes4Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=mobileye.com; spf=pass smtp.mailfrom=mobileye.com; dkim=fail (0-bit key) header.d=mobileye.com header.i=@mobileye.com header.b=KmMzRq0X reason="key not found in DNS"; arc=none smtp.client-ip=23.90.104.144 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=mobileye.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mobileye.com Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=mobileye.com header.i=@mobileye.com header.b="KmMzRq0X" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mobileye.com; i=@mobileye.com; q=dns/txt; s=MoEyIP; t=1765891722; x=1797427722; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=37oVug3GO/FYqPPdADlSo+znYXlYx9qasQSWVCIyI2I=; b=KmMzRq0X2tqjuPOLkzY4flBQMnrlxjIuENmVk6WWXLVgcxB39XU66XU6 o2SL7hPXdL7m3QqEyPkyN0qwSyXkJ/ehIXBo8lDuZ6XorlLl48DZods93 GrEosyf8A6ri7w9N1Gaw2unow0NlKxniXBSFDlr9N1D1Pgx40/pvUZ/P/ BXjW3K1LJyjGFA29gjaHWzyREb3ZZ71Czvt1MZK5FrmzDehSO8rR7uHt1 sWPCQQLrtPsBHpjljl+oFX7LyebiXWgUC28BqXdcLtvojEmkvA/qDJAQl CRa7HcG3n2mf27ezeLJImqlnKEBbqTF1rRii+RK0rts7PBNOv3Q6hVWWk Q==; X-CSE-ConnectionGUID: IFy+yD4sQn6Al5+N+rlUtA== X-CSE-MsgGUID: Iu6zx6ElRSi1aWr0eirtmQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from unknown (HELO ces02_data.me-corp.lan) ([146.255.191.134]) by esa1.hc555-34.eu.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Dec 2025 15:28:40 +0200 X-CSE-ConnectionGUID: bQ8p51OVQ16U5mOwjNrmLg== X-CSE-MsgGUID: YTsECUlBR7eWu6f4MATFbw== Received: from unknown (HELO epgd034.me-corp.lan) ([10.154.54.6]) by ces02_data.me-corp.lan with SMTP; 16 Dec 2025 15:29:53 +0200 Received: by epgd034.me-corp.lan (sSMTP sendmail emulation); Tue, 16 Dec 2025 15:28:39 +0200 From: Pnina Feder To: Andrew Morton , Baoquan He Cc: Vivek Goyal , Dave Young , kexec@lists.infradead.org, linux-kernel@vger.kernel.org, Pnina Feder Subject: [PATCH 2/2] kernel/crash: handle multi-page vmcoreinfo in crash kernel copy Date: Tue, 16 Dec 2025 15:28:01 +0200 Message-ID: <20251216132801.807260-3-pnina.feder@mobileye.com> In-Reply-To: <20251216132801.807260-1-pnina.feder@mobileye.com> References: <20251216132801.807260-1-pnina.feder@mobileye.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" kimage_crash_copy_vmcoreinfo() currently assumes vmcoreinfo fits in a single page. This breaks if VMCOREINFO_BYTES exceeds PAGE_SIZE. Allocate the required order of control pages and vmap all pages needed to safely copy vmcoreinfo into the crash kernel image. Signed-off-by: Pnina Feder --- kernel/crash_core.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/kernel/crash_core.c b/kernel/crash_core.c index 99dac1aa972a..3952b3e102e0 100644 --- a/kernel/crash_core.c +++ b/kernel/crash_core.c @@ -44,9 +44,15 @@ note_buf_t __percpu *crash_notes; =20 int kimage_crash_copy_vmcoreinfo(struct kimage *image) { - struct page *vmcoreinfo_page; + struct page *vmcoreinfo_base; + struct page *vmcoreinfo_pages[DIV_ROUND_UP(VMCOREINFO_BYTES, PAGE_SIZE)]; + unsigned int order, nr_pages; + int i; void *safecopy; =20 + nr_pages =3D DIV_ROUND_UP(VMCOREINFO_BYTES, PAGE_SIZE); + order =3D get_order(VMCOREINFO_BYTES); + if (!IS_ENABLED(CONFIG_CRASH_DUMP)) return 0; if (image->type !=3D KEXEC_TYPE_CRASH) @@ -61,12 +67,15 @@ int kimage_crash_copy_vmcoreinfo(struct kimage *image) * happens to generate vmcoreinfo note, hereby we rely on * vmap for this purpose. */ - vmcoreinfo_page =3D kimage_alloc_control_pages(image, 0); - if (!vmcoreinfo_page) { + vmcoreinfo_base =3D kimage_alloc_control_pages(image, order); + if (!vmcoreinfo_base) { pr_warn("Could not allocate vmcoreinfo buffer\n"); return -ENOMEM; } - safecopy =3D vmap(&vmcoreinfo_page, 1, VM_MAP, PAGE_KERNEL); + for (i =3D 0; i < nr_pages; i++) + vmcoreinfo_pages[i] =3D vmcoreinfo_base + i; + + safecopy =3D vmap(vmcoreinfo_pages, nr_pages, VM_MAP, PAGE_KERNEL); if (!safecopy) { pr_warn("Could not vmap vmcoreinfo buffer\n"); return -ENOMEM; --=20 2.43.0