From nobody Sat Jul 25 02:43:16 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 85E233D3309; Mon, 20 Jul 2026 08:58:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537931; cv=none; b=gW1rgn65CbFrQ8sl4EuAXOb6Cs/6m2YeOcMcpS4Y3Lry6MfuCJdyUYmh2zP/uPG1QNyQU+wljefrL9sxxF+ckktE5nlTjm2WM09E2Cg+XoHl4UQkhwSwvpr053nK11MM7UukdOPC+BNNjJiB08dKvrdZDeIn7WlEpAZlzXEoNVI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537931; c=relaxed/simple; bh=x8LRonAOeThlNJvvK2i/qfi2Ll5J9XL/z/7Sty4mpuA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=o0i5a6LT10LzuLphU3nPcU1xeF42t3uTfql105iDGM4IkSgBfoHwem5dE3HnUvy2huylErsoWmIvcUIR/vwzANld1RZSqO5n7WHD9rdqEZo+le13gGteSHKn2uTM9VUaYZ7pLaxzhqbaYYs1x4/xh6B2EsLqkaRuW4Re8WNLZmE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=ptgvocD7; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="ptgvocD7" Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K6fq2S1381624; Mon, 20 Jul 2026 08:58:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=uJziLZN99LngpXCT7 oNphGPip9PC0fXobZ3zOHqrZlc=; b=ptgvocD7nhn4HdLue1l53tkTo5O4eHrx1 20W8APCqU+/vK8Q8f14dR6DTLMl7ft4G/ipCzbiFHuytF7NTSMbxkO6eFlgJBfmg 0Fm4Wdt6Y9nxbKVNBeCjy6O7b3W1e9thZA5G7EF2UdGGKbu5H2RF97HGh0n9dO8/ O+uvQDU0mTscMSelCzFm9crveNg4kBXqncrlWgNMNdXhuvbS00FLXuXpfv1hzBid KKkL0hixtbA6nYdkEU6+Odbs1MosPHy6WFngz2BrsPtLu4v/0RSICFOdIs/rUqO5 yl1BAg7rIcDEkcXguzntwtNiLO31dTYjqJCUOhRl5aUECyGrE8OaQ== Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fg77jxd02-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:40 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 66K8YfdL030001; Mon, 20 Jul 2026 08:58:39 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fgktpw0h3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:39 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66K8wZY053018958 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 Jul 2026 08:58:35 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2B63420040; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 087A92004E; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 Jul 2026 08:58:34 +0000 (GMT) From: Heiko Carstens To: Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , David Hildenbrand Cc: linux-s390@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 1/8] KVM: s390: pv: Use VM_SPARSE area for guest variable storage area Date: Mon, 20 Jul 2026 10:58:27 +0200 Message-ID: <20260720085834.898025-2-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260720085834.898025-1-hca@linux.ibm.com> References: <20260720085834.898025-1-hca@linux.ibm.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 X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=HJXz0Itv c=1 sm=1 tr=0 ts=6a5de340 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=CGB7rVRhuG4dzmKA8wAA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX4tl8s//KLyTd PS+5wnZ+Y+xcxn3f5V6cuLzSfSFRwYaSNS/egQte3Ajx4jFeiqraFVrr2QiIGJnEZU8oBxyrpPB y8ep/mczl2LXqSVxSNBdAYZ72xi157IBExlelZ92fmZnNA+AE5cq+tpoy8y5Xn8HT4RVfquDI/K oATNTA0bufTBYM9ECf9uyDK/hGNjfND1MNHUB2zG18BBwHtWZRZGicSdN6qqzMEHu53RXWAtScc cherIHG+X+3fRmBn5+YMrlXxgCq3UYKF8tdHzpn06yyweR9os/KlEzlhdZnksbguIh5wvh0oswS dYsm5TDFa1xRkzlmCUnwR3qW8qo3Wx7pBUi5Kg07KaFUOZX9KzDYAsHfcHeCC+t6dU0GANAzvf3 4nA9ZFmFEG5CZ867XPxDxeJX7Hj9N2qiZ2DJ5+xV43egqy3lkAqSlZNt21T4ZI8GyEGRyrdJN31 7s/eZx+rBnWnBxf8rvw== X-Proofpoint-ORIG-GUID: -S37DKE_Uy8BRsi6Nmb8Y9W-HajXkfnP X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX+Thkimt62m4k 9heT6rTy+5VB1UhsWMCkwXQr4AforcqR0iqbx36VKc5/qSW1aanAXk2o+Unei/N+8NMs2AJj1bQ 8aFvFH4Q9jbnoyC0GVP+Vte/5skoCDI= X-Proofpoint-GUID: -S37DKE_Uy8BRsi6Nmb8Y9W-HajXkfnP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 lowpriorityscore=0 suspectscore=0 malwarescore=0 impostorscore=0 clxscore=1015 phishscore=0 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200096 Content-Type: text/plain; charset="utf-8" The guest variable storage area is allocated with vmalloc and then donated to the ultravisor. Any kernel access to that area will result in a secure storage access exception (aka fault). This is a problem if such a memory area is read via /proc/kcore. This causes an exception via vread_iter() and results in an unexpected short read. Avoid this by allocating a custom VM_SPARSE area. If such an area is read, vread_iter() returns zeroes for the entire area. Note that the function which frees the area does not update ptes. This is intentional to allow for deferred / lazy pte updates and TLB flushing like the generic vfree() code is doing that. See vunmap_pte_range(). This assumes that s390 will gain full support for lazy_mmu_mode_enable() and lazy_mmu_mode_disable() in the future, since as of now the used ptep_get_and_clear() in vunmap_pte_range() does indeed invalidate and flush every single pte entry, but only for s390. Tested-by: Christian Borntraeger Signed-off-by: Heiko Carstens Reviewed-by: Christian Borntraeger --- arch/s390/include/asm/uv.h | 2 ++ arch/s390/kernel/uv.c | 65 ++++++++++++++++++++++++++++++++++++++ arch/s390/kvm/pv.c | 6 ++-- 3 files changed, 70 insertions(+), 3 deletions(-) diff --git a/arch/s390/include/asm/uv.h b/arch/s390/include/asm/uv.h index d919e69662f5..153fed63adda 100644 --- a/arch/s390/include/asm/uv.h +++ b/arch/s390/include/asm/uv.h @@ -635,6 +635,8 @@ int s390_wiggle_split_folio(struct mm_struct *mm, struc= t folio *folio); int __make_folio_secure(struct folio *folio, struct uv_cb_header *uvcb); int uv_convert_from_secure(unsigned long paddr); int uv_convert_from_secure_folio(struct folio *folio); +void *uv_alloc_stor_var(unsigned long size); +void uv_free_stor_var(void *stor_var); =20 void setup_uv(void); =20 diff --git a/arch/s390/kernel/uv.c b/arch/s390/kernel/uv.c index a284f98d9716..d1cdc5ae5e27 100644 --- a/arch/s390/kernel/uv.c +++ b/arch/s390/kernel/uv.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -209,6 +210,70 @@ int uv_convert_from_secure_pte(pte_t pte) return uv_convert_from_secure_folio(pfn_folio(pte_pfn(pte))); } =20 +static int uv_free_range_cb(pte_t *ptep, unsigned long addr, void *data) +{ + pte_t pte =3D ptep_get(ptep); + + if (!pte_present(pte)) + return 0; + /* + * Note: do not update the pte here, since there is no code which + * accesses the memory range, besides bugs. The invalidation of ptes + * and TLB flushing is deferred like for regular vfree() calls. + */ + __free_page(pte_page(pte)); + return 0; +} + +void uv_free_stor_var(void *stor_var) +{ + unsigned long addr, size; + struct vm_struct *area; + + if (!stor_var) + return; + area =3D find_vm_area(stor_var); + if (WARN_ON_ONCE(!area || !(area->flags & VM_SPARSE))) + return; + size =3D get_vm_area_size(area); + addr =3D (unsigned long)area->addr; + apply_to_existing_page_range(&init_mm, addr, size, uv_free_range_cb, NULL= ); + free_vm_area(area); +} +EXPORT_SYMBOL_FOR_MODULES(uv_free_stor_var, "kvm"); + +static int uv_alloc_range_cb(pte_t *ptep, unsigned long addr, void *data) +{ + struct page *page; + pte_t pte; + + page =3D alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO); + if (!page) + return -ENOMEM; + pte =3D __pte(page_to_phys(page) | pgprot_val(PAGE_KERNEL)); + set_pte(ptep, pte); + return 0; +} + +void *uv_alloc_stor_var(unsigned long size) +{ + struct vm_struct *area; + unsigned long addr; + + size =3D PAGE_ALIGN(size); + area =3D get_vm_area(size, VM_SPARSE); + if (!area) + return NULL; + addr =3D (unsigned long)area->addr; + if (apply_to_page_range(&init_mm, addr, size, uv_alloc_range_cb, NULL)) + goto out; + return area->addr; +out: + uv_free_stor_var(area->addr); + return NULL; +} +EXPORT_SYMBOL_FOR_MODULES(uv_alloc_stor_var, "kvm"); + /* * Calculate the expected ref_count for a folio that would otherwise have = no * further pins. This was cribbed from similar functions in other places in diff --git a/arch/s390/kvm/pv.c b/arch/s390/kvm/pv.c index 1beacc841ca8..dc5ac29b4c31 100644 --- a/arch/s390/kvm/pv.c +++ b/arch/s390/kvm/pv.c @@ -337,7 +337,7 @@ int kvm_s390_pv_create_cpu(struct kvm_vcpu *vcpu, u16 *= rc, u16 *rrc) /* only free resources when the destroy was successful */ static void kvm_s390_pv_dealloc_vm(struct kvm *kvm) { - vfree(kvm->arch.pv.stor_var); + uv_free_stor_var(kvm->arch.pv.stor_var); free_pages(kvm->arch.pv.stor_base, get_order(uv_info.guest_base_stor_len)); kvm_s390_clear_pv_state(kvm); @@ -369,7 +369,7 @@ static int kvm_s390_pv_alloc_vm(struct kvm *kvm) /* Allocate variable storage */ vlen =3D ALIGN(virt * ((npages * PAGE_SIZE) / HPAGE_SIZE), PAGE_SIZE); vlen +=3D uv_info.guest_virt_base_stor_len; - kvm->arch.pv.stor_var =3D vzalloc(vlen); + kvm->arch.pv.stor_var =3D uv_alloc_stor_var(vlen); if (!kvm->arch.pv.stor_var) goto out_err; return 0; @@ -414,7 +414,7 @@ static int kvm_s390_pv_dispose_one_leftover(struct kvm = *kvm, */ free_pages(leftover->stor_base, get_order(uv_info.guest_base_stor_len)); free_pages(leftover->old_gmap_table, CRST_ALLOC_ORDER); - vfree(leftover->stor_var); + uv_free_stor_var(leftover->stor_var); done_fast: atomic_dec(&kvm->mm->context.protected_count); return 0; --=20 2.53.0 From nobody Sat Jul 25 02:43:16 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 D8CEA3D1702; Mon, 20 Jul 2026 08:58:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537924; cv=none; b=TYfCcbXi9lr64nkInTbVaVZUsKL1x6FviHzWXqj/SotkTkzHf7O/zKpHYErGiDpW7fR5tjZnFx3C9k9PrXlQG4ulaUU/tMZryfLBbVXD1vT9nUlYW8+EW9WH1thY/nAE+BrvbihMHukmZpwmfZXzwJPuQR6O5djuiLWamFN1JYA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537924; c=relaxed/simple; bh=0jK4btx26Jwvi041xJirsZ+ydMijoK3qrmHGRRxWCAI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PXYlh90FK31pSR2yuUkIZarfisWmbS9gXhhPjU4fw9KK3ugU/s6PEC4MM7zysPqTNGsMyUdKVQEhBoHGSNIs5q3kqCFskJ1DuW64Ukq3lwBtzuydUE6KddI7eOYWlF98155KEifCWCoBNnrGcmVerYaZk001hZD2wpA08UNBBjk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=eoQ0+K8p; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="eoQ0+K8p" Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K6fgSY3777204; Mon, 20 Jul 2026 08:58:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=4fpnUxdPoQ8eIU2iD +oHnO8eayYOZEM4N/oAChWRqac=; b=eoQ0+K8pcivB8skUxJs0in3IYrSKFWkUO +Q7bfrhw38ZnFYmh9WECgM+LT27TRdUekR9Kw0zDuRO43FvTN5bUtPobWZOZhpNm 5cGfHf8M8OLYFNq5AAbjsN69knx5rd0YZqShjXMeCBbJav3IAOWMXHw9n7K5kVjX pwNFEStMkjL6tUP3Hd6lXkF5COSYnVeMQ4GzZvmNVBoYNe+hTIHh2tvrYfn6Ic0/ 85549TW1GgccMBa9Ldt2LYO+VDTcF72PC1e4HvAG5ytGG1v8TYlbdpsnsL90eLdE 26JpMIwlw+B2kuzp1LBZGIJxHHXnhnGSvvLcmUdl8hq5eAq5WmItQ== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fg77a6m82-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:40 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 66K8ncpR012379; Mon, 20 Jul 2026 08:58:39 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgmtjmu3e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:39 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66K8wZla48103692 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 Jul 2026 08:58:35 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5AEB420040; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2F7442004F; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) From: Heiko Carstens To: Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , David Hildenbrand Cc: linux-s390@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 2/8] s390/mm: Add missing mm check to do_secure_storage_access() Date: Mon, 20 Jul 2026 10:58:28 +0200 Message-ID: <20260720085834.898025-3-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260720085834.898025-1-hca@linux.ibm.com> References: <20260720085834.898025-1-hca@linux.ibm.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 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: qBknqFVvGJvuyJGJ_poysOAQP8y8yNTg X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX8qcc1XCDpWlz Knc5r4lVNyRveDbkjqfE65CoLmGonppSDyp7mvnf92h/MWJr3IbbmUmiUz8dMLZ8qbhXnMUjgvQ 7RswxQv/s0hhgBMgdx8JGWtuS/B2qgg= X-Proofpoint-GUID: qBknqFVvGJvuyJGJ_poysOAQP8y8yNTg X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX4mn/TrsGws8V Xfg0Yu3ZPgewTDYJL8QY8BPJ7ULxzUioSPZzib6dF6MLCLpKZKtKFSId3LVqfOD5NJMDqophQd9 /tejSLfDOOY517rYffb5KVxhAD2ieTPPpC9Cv1ReK0Obmmeo54RZjk2FL9X39B+YBIgnbd62RJx wUTMbMN+mu9LF0u5wj1LxDp4OC1kCvSZuO/96ymF+kY9yPQOnPNXB8Fuynin0/b6Z9ly1Q5I98l AGL992tVYDZiQNkW0q+OLb+ki3oGIFwbbz+5/4sD6U8WNfn+azvo77/icFUY6XS7GQLDqqHmfbK qaWbTuKT9PzhXE4KAzlWTNjbIZ0N6h42/Fw5s9uqSNNoXzRnrMRAe4DvXmrEm4jUgUjLV5xvzCC YC9AlBiWtdti6gy+Hz/01uhK+yhW5bVbv2XUg6tZEZhFNlflHBB2j6sDtOaYxfHDsr+EX9m63b2 2JVe9j3K3cGLv5g0+qg== X-Authority-Analysis: v=2.4 cv=K7AS2SWI c=1 sm=1 tr=0 ts=6a5de340 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=ee2akQ2MmfY_TRJwXSkA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 spamscore=0 phishscore=0 malwarescore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200096 Content-Type: text/plain; charset="utf-8" Similar like the normal exception handler the secure storage access exception handler needs to verify if mm is not NULL, which may happen with kernel threads. Reported-by: sashiko-bot Closes: https://lore.kernel.org/all/20260717132345.539A11F00A3A@smtp.kernel= .org/ Signed-off-by: Heiko Carstens Reviewed-by: Christian Borntraeger > --- --- arch/s390/mm/fault.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index 028aeb9c48d6..2839d7a64401 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -409,9 +409,9 @@ void do_secure_storage_access(struct pt_regs *regs) { union teid teid =3D { .val =3D regs->int_parm_long }; unsigned long addr =3D get_fault_address(regs); + struct mm_struct *mm =3D current->mm; struct vm_area_struct *vma; struct folio_walk fw; - struct mm_struct *mm; struct folio *folio; int rc; =20 @@ -453,9 +453,8 @@ void do_secure_storage_access(struct pt_regs *regs) if (rc) return handle_fault_error_nolock(regs, 0); } else { - if (faulthandler_disabled()) + if (faulthandler_disabled() || !mm) return handle_fault_error_nolock(regs, 0); - mm =3D current->mm; mmap_read_lock(mm); vma =3D find_vma(mm, addr); if (!vma) --=20 2.53.0 From nobody Sat Jul 25 02:43:16 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 3DDFF3D6476; Mon, 20 Jul 2026 08:58:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537930; cv=none; b=KUiHFN6fE58fyqri7cDFCeRhgaO22XoHnyshsmrBVk0dmhiq77ydehpKQW+UfiMfSt2AAcn3QEeQp1JgHTlX6thU45MovlJX4kNOk6snHK6Ue9ZjrYFWjp0VwyPaqu9qxkxNCj3MbI8+1A7z7k8e104/Fngp6OBwe6+JiBSCmis= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537930; c=relaxed/simple; bh=vCmvLDArPZy/NUup35qgdegCw9i5pFNHjjD61YwH2BA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Fv9uRiQWjwexaWVL4Y6fFAzft+kUEGn59ZgpiObnIzNsEO7WHIRyC4zAYIQAETNUlvgqoX0/09SsEMiRAu4Jwnm13lXf3t+/vg4cDuoA5IZYt/deAX+SOlBdmkokpriOW/46sOcwJqJuamwHuceURR+P0nol6w6ppgD/miBzJXk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=VCMFBM6J; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="VCMFBM6J" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K6fsUe1465765; Mon, 20 Jul 2026 08:58:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=WQkyUxtVb/VVZMZPX rGLYPGKt1Bd9s/iaj5r4la55mE=; b=VCMFBM6Jed4lKXpk0AULDej6bu3a0Px/0 aFp72LcURQ9QKRpnta1IXSAolJBtxxhWYbG75GXq8P1whp2tpyCanne0jjhm2z7u vmSq9RPY3J0e/xzyJsYDT1HyCtu6iyN1ub6K75H60BO02UK7TXib1jhkNw0YM40u JbXpVIr0MegbVs1RDVgRNwaVMT/ZY0jT9vQ6ys7lOJPZGx58HeHJ81wuOJXHXQdZ EviNyPqu40prya0h6PSRU49/7MMaq0rsrVvXrdulHg1mJ4U/2ZXCqOtSACSxQez8 ndJRJboSEOLs7H1q3bZ8aXdxNq0DAyTsP1oXVkfzEhPkp59yRkeeg== Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fg7agxc4x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:40 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 66K8nn46031500; Mon, 20 Jul 2026 08:58:39 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fgp1g4n2y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:39 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66K8wZ0W48103694 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 Jul 2026 08:58:35 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 88C322004E; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5EA9A2004D; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) From: Heiko Carstens To: Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , David Hildenbrand Cc: linux-s390@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 3/8] s390/mm: Use lock_mm_and_find_vma() in do_secure_storage_access() Date: Mon, 20 Jul 2026 10:58:29 +0200 Message-ID: <20260720085834.898025-4-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260720085834.898025-1-hca@linux.ibm.com> References: <20260720085834.898025-1-hca@linux.ibm.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 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: -BWV2YC7uN7sIcbYyppD6uZ0LlbVV1Zx X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX/eLwZiI86y8j FYvy+BwOXVEdI9XPrTFBZU4mC86q4MX3hMJHO/1K4xur8Ut2te6Z8o5anPEg+QZ1zYn6hJP0FMs uMfUFSTRk3zTIzME7u/Q/4wMyLN6Y4PyrAQ1eioocuRnf/jgo2uqmH5QekTf8kl+YgVIENKNXqU ghzdZXkedU3rjC1SgDd6c5LXS/pnHJHKQlIrcLqlf/gi0k4baUR4KiJi9Vrjk2KvitT12DXV/P8 djQDT3/wPVOrjQyTcSiBmI2uTn/EOt3d9A9DixFe9/DX2/zFg2FEEwowoiN548+N/XjMEsK5+jG KHW3HgnfgqxKSxNarINVj5xiZ7ccmZ7egwG43FV0qQxxp3CeVnfUjcA52HYMoerEKvUaArmt8/2 Rt3mQ4sNjhMXO/gLkufK83ragz+uZd3F88TcE2a7wVsfzLUpzBEBmoHa+Ts78Fkj7wACM3a1EUT PcRKnkMAzY9utrRUJXg== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX/A2aAZMDgXRQ 4WtFR/peyjZRHZoD5VrmD3nF3oQm7DI2mWX2dBN61Hx3ndSOwXibp4iFIrAJnOXZlE7inL3oLhL 1ONbmdaeGnwcMLiQgJqTMPBYSrSfbL8= X-Proofpoint-GUID: -BWV2YC7uN7sIcbYyppD6uZ0LlbVV1Zx X-Authority-Analysis: v=2.4 cv=SM5ykuvH c=1 sm=1 tr=0 ts=6a5de340 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=q1cbuJAsPhdWy6OxXkMA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 suspectscore=0 adultscore=0 spamscore=0 malwarescore=0 priorityscore=1501 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200096 Content-Type: text/plain; charset="utf-8" do_secure_storage_access() uses find_vma() without verifying that the faulting address is within the returned vma. Add this missing check by converting to lock_mm_and_find_vma(). This is not a critical fix, since the worst that could happen is a WARN_ON_ONCE() in folio_walk_start(). Reported-by: sashiko-bot Closes: https://lore.kernel.org/all/20260717093904.E4A421F00A3E@smtp.kernel= .org/ Link: https://lore.kernel.org/all/20260717093904.E4A421F00A3E@smtp.kernel.o= rg/ Signed-off-by: Heiko Carstens Reviewed-by: Christian Borntraeger --- arch/s390/mm/fault.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index 2839d7a64401..f150d97cac2e 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -455,10 +455,9 @@ void do_secure_storage_access(struct pt_regs *regs) } else { if (faulthandler_disabled() || !mm) return handle_fault_error_nolock(regs, 0); - mmap_read_lock(mm); - vma =3D find_vma(mm, addr); + vma =3D lock_mm_and_find_vma(mm, addr, regs); if (!vma) - return handle_fault_error(regs, SEGV_MAPERR); + return handle_fault_error_nolock(regs, SEGV_MAPERR); folio =3D folio_walk_start(&fw, vma, addr, 0); if (!folio) { mmap_read_unlock(mm); --=20 2.53.0 From nobody Sat Jul 25 02:43:16 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 3DEA03D6478; Mon, 20 Jul 2026 08:58:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537930; cv=none; b=H5wdHCMbOULt89X8knR0g0ioOvzjeOr+2P3mGxPxywe8VjhD8TcKMyzuJVwI1YlMMbC3uHz9UjVSwY8xOdA3/ViIeQHMQ9+V+aPz2++nj2GWjPdFWqEeSzQySCyJzHFmiH9y6MN+dhdkAcnmRExyboYBTk3IcRLcRiTaJzA5d30= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537930; c=relaxed/simple; bh=MWTPZS5lx0atrLjiEqr3hlHJCq2JP9RkV1czBmu0Vgg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PBrXHRMGAqg5pjjdcw51HeCQC4Uy/3YhbmvlvV0QiHpkKO1OcteWXm8GRgykH95FLHRumxvX5a5DXe/MvwKbL+0cNtPR1DvKhpbEBNKBEWmT4TOutnYXCK9hECF7Tvel7HPDrdABcSx0CTPPtVFYziC3psKyZVIF5n0pG8xrEZs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=WaxeHtlh; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="WaxeHtlh" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K6hM3u1468890; Mon, 20 Jul 2026 08:58:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=Rx96jILEkXTyn7zof u7vcAVAXb1hJZc/0eVKU1nhskE=; b=WaxeHtlhlBoLAV6y5aQDcwDB0kxUxp3PF p0+0z4VCVtd54/5UTLQqXZe6m/1r6ZnbPQGVW8zKXwqmWuE59AdO5NN52gtPCFls SHfdzfGcp0IFRiZnx9GNz+d6oXfdErIAY39GoH/rhUTufnI6q3JdVsYE+Y1O9glM Uqgp83xfMiLF0dR2+yapx30Mx+M7hwXYJjkfgMO81nosWOYg8fB2aLuWJ0ydeKvl bRbrg3oB5scu8wc/o86NBJQG2/DKai4Pbce2v3vyY2+foLAaSa2Ns3Q7rQ4YJGXL RUqKJsottyrASpSIoN3ZBkKQhdazhUhxsSXNr/BvCMJFEYvzoHTwQ== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fg7agxc4y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:40 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 66K8ncUI012958; Mon, 20 Jul 2026 08:58:39 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fgpgy4hsk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:39 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66K8wZjF48103696 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 Jul 2026 08:58:35 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BAC002004E; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8CCB520040; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) From: Heiko Carstens To: Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , David Hildenbrand Cc: linux-s390@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 4/8] s390/mm: Fix handling of vmalloc area in do_secure_storage_access() Date: Mon, 20 Jul 2026 10:58:30 +0200 Message-ID: <20260720085834.898025-5-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260720085834.898025-1-hca@linux.ibm.com> References: <20260720085834.898025-1-hca@linux.ibm.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 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: Ii27NQZkLbIc3OV6nmq6aVacUYtbZdbs X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX0ObMi2BZ33oT 7KUJsxGnRwR5w6kclFyiLKiqSeTYaq3f9OkBiYIp3qXxB/nCFWiWhFrDyCvK0gpujezw6BTfEXb eN8fHYPMNoVoq2a8zwPVyzqBU0Nr0OBSzBVjm3BBtS8NBq88GriLrlTqOUWj+peVC83yl+ST18X UPEotqAh4bf075wvkVeXckxleKWuzvLom5HWzeEAlvQ2U4OabqMU3hVAeJGfMFv+Y1ajKsvPGn+ COuI983tNfY0v5pviXReRmGfkuuYj+bFk9sMlHhnRTrSP/AzgrBbWO0MOu1sRy4MtrUQ9EW9M/v G1SHBKJjtIQvgM0yzAx8f2Ots5e4dA+69VOwVDJ/I9RrwE2EYcPy+c8YX7EmCa+GDRfSg4Ssb50 EcdpxaHK6sTDkmi4wotBMu2G6FojSByCklxdVa2Ui0sZpN6ua3wjQwDLVIY1J+0nouhk6hlBzCX Ejkty0LLUSUfkcLvhaQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX4zDbmKDKoBT/ +H2CDvzun3y/tzcOo93tzQ8iMjt97pZ0rS5yzV5VWruCE6m4BOoYH2CNu127/wzjEsXxJoRXkW+ oj51cZJ9IAybc7w+bUdePyvKAOsTJTg= X-Proofpoint-GUID: Ii27NQZkLbIc3OV6nmq6aVacUYtbZdbs X-Authority-Analysis: v=2.4 cv=SM5ykuvH c=1 sm=1 tr=0 ts=6a5de340 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=aTeQ_7Lur19LOBhsqlcA:9 a=zZCYzV9kfG8A:10 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 suspectscore=0 adultscore=0 spamscore=0 malwarescore=0 priorityscore=1501 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200096 Content-Type: text/plain; charset="utf-8" Secure storage access exceptions in vmalloc area need to be handled separately since folio_try_get() or virt_to_phys() do not work on such addresses. Given that there cannot be a valid access let such exceptions fail immediately. The kernel will either fixup or crash. Tested-by: Christian Borntraeger Signed-off-by: Heiko Carstens Reviewed-by: Christian Borntraeger > --- --- arch/s390/mm/fault.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index f150d97cac2e..e650cdfa2523 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -438,6 +438,8 @@ void do_secure_storage_access(struct pt_regs *regs) panic("Unexpected PGM 0x3d with TEID bit 61=3D0"); } if (is_kernel_fault(regs)) { + if (is_vmalloc_addr((void *)addr)) + return handle_fault_error_nolock(regs, 0); folio =3D virt_to_folio((void *)addr); if (unlikely(!folio_try_get(folio))) return; --=20 2.53.0 From nobody Sat Jul 25 02:43:16 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 7AB13306768; Mon, 20 Jul 2026 08:58:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537923; cv=none; b=n70AB3nY7MtbjV6piNDqUAEnblHmBUxFoe+kRfY+WS2o/6JsIt0pb54kDMDml3SiSn0KyzAV8OYDrrIkIfoXBTJWpj2sYEmhx1jjLrNx6QIJu/WQuW07bbJxP5/Sgk4oS2oLYrC+fF8v57VUxrZbyarOqOCZEepuXYvV/Nrcwjc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537923; c=relaxed/simple; bh=kt/IaOFVul557FqevKqMSkljaUYBNNzywr8px+IDhvw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Yn5DWcC+IP7DFyXNqisvQgW8gXAN0nIgkDCKTCsbmdWTSLvDgz58jZ+iYqz6Fe65KjMUOCFYypPGch4zRSj5UTecA6TIioVwUdLpdFOn7VyM0WqtFsra1U9nMTORFzyXhsGGsgbT6x3dVrRzs2BLtal2Vjj1gyrGdSeSZ/Dr70c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=WmT/oAcE; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="WmT/oAcE" Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K6fnlI3777390; Mon, 20 Jul 2026 08:58:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=t4ZnftpYbbLC2ucKQ zkh5yaupKRJNl/rZPqRGt4bVm0=; b=WmT/oAcEpJ80VfW4piAZ5uJYHeKWQOkkv RBPOhmeTkFSJnDvmRkb+1OTXQhb1TtCk58ST58gBLOBJjUw/EBTGAOw8K8f4JCcI ob68+ji3foN3Qy/nFLWlXw4MuF2Fb1WlE0bXJX3ldfhoSIpj62FlIqPy4CD1KYZo Ooy1aTvj60fa2sIdup0tP3cAk6ynlRKPnm/sDku1Jm2170VC0VM/4FY2ICQAcwm/ /eyYpOz92xyYa74doEglfIC3DspEgoVTVUBadw2WAEDm+ypT3DaAkMDxOy2OTqSz iCPzUJbSS7k3F5PiA0JFmd9e3Ucr8WbisdfTidIqXtVIAIWG3uOKA== Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fg77a6m83-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:40 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 66K8Ygnn030004; Mon, 20 Jul 2026 08:58:39 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fgktpw0h6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:39 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66K8wZpr42664428 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 Jul 2026 08:58:36 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DD83720040; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BB7CF2005A; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) From: Heiko Carstens To: Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , David Hildenbrand Cc: linux-s390@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 5/8] s390/mm: Remove folio handling for kernel faults in do_secure_storage_access() Date: Mon, 20 Jul 2026 10:58:31 +0200 Message-ID: <20260720085834.898025-6-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260720085834.898025-1-hca@linux.ibm.com> References: <20260720085834.898025-1-hca@linux.ibm.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 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: IoJiaYt6Ppk79OyiKpVJiNY1eP2jEqPN X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX1AbA0DpWOZWV okNoKHSSPIa/jNG6wkd9HWfGC+C+lDxeV097DB6SWtpb5dKYVKO/lJpN2z2SlnpN/rlHFRKvh8W +J6M69PkTyDnS+8SVuT4ronHpeQaUmA= X-Proofpoint-GUID: IoJiaYt6Ppk79OyiKpVJiNY1eP2jEqPN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX3PjVCAYStjig 0fMou9BDPWrPoG66WlHscZXVDW4dmNZEIYPzQF1F641F0MKs1M7nOJjn9ND/Coxue7Oab/3+LUe Sc9DeIX2g4PVUGDAc0VdnOzJXAUir15XEPZ1EjfLEIw1ls+1OUpA7DN6XNcwsrBCNcRZkyVjxqh llSW397gdrHtPKe/JZmQ1U2dO8bxGmB0H5b9X8VgA0J3slSvLLnDvyiRuvWW1IGRM84WsgZLQLE UDd+kylKXwf0jMr8Gh96pgpgibZXP4jD2QYfuWk9O4As9L1zovw1D28vhuRQMZ6bsD7RQkX+zvP ZWMixLZ4v7/lT0UGTpFnAn27U1hAwLXAfcl40ZRPRenw6hcq7b84pMSZtUGnNgfiI0SERF3Ks8a c+wFGYkYfvVGqIWhVjoOwqyIE/tOLgdb7k6eZhRfsMaojFOigPbdGiLwvMVd8u2gAXqQVbb7wpv E3OH62+bkVTn4o3gCIg== X-Authority-Analysis: v=2.4 cv=K7AS2SWI c=1 sm=1 tr=0 ts=6a5de340 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=3bIF1FMAx5P9TMvWi0MA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 spamscore=0 phishscore=0 malwarescore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200096 Content-Type: text/plain; charset="utf-8" Remove folio handling for secure storage access exceptions that happen via the kernel mapping. Using folio_try_get() for exceptions via the kernel mapping is racy: for example such an exception may happen on one CPU, while a different CPU frees the corresponding page. Subsequently the page can be part of a folio of different size, before the faulting CPU executes folio_try_get(). This may lead to data corruption. As of now this scenario does not seem to be possible, however with the upcoming load_unaligned_zeropad() this is possible. As a side effect PG_arch_1 is not cleared anymore for such faults via the kernel mapping. However given that this bit is over-indicating it shouldn't matter. Tested-by: Christian Borntraeger Signed-off-by: Heiko Carstens Acked-by: Claudio Imbrenda Reviewed-by: Christian Borntraeger --- arch/s390/mm/fault.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index e650cdfa2523..776549d55c94 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -440,13 +440,7 @@ void do_secure_storage_access(struct pt_regs *regs) if (is_kernel_fault(regs)) { if (is_vmalloc_addr((void *)addr)) return handle_fault_error_nolock(regs, 0); - folio =3D virt_to_folio((void *)addr); - if (unlikely(!folio_try_get(folio))) - return; - rc =3D uv_convert_from_secure(folio_to_phys(folio)); - if (!rc) - clear_bit(PG_arch_1, &folio->flags.f); - folio_put(folio); + rc =3D uv_convert_from_secure(__pa(addr)); /* * There are some valid fixup types for kernel * accesses to donated secure memory. zeropad is one --=20 2.53.0 From nobody Sat Jul 25 02:43:16 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (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 A14743D649F; Mon, 20 Jul 2026 08:58:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537931; cv=none; b=fAZ+qWoz3h4yyJRkD76ZjVy0T1bpwgIXljI+jCyeDpr+18LPZlI3M8mh9rG3Ga2bY8CJeWls7QvUv6ahIfXeXjAU9PNIDhlojOISnPWtp0mUGvu257uR8bh/duJ9ed8KTTse5+H+Kkd/8B8Nuz4N9+YLRZFiKulNDr2JNWfScg4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537931; c=relaxed/simple; bh=eNRidEd65WbskKsNUG374nddQ1yOcZ0etFeG9hNp4bs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XYecpb59kkctx7Od/0z0rR1oyvNK1SDPvZII8HCx2UE7aCeRYjgrj6lvVzaRVI6Ihcp+rgQzxeSStrFBwse07miY7cSaleDMy83jPrh2+zirFhXIYAwM7CjAjzlU4S5EEUJu68PURZNS0om5pzp8kspH2KBbN2NH6evXWOjzhi4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=cvVKR8xp; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="cvVKR8xp" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K6gJRM1466769; Mon, 20 Jul 2026 08:58:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=iLonAh27KA1dUzRIE 7qsVRrnDCoMYkRUBsqEvkY4A9Q=; b=cvVKR8xpcjlU9TC2fUZ6znxmtjizZ2bxv +q9s1pN5Ho8l5cV1dKfj7KSp2yyr6gQrfOdkjoeWuX60OfVuyDL3sse0IY4n3OpX TtcsYdv/nGR20AUUGstizZ72xHoKkMTp+OkCgiTMt3blJVO3Xrbyc/MfDbGytuSR WQOw2aRixULuxDD1ycXDtkY1zcUlcQyZB7rsyqYcB9RtuSFA9RMpDdUaSOTdqx6g qWQ0mTnt2B0kKJXqjDPvtTdIzPBJbV1Wy43g51c0ke/lJ92izcl5lDe6XFbcumOc 1pY5l72Z5VWL+ewdQWv/Qw37HF+EqDSVIj8/wvJpGcyZIL+ECNP/Q== Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fg7agxc55-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:40 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 66K8nobx030895; Mon, 20 Jul 2026 08:58:40 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgm6vvxdb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:40 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66K8wa0750332152 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 Jul 2026 08:58:36 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0FC362004D; Mon, 20 Jul 2026 08:58:36 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E1C2820043; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 Jul 2026 08:58:35 +0000 (GMT) From: Heiko Carstens To: Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , David Hildenbrand Cc: linux-s390@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 6/8] s390/mm: Use handle_fault_error() in do_secure_storage_access() Date: Mon, 20 Jul 2026 10:58:32 +0200 Message-ID: <20260720085834.898025-7-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260720085834.898025-1-hca@linux.ibm.com> References: <20260720085834.898025-1-hca@linux.ibm.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 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: oY2_iXqZ6prIiWbjudJkZzSpS2Qq07Gd X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX4LFCql82Fj5+ Vle2c7tgiydOS8C6I/l2HP6VRZOhFLevRjhG5bQcwcUVLGkGkbVHsW9ETb19RPMH14+tLHXDOXN 9cjW3K7ZAD3Fsm4lT6QzJesXeme2TOYYa03rZKnudFaY1YE/rmMD70F4EZPUpy01zqP3Ztgi6gw wirGV6tuRiwo67NdNAkpZ/UcnaDYoZCphbVREiYcy2Pm6mjg29rTefpjM4t7WaUNANNdcFHcAYe CZIzkbvtYnLn+3QhdrcNWqK5c3HTVXmraBmnG/WqIWMt65rmON+vFzkFjCeTcTFTIhmLq+nOZBu p2GtQpMYpQZXjHYs1+IkItmq2zIwm1VYqNrB+Vauu3JFmDhsnvHo5xRzM8D3m5VtiJz07xij0De ZTNXacs7jrW8ijlrZggMAhtYQy0uKuBVeg3getLvGl2jyMe24AGd3Eyiziq6HHBL52Yi+O2LoUd kDpFHcEXFPdDNTjllXQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfXxFJeeLEb8OaQ 9qwtjd4W3yGM6nt+5Bbp48yZbHGLASJgPdN31MGosHHoAbEYaV8ZvcaM9kws6wR2N6HJGQtTasu JtYlfN+ol1Kh7s/FG4GxUWs3J48cRB4= X-Proofpoint-GUID: oY2_iXqZ6prIiWbjudJkZzSpS2Qq07Gd X-Authority-Analysis: v=2.4 cv=SM5ykuvH c=1 sm=1 tr=0 ts=6a5de340 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=RAioF0-LDSMA:10 a=sWKEhP36mHoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=V6R1L1_PctZKwmwOSmMA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 suspectscore=0 adultscore=0 spamscore=0 malwarescore=0 priorityscore=1501 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200096 Content-Type: text/plain; charset="utf-8" Similar to the normal exception handler use handle_fault_error() which handles accesses from user space and kernel space differently. This also addresses failing kernel accesses via e.g. copy_from_user()to user space: instead of an endless loop, the fixup handling is performed. Even though this could only happen if arch_make_folio_accessible() would permanently fail, which is not realistic. Therefore this is rather a cleanup patch. Signed-off-by: Heiko Carstens --- arch/s390/mm/fault.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index 776549d55c94..2a9b9fb30d09 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -427,10 +427,8 @@ void do_secure_storage_access(struct pt_regs *regs) * was not supposed to do, e.g. branching into secure * memory. Trigger a segmentation fault. */ - if (user_mode(regs)) { - send_sig(SIGSEGV, current, 0); - return; - } + if (user_mode(regs)) + return handle_fault_error_nolock(regs, SEGV_ACCERR); /* * The kernel should never run into this case and * there is no way out of this situation. @@ -465,7 +463,7 @@ void do_secure_storage_access(struct pt_regs *regs) folio_put(folio); folio_walk_end(&fw, vma); if (rc) - send_sig(SIGSEGV, current, 0); + return handle_fault_error(regs, SEGV_ACCERR); mmap_read_unlock(mm); } } --=20 2.53.0 From nobody Sat Jul 25 02:43:16 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 AF72C3B71B1; Mon, 20 Jul 2026 08:58:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537923; cv=none; b=U+kpwbgOa/LzdbPBLC7jJeZFRx7bQjxC4GtdjxFu7HdnOPOg+929mPzQ3F1i6Qs3lvZ9P4mOHmgd4AYJT3OyZmYAJhpWuVp3RWtN8Pl2CTQoqQO0zVnzA5uiD0AsJEK+gMahjAyGMEPEup7oT5Eq5VSgIigIZAx8VSRcwDxqDAw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537923; c=relaxed/simple; bh=2Mvr2aM+Okn6Eoocy0JzIG4MQY1TWan1vMVEGgo4EdQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GFtrC3oYry4TkiuE3ZYR4eProtrBUuaJHnq64zrYY5OLmPklFRZkm4ZM0SBr1E9rEHGs8K5VR70NYgsEsPrpiLqA0Tkqs8xQQ7VRvA7+YsfJcaoVgTdahXACOrPCK7QVi4B9tyduwLVp1ct+mky2PUwVNJgcZJAM1jt95qOUEyI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=KYvUP02P; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="KYvUP02P" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K6fiY81469886; Mon, 20 Jul 2026 08:58:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=BvQ4XfaSURMM524T2 d/WdRXrto9t8TDVudWJ2Vk7l6A=; b=KYvUP02PigdD0RjuHTGCI8bcGovutFLcN vdBaAmZO6CSd/7EPXn5HCqZ2KlEgeeGLHTTYGHd3UheZ9YVuBO35JUq3NNJPa0Xy fFURk76ZOhVviEso/zQL3pNDlP5cmF4tGLsDV9BTZAbCom7AvNaXSgvsHtYGRgvF L+7AHouReiO0X9T/qkN4jH3F7lufDmioboBtekGS1pv4SZlRh5hlLJymma3qjqC/ tsl2FakSN3O159Kk6gPDeP5vYYALOwu+CFuCrohOLDv0kddAfuoJLn2w/Tzs+Qb9 xd127zPoUc2IbZCl/qNW4R5JMg2HUj+ofyDGrxI2pgjmoi2fRz2hQ== Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fg790pma2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:40 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 66K8nh7S031459; Mon, 20 Jul 2026 08:58:39 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fgp1g4n32-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:39 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66K8wa5C50332154 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 Jul 2026 08:58:36 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4052B20043; Mon, 20 Jul 2026 08:58:36 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 156C720040; Mon, 20 Jul 2026 08:58:36 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 Jul 2026 08:58:36 +0000 (GMT) From: Heiko Carstens To: Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , David Hildenbrand Cc: linux-s390@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 7/8] s390/mm: Use goto statement in do_secure_storage_access() Date: Mon, 20 Jul 2026 10:58:33 +0200 Message-ID: <20260720085834.898025-8-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260720085834.898025-1-hca@linux.ibm.com> References: <20260720085834.898025-1-hca@linux.ibm.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 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: DkiE0FkIQwj-qSfwOa1dqU-N5cJlqqSD X-Authority-Analysis: v=2.4 cv=V6RNF+ni c=1 sm=1 tr=0 ts=6a5de340 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=UvXp18jeiaLpj9j1RWUA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfXxd4J4b5NAcpX fVjnYpNmyWqJZi7hkSDTychSJFrCGx5NEWXGCwa1KlH61LrzURIaZTKraVcM5K/f3hcp/EY2+pV aNgTJBizYOThVM9WTubhub3du6oVl1Y= X-Proofpoint-GUID: DkiE0FkIQwj-qSfwOa1dqU-N5cJlqqSD X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX7clRZPeF0DLs CcB9ygWaeo/sEFkU5dLo+3EWP8C5lo+AvR1aM6MBSJ8yfUvC7QDfI8mSqP+VYmbO0Wrp1bjSHkV Oya0+U89nYE1FUzG9itt8mEDs9letPM3Ktkm7IhF6TJgDMCiD/OplSQV+8QcqABpli4eTonNIr+ Z5zvia84elfM2pN6ISRanmAtS0ePAJhTvMGBAaBdychANn3LQIsk3GJjNHy28t45kmmm/0C/UTN 0bkKp2MmWQpN4nLbVyQVH2yOAZ1nbRdJ+v2TbktsP/FR0M8sj3ae9AhTG08IqJJTl6N1TcWYYGJ tw0PA1/myotmqFL6qYqlP0R4VPsWYELt+Xu4GryfQWPahWits/linlpJaDvssQVA9f4s94BtJ6F sJ5y9aWCCfUo50yC+2JLbMYiOuBua7yxoYAc9TctKyHP68098uyEimD+VMTe8KJmykwztSBB3eA Z8PHPB3wuKPyDuQGMYQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 spamscore=0 impostorscore=0 phishscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200096 Content-Type: text/plain; charset="utf-8" Make do_secure_storage_access() look more like the do_exception() by using a goto statement to get rid of an extra open coded mmap_read_unlock() call. Just cosmetic, no functional change. Signed-off-by: Heiko Carstens Reviewed-by: Christian Borntraeger --- arch/s390/mm/fault.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index 2a9b9fb30d09..666fe8e99480 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -453,10 +453,8 @@ void do_secure_storage_access(struct pt_regs *regs) if (!vma) return handle_fault_error_nolock(regs, SEGV_MAPERR); folio =3D folio_walk_start(&fw, vma, addr, 0); - if (!folio) { - mmap_read_unlock(mm); - return; - } + if (!folio) + goto out; /* arch_make_folio_accessible() needs a raised refcount. */ folio_get(folio); rc =3D arch_make_folio_accessible(folio); @@ -464,6 +462,7 @@ void do_secure_storage_access(struct pt_regs *regs) folio_walk_end(&fw, vma); if (rc) return handle_fault_error(regs, SEGV_ACCERR); +out: mmap_read_unlock(mm); } } --=20 2.53.0 From nobody Sat Jul 25 02:43:16 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 A66C13D3324; Mon, 20 Jul 2026 08:58:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537926; cv=none; b=LRchCj9zsQsit7qFgaRIMDHzw91Q/DwBqi/gFuXycQ3M2lC9ikmdMb88pGXqqF63MNtPNK8l/DdHUPm0TG12Wwxw2WdBKZ7/bwlvfvvhfXdcyPSzhuZFJBP4T39KclMQ0X98aJxk/pCW7d1HgyfR3/lXiEyGV7bUBxtAooHuuV0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784537926; c=relaxed/simple; bh=mq+7Hjma1D/CJ3C7xoD4JKAYeJNhJFF8tW/av0J4vr4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jzoHDLxHRnqQ5KtLRQ5UPn82RUbp+fk2w5Iel2Sc91m+01yhluNWUpDaOXHrpelY/ZeJtFAeciuhTaRd1nu3FaDZTSZ6G0G7/WvMznjityPjfqQVaXGdOOy5do0f2iZOodEGfkBb4B5T647DifacjlqREaTNgjfJergsiEbEqak= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=YQrc4AHB; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="YQrc4AHB" Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66K6g73i1471171; Mon, 20 Jul 2026 08:58:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=64/77CkVHpdXmw95j a1WPmh0G0GKWz5vBHXIbipy0jQ=; b=YQrc4AHBpXtWQwkszCyYjnTOyTkJMGLTI +1bYZzGhoEQr94PK1s13ob8kQIVEqAAal3LVeVpAtMd45yltd21m1YogycGdstz2 NKjn3GxcsPIc8FLhDfw/9Ez8NdxwiTeGQFYGHtpF67TD0WFsUVv9EafykPW6sO4D jyuVQCemmuERf+qWFmmRxqAjUfjn+WYO3ujMUc/wZ5VHpFD0xoFRbr69Pgu9c5qN c1NOAVYupeCJBDg7c0LEeknOSFMZFTLvxI7t972Yqjb/RQ24hrNhe6hh6QNQ3hFF Rdz0/74VApfkGsoEXOvXWHj+J0tX0yL5vZ4E1Lq/HLeswRm9ghfvA== Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fg790pma7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:42 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 66K8nejR030858; Mon, 20 Jul 2026 08:58:41 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgm6vvxdd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Jul 2026 08:58:40 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66K8wanw50332156 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 20 Jul 2026 08:58:36 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6629620040; Mon, 20 Jul 2026 08:58:36 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 448502004D; Mon, 20 Jul 2026 08:58:36 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 20 Jul 2026 08:58:36 +0000 (GMT) From: Heiko Carstens To: Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , David Hildenbrand Cc: linux-s390@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 8/8] s390: Add support for DCACHE_WORD_ACCESS (again) Date: Mon, 20 Jul 2026 10:58:34 +0200 Message-ID: <20260720085834.898025-9-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260720085834.898025-1-hca@linux.ibm.com> References: <20260720085834.898025-1-hca@linux.ibm.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 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: m60J41a8HxGUtbb3P5_tJFyqvA7_BeCy X-Authority-Analysis: v=2.4 cv=V6RNF+ni c=1 sm=1 tr=0 ts=6a5de342 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=iX4AGcIGDbhQ4BFKoYkA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfXwNp3ur+bQR1H +9dcpAYKJZdqUGjVV4Q9Ipxhun+F9jREmaVkPmib5FnxHEWrE99skfiLk3lSnV/57KtfV7M55LS IVjLFc4DSkLiKdEiVCx2u/Hx9ACwbZE= X-Proofpoint-GUID: m60J41a8HxGUtbb3P5_tJFyqvA7_BeCy X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA5NiBTYWx0ZWRfX6BWk8y8cX4Dg 3DRzmLCU47716ANPTd6N33yIIU2YyJdxuLkMShoG9pSHXBOsPS9FIgP4wnKnbjSvV8VYNfb7FkB XmKXdnokCkAGH4X4s30M3bePI1Z0Ts1V5Enw5d7+msClVBmItghtfagTfFu47wfzLKgYWv8S2q4 wzFXPoJ54gRgU3rdG8Cs9iRLgTg8GJvRzPfolhCQpBxfHAtpVTSAgCPKwbLdd3uU2jCcn6IquFP Re0VN2tTRc71FMsR5MfOo7++pSHLxWQgUd5FmO6zC3pHH9KDdAeuzRhexGnUQym+KsE0X3mN9cF l0+V9XSQTcfCX8aGjcDxlHnTAC9aBYzBn62nq7iMVxLQAOw8TwA/YFJyJXurNK2d6ge5WlQ6A9i LNz4wtB7D4ItsnzvRqKZomQ06LBKr5q5zbaxEOypPqv+7B4FCrHmeDapx8hKzgLyYp0lflcDtRF X9GoOjFpDLLSFcjbLGA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-20_01,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 spamscore=0 impostorscore=0 phishscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200096 Content-Type: text/plain; charset="utf-8" Implement load_unaligned_zeropad() and enable DCACHE_WORD_ACCESS to speed up string operations in fs/dcache.c and fs/namei.c. With the secure storage access exception cases addressed, add support for DCACHE_WORD_ACCESS again. Tested-by: Christian Borntraeger Signed-off-by: Heiko Carstens Reviewed-by: Sven Schnelle --- arch/s390/Kconfig | 1 + arch/s390/include/asm/asm-extable.h | 4 ++++ arch/s390/include/asm/word-at-a-time.h | 22 ++++++++++++++++++++++ arch/s390/mm/extable.c | 18 ++++++++++++++++++ 4 files changed, 45 insertions(+) diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 84404e6778d5..fe81c539ef2f 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -163,6 +163,7 @@ config S390 select ARCH_WANTS_THP_SWAP select BUILDTIME_TABLE_SORT select CLONE_BACKWARDS2 + select DCACHE_WORD_ACCESS if !KMSAN select DYNAMIC_FTRACE if FUNCTION_TRACER select FUNCTION_ALIGNMENT_8B if CC_IS_GCC select FUNCTION_ALIGNMENT_16B if !CC_IS_GCC diff --git a/arch/s390/include/asm/asm-extable.h b/arch/s390/include/asm/as= m-extable.h index 99748c20e767..d23ea0c94e4e 100644 --- a/arch/s390/include/asm/asm-extable.h +++ b/arch/s390/include/asm/asm-extable.h @@ -12,6 +12,7 @@ #define EX_TYPE_UA_FAULT 3 #define EX_TYPE_UA_LOAD_REG 5 #define EX_TYPE_UA_LOAD_REGPAIR 6 +#define EX_TYPE_ZEROPAD 7 #define EX_TYPE_FPC 8 #define EX_TYPE_UA_MVCOS_TO 9 #define EX_TYPE_UA_MVCOS_FROM 10 @@ -79,6 +80,9 @@ #define EX_TABLE_UA_LOAD_REGPAIR(_fault, _target, _regerr, _regzero) \ __EX_TABLE(__ex_table, _fault, _target, EX_TYPE_UA_LOAD_REGPAIR, _regerr,= _regzero, 0) =20 +#define EX_TABLE_ZEROPAD(_fault, _target, _regdata, _regaddr) \ + __EX_TABLE(__ex_table, _fault, _target, EX_TYPE_ZEROPAD, _regdata, _regad= dr, 0) + #define EX_TABLE_FPC(_fault, _target) \ __EX_TABLE(__ex_table, _fault, _target, EX_TYPE_FPC, __stringify(%%r0), _= _stringify(%%r0), 0) =20 diff --git a/arch/s390/include/asm/word-at-a-time.h b/arch/s390/include/asm= /word-at-a-time.h index e9287036392d..eaa19dee7699 100644 --- a/arch/s390/include/asm/word-at-a-time.h +++ b/arch/s390/include/asm/word-at-a-time.h @@ -4,6 +4,7 @@ =20 #include #include +#include #include =20 struct word_at_a_time { @@ -40,4 +41,25 @@ static inline unsigned long zero_bytemask(unsigned long = data) return ~1UL << data; } =20 +/* + * Load an unaligned word from kernel space. + * + * In the (very unlikely) case of the word being a page-crosser + * and the next page not being mapped, take the exception and + * return zeroes in the non-existing part. + */ +static inline unsigned long load_unaligned_zeropad(const void *addr) +{ + unsigned long data; + + asm_inline volatile( + "0: lg %[data],0(%[addr])\n" + "1: nopr %%r7\n" + EX_TABLE_ZEROPAD(0b, 1b, %[data], %[addr]) + EX_TABLE_ZEROPAD(1b, 1b, %[data], %[addr]) + : [data] "=3Dd" (data) + : [addr] "a" (addr), "m" (*(unsigned long *)addr)); + return data; +} + #endif /* _ASM_WORD_AT_A_TIME_H */ diff --git a/arch/s390/mm/extable.c b/arch/s390/mm/extable.c index 063b4346742d..7498e858c401 100644 --- a/arch/s390/mm/extable.c +++ b/arch/s390/mm/extable.c @@ -50,6 +50,22 @@ static bool ex_handler_ua_load_reg(const struct exceptio= n_table_entry *ex, return true; } =20 +static bool ex_handler_zeropad(const struct exception_table_entry *ex, str= uct pt_regs *regs) +{ + unsigned int reg_addr =3D FIELD_GET(EX_DATA_REG_ADDR, ex->data); + unsigned int reg_data =3D FIELD_GET(EX_DATA_REG_ERR, ex->data); + unsigned long data, addr, offset; + + addr =3D regs->gprs[reg_addr]; + offset =3D addr & (sizeof(unsigned long) - 1); + addr &=3D ~(sizeof(unsigned long) - 1); + data =3D *(unsigned long *)addr; + data <<=3D BITS_PER_BYTE * offset; + regs->gprs[reg_data] =3D data; + regs->psw.addr =3D extable_fixup(ex); + return true; +} + static bool ex_handler_fpc(const struct exception_table_entry *ex, struct = pt_regs *regs) { fpu_sfpc(0); @@ -118,6 +134,8 @@ bool fixup_exception(struct pt_regs *regs) return ex_handler_ua_load_reg(ex, false, regs); case EX_TYPE_UA_LOAD_REGPAIR: return ex_handler_ua_load_reg(ex, true, regs); + case EX_TYPE_ZEROPAD: + return ex_handler_zeropad(ex, regs); case EX_TYPE_FPC: return ex_handler_fpc(ex, regs); case EX_TYPE_UA_MVCOS_TO: --=20 2.53.0