From nobody Sat Jul 25 03:45:58 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 113131A3164; Sun, 19 Jul 2026 13:00:14 +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=1784466016; cv=none; b=OJNqswEnIHaxLxJShbfw23oRAUKeb7hvmp+dJilvAh6HLclbCy5EX02xkINJ/IPOIoC8taNjlLSBUidwCtdSEq3ddrmPPmkZ5AtTQjRQ65wq5UanY7drOcFRr2CxT156x3y2Gh4AyzRH/m4bTJwjGnkNYHxzjEhNSTqnOYDPb7c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784466016; c=relaxed/simple; bh=x8LRonAOeThlNJvvK2i/qfi2Ll5J9XL/z/7Sty4mpuA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=M5MipSpaxlfRRqvO3uX9PAYDAKP0L/w5+qAMWEF8YSFUOauXhDQPDinxbsNxDsdw6ZIOvv1ZhCLaiQhiBkrmJiMiG8piH5uoIIyg/mioezETBMYUFYJzdYV9IwBAOiz6tKPTAw8xyjC65wPiflwDA5YpppKUSlU3TTOEGwrIkew= 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=oui7nLYg; 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="oui7nLYg" 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 66JBBnKF3359253; Sun, 19 Jul 2026 13:00:12 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=oui7nLYgSi8F3YeTo3fT28RXRIuCv80Z9 7D1qwm/DMBbMcEIdnjK4lpiz/KaW51iwOdwLpwiBUOjoaKp27ATUdc3xp3ozTrK8 5i42KW6kBIgxHfDnWu0CSla0c2gZoH5yfg0LH4mCXZvdCSsRI+YFvz3mTudWONbr XSxF0VH3bKiKsD320g0dEWKU4BBE67OM+7wXcZBcE6Px4R9bJaB4iDGNHkG3RKAW DcAll5ncW+EzbVLaFiYqG5PzU+x0TrzWkiAuOBqDMIaqH7HDUZ1wu5ioO7m8sxhi hf0igIQcwBVEdO66q74JpapHxQLxYiwgSl8ySEExdCczz8EPkKRHA== 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 4fg790kfhf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 19 Jul 2026 13:00:12 +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 66JCngbF016549; Sun, 19 Jul 2026 13:00:11 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgmtjhnbk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 19 Jul 2026 13:00:10 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66JD062x48693584 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 19 Jul 2026 13:00:07 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CCD7920043; Sun, 19 Jul 2026 13:00:06 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A02842004E; Sun, 19 Jul 2026 13:00:06 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Sun, 19 Jul 2026 13:00:06 +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 v3 1/6] KVM: s390: pv: Use VM_SPARSE area for guest variable storage area Date: Sun, 19 Jul 2026 15:00:01 +0200 Message-ID: <20260719130006.3882764-2-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260719130006.3882764-1-hca@linux.ibm.com> References: <20260719130006.3882764-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: SBlZJ7HPS7tAQkg0CQEOpi9VdtiNuP_7 X-Authority-Analysis: v=2.4 cv=V6RNF+ni c=1 sm=1 tr=0 ts=6a5cca5c cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=CGB7rVRhuG4dzmKA8wAA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE5MDEzOSBTYWx0ZWRfX3c5Z1x8A52F1 DvY9B3vSVTA43RiVLvPX5sjBURhwhmCcMf6DczDz7UpX1Ou0/QAYoPBinqYf55vIyCWPYZecsVY UjycgvU+webprrEfRmYcjSxW38X4hS4= X-Proofpoint-GUID: SBlZJ7HPS7tAQkg0CQEOpi9VdtiNuP_7 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE5MDEzOSBTYWx0ZWRfX1CqbSSoiXfsD E9wvGTxHf1losLR3UyJ2W2enDwQ2KUH5dv+0u1CoLNWlHT9LI+/ZEuA3J8kCuTRFJAFK3UL2s1r r9eahtRPJUj086BNCTYnz2zxDnsn2sTMEzR2q9Up3TG18lF5gMbBn+5a/Z82HrmEGul9U5MxVzd g43mNoV1pBqKz8Kc3U6rk4y7fSsuc3lRO4d5LRanWmEdWEbDf8kTD6SafXIHIXUjkKkPJJ3RYjI 0LcC6nsjRihXhdm5MVypV/72oxO11BvOehU4KFAuWQhwkJrl4HSQfzhrVOJfhpNkWTDABMCvZkf uMi7LSEMX2t33ZCEDWPPFGe1fW8Iuj6mtiOCuxfttHjUIP6dVrwO8dWmpX50OeTjhgBg5zXi2JH h+7UjoGydJKEcm3327THFDcSvxpC54yb5ln4UGBRHCQE/Z3N+/X7Ean4dz3K1N15EGOORcpkR7s hkMHQaW54bmnNf93ZDw== 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-19_04,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-2607190139 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 --- 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 03:45:58 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 690861A6814; Sun, 19 Jul 2026 13:00:15 +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=1784466016; cv=none; b=aB+mGBDoeOPKGw7m2CxLqJ1EU2J3fTMp3UBd/6avu61y44CJaJKCVxIUSFxfAZZxr8MozhqAd8IY+4R/oqQQgHLk8nDmUIeDA5ej+rlQrdvMfv6VZkrUBPyT6W2n8TW59J56UmqiJnqmMcP1PgiX28AKvk0zwzTx9qhan47nm4s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784466016; c=relaxed/simple; bh=0jK4btx26Jwvi041xJirsZ+ydMijoK3qrmHGRRxWCAI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Fol+nvj5BUZgEuZLpvQcDubmAl41f7JaNyjLHnEEu/np/sWxlyL0YwqU2CMO1mnjMqlq0v+kjWVcKMevmm3P9ICdV3h+x9mnzSuteVnAlYGhrJTNUYQ2HtGus+chjlq9UU+mTDzpSeO3NniGNVa5JRq2zXj8QLu5ASv1cROBC4A= 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=ZE4ZYm9y; 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="ZE4ZYm9y" 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 66JBCl1u3352536; Sun, 19 Jul 2026 13:00:12 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=ZE4ZYm9yy4nOUlHgxqVHbJJ9N4rkMG0Vs i7CiHT1eG7CWkyZMHlFH8YCIJex+c6TVnuaPUgAYx7hJDPfYJZd7hTF+Ga17haqH w3d8iPhb2OM9+rQGFwUMCV/wuGpbBqWaIJ6UXb1YsdSlp/ScnFMU5gCJbCHULNMF WDVoJjtegwVInfxEq2f7EyvtXyGbFesAii4KUag5vrGxd9LQSmE1yBrmuOls7b2J ID4qghHHKvrbFTqxSWkP+83sgRzkhpj5hMOjavy4RlWqmtN3xJxWOwnGll8o5fRn p8cfVBCRr6iZNKUw7kf5ta2nZZnU2crRBrE63hsjzd3hWQq6gs2SA== 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 4fg7aguc1t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 19 Jul 2026 13:00:11 +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 66JCnlOM000454; Sun, 19 Jul 2026 13:00:10 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fgp1g1f98-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 19 Jul 2026 13:00:10 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66JD07qR30015898 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 19 Jul 2026 13:00:07 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 16B2020043; Sun, 19 Jul 2026 13:00:07 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D2F542004B; Sun, 19 Jul 2026 13:00:06 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Sun, 19 Jul 2026 13:00:06 +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 v3 2/6] s390/mm: Add missing mm check to do_secure_storage_access() Date: Sun, 19 Jul 2026 15:00:02 +0200 Message-ID: <20260719130006.3882764-3-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260719130006.3882764-1-hca@linux.ibm.com> References: <20260719130006.3882764-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: KElNuLGHVxWJTdiF9yBo3gQSOOuSniMz X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE5MDEzOSBTYWx0ZWRfXwCiZOnz7Xlry ceK3UllzFVL43yXwx4MFywC8onRYMhYKTJv9/wwugFswfNBSuTSdxyyjhrCGr30R+q5XzmCLQZE FiycDg41NLb7ur5DokhlZ8wI7MaIYxO7MUuk1dnoR1EKmlcb2PMQbB5kn3b2t1ZGGVOIuZuMSbM GpYBLRPNvDSEZ3HdjEvCZiopEa+WxHcJf9VI5N20TKk18Dgm6v6B+yzvJdjHz3anO8B74TJ3ddM CUJHy89x1kgUSSr5N26lEhJAa/4O5rniwU0y4SMGipa17izcpDFTbGQVJeDsx5xdsXjgm7A9DHt 6ToH85GHa8QQbFVjf8rReP6w2EQ3dD+V36FHWxQyCJ3APisWvtkPmRmlupQKvWhQ1ihKDQDUZU3 mp4kPgDRWk+hUKNeMAMm2n1UD7nR8UwuBOEIHxaqln69VIfKd8j61CUsBfq/E9cYtXrTRVsbfTz wvqWcKwCw6qlYxtDf0Q== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE5MDEzOSBTYWx0ZWRfX4CMff29JZspv cSTX/qxUqGtnBGMhESBX5+2OrN43U71ojndroVU+9gMxdzL8uHm10uzOfPNfU2dhoYTIyQL42Y6 9cU615NYBDmvbWglBIAG7ck3he246mk= X-Proofpoint-GUID: KElNuLGHVxWJTdiF9yBo3gQSOOuSniMz X-Authority-Analysis: v=2.4 cv=SM5ykuvH c=1 sm=1 tr=0 ts=6a5cca5b 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=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-19_04,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-2607190139 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 --- 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 03:45:58 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 690DD1DF25C; Sun, 19 Jul 2026 13:00:15 +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=1784466018; cv=none; b=Xg7FBTf9frhG0oYdqZWs+IerdAU+mDXnUTPl/EYmIFvjRG3xKng0O9zKJQB8AIhmr06+q3Y3qhkgC0hNiPTV8kT/IU3LqZlhMy+X2avLduvZstH6hZr3QLh6MbhpBwijeb4MHapNdBZs4kYjKJbrgiTXdU09+ydW2Ud/f8T9C6c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784466018; c=relaxed/simple; bh=vCmvLDArPZy/NUup35qgdegCw9i5pFNHjjD61YwH2BA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oMNfAcyTZ2sZfFQMRupG7Hf5LpNmfaW+Y3TXmhCPerTln3WfZ5SVnpmpp1QvQWIuC/vkRf2dlYc0EqYz/YnSPYH87cFosIaMRtuHz1hc2/BvW0dTrtVMt5qShZWoZiQKJJ6JdM2dViJ/I0BeCiyPunNUMVSt14QuBpbrtcLTuvg= 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=f6yjYuje; 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="f6yjYuje" 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 66JBBpfs3271375; Sun, 19 Jul 2026 13:00:12 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=f6yjYujesno1pC/g741Cw712ObaOGPQYw 7n4sOfumozlJXhCWk+TG/dT9X+PyzG8b08ONjHq3QmjjbebEuOqAAaegyIUQaKQh /31CcD5AG5rrny7sTrU6445uppZUWQrnVITTlLCNT6ox9oAkQnmwIYSfnatpWN9p jRNOalOp4MiNq7zyFUnJNl/v/iRmyatOzQ5gL2uXQqgccjR0J+l1UqoVoB7M0sRl c8FuAcUiPtG7UG9aKe8EXyFNvVRqfpyy0MMNgJpmCpP8liIip1zQuthauLqpD0IU 84RhstGuzcOmO2hibKFyE4QvpAZHIPwkm8zCCzRPe/yaub52+aZgA== 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 4fg77jucq8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 19 Jul 2026 13:00:11 +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 66JCnad7018664; Sun, 19 Jul 2026 13:00:11 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fgpgy1c91-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 19 Jul 2026 13:00:10 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66JD07Xe30409180 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 19 Jul 2026 13:00:07 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5288F20043; Sun, 19 Jul 2026 13:00:07 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1C2A32004E; Sun, 19 Jul 2026 13:00:07 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Sun, 19 Jul 2026 13:00:07 +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 v3 3/6] s390/mm: Use lock_mm_and_find_vma() in do_secure_storage_access() Date: Sun, 19 Jul 2026 15:00:03 +0200 Message-ID: <20260719130006.3882764-4-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260719130006.3882764-1-hca@linux.ibm.com> References: <20260719130006.3882764-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=6a5cca5b cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=q1cbuJAsPhdWy6OxXkMA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE5MDEzOSBTYWx0ZWRfX47NzsLR88s+T 8gxghUM6sRauXUVW5BR0whwCeT6o3s4+sOM09O4CxwojvBXhYyOnzFpGHMcTVYtHfBxM2RVYhRZ 31cRd6ILPnj9RBWlCjnzwUZFAg7k/MY4nTtCZ2Z5Z5gSK4NU5kgMrMZDvRd8w1O65WKBOjmcpCy oDWQoEP5UP4RaclIZVpyy9tLVK9gZHcsHS3lW1ZaIWjxq99GNLJF2+vU2Mtox0aSLj4/2ypiXmG qGa8CC6+YJvPHpsAaABVnU14pyQB5QyyeoHa7V8nl1lPjENXd64mAzbpQ8ySfmTM+2cpjVJxf0q UvHrqJVG/KcmXhdPyq5RaNpjmHbSnDYqU9d5jROG42nO2I4lJV+mhgcLlPvvTAciWKBQoM8uii1 2hH4ja9/wMkVtw3hnGEjjrQP4k9TYuMGTgE9wRLtvOiJg6OIy+0LfVHL+xlMHLhvqtWfEtN+jjv Ss6DcuuR2IDc3VF3kkQ== X-Proofpoint-ORIG-GUID: kMnjA2552nWMiRn4DESu5hbmBj0BZI-e X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE5MDEzOSBTYWx0ZWRfX+HaucYrukZxR reslfhd9zvEawid968wfEq00KMMaz0936VJTtiWygDNedMavKFe7P9l71VMbGmYq54NVNh+GuSD 7Cr41xgANwmcVKdRr4nuhBqpSk9+q8Q= X-Proofpoint-GUID: kMnjA2552nWMiRn4DESu5hbmBj0BZI-e 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-19_04,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-2607190139 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 --- 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 03:45:58 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 C3B091AE877; Sun, 19 Jul 2026 13:00:15 +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=1784466017; cv=none; b=FfifMa4IiIeW0ArBSfnQCCpPCr/yY+rrmGLvGQ19U2M0+QlrBayDPiugnuSURkGosfGiyYIjGjsQ1FYW58EhPYyPiA1N3xe790mU6yI8FJWtFEk2WeQ3NjZs89G66H5FHUuCn3+U9X/UbKXIPaki07p7cJjRUQrD5/toP32lnjM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784466017; c=relaxed/simple; bh=MWTPZS5lx0atrLjiEqr3hlHJCq2JP9RkV1czBmu0Vgg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uMTAYduK/YNIbzObi9POndBQabPYhJbIqVF8DRmu5cnyyG3utdd1A0VLbyTWIvB7WvqPPQJE8BFmpUnjlRWq2WSJNCr/eDMpsxeBK+tTx9/be9OsJIQiVcmDLEnctIJbAJpnmTOOWCGPsXvDpFP2eXOLGln62k6zh6ZxDATrtFc= 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=OZsLfxPE; 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="OZsLfxPE" 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 66JBC1Ea3271757; Sun, 19 Jul 2026 13:00:12 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=OZsLfxPE4cTPc1NyctoHDd3SSQl5G8+NW 6keHdgzypOJUghz3HJFrccK+zXOBkSu3Hx54wkcsICFBrXYNtfNTKs0KzLAxsQyp CJjHr1HZBo362VoMQEv6IVswdvhyt+TNRwNS6y3nOQkvtePObtkwjbj7wPAN625a 89ZinLANGJfKQktVfNL+1sDyoKhCaCOxA6TtS0V0jGlci3B0yVQgJDAOJUQgjaxd Wn8doqsDLkszK57uRndWYwyK4V+hc9ONxY6i3jMt3PqLfmfDrAp84jrZ5FS0Wj2u kut7Dz9SiLrGxdFsBNvZP3RKRzPo7tGFQZTxyVr1N0ZFHIrk1ggLg== 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 4fg77jucq9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 19 Jul 2026 13:00:12 +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 66JCneZY016714; Sun, 19 Jul 2026 13:00:11 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fgktpstjp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 19 Jul 2026 13:00:11 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66JD079q15925664 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 19 Jul 2026 13:00:07 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8E8EF20043; Sun, 19 Jul 2026 13:00:07 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 587032004B; Sun, 19 Jul 2026 13:00:07 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Sun, 19 Jul 2026 13:00:07 +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 v3 4/6] s390/mm: Fix handling of vmalloc area in do_secure_storage_access() Date: Sun, 19 Jul 2026 15:00:04 +0200 Message-ID: <20260719130006.3882764-5-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260719130006.3882764-1-hca@linux.ibm.com> References: <20260719130006.3882764-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=6a5cca5c 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=aTeQ_7Lur19LOBhsqlcA:9 a=zZCYzV9kfG8A:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE5MDEzOSBTYWx0ZWRfX3pMSSe1YvNSQ TfBOXKtHZeMw45HnZYP+LSj+jhXUboWyFs+7ovZg8T193kbd0IsUyEklSyqm+s1icBA9hCf5Bci 0/TiTQse622yxlTPFRW47tL41eQb65StOP8CTOoO9Eu8CLidGnyx0n3sFoSt5FQjVzleYdUidhr j6+tC7ZgEIa4ZyYNDhKzd/FO9mKHof60Puz5EdJSirIeKLy0+woSqkkhm5Ku07hnOboTAloxy+l N2bO5Ww8JruR3WIxXNkrCnjFVC/oMaZ2M0Z3Q5MpCbkI3jeVsAAC06eLAqYJanDdRJDujzZkbJ4 J8NSuC5OVXkRs3ysV/RCqUTaeE9KOFZorSXRaCEW90XlEaYo8eo/Sfp5Z3NBtqWIQKse64a9WqS Aoh5+Gv474B/H1kW3bb0Ymbf0NrO3+wzrsKwsiHwqhH/LROzRlGBH3FU4bX28e3c638/EYEaT14 S2eAm2LPQTls/jFxXlg== X-Proofpoint-ORIG-GUID: tKgeSyEP82UEHlq3EB15K0l10Tgvu5HH X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE5MDEzOSBTYWx0ZWRfX9vt35M65N2eR BdKOlgXRnriS5uLhH1nQA+iMdS5qv/RZp8jmG9Pjf3oMCow8zZidwnViDKo42WJKv6D5fRerp5B scfrBm0d7xyg9LuQPluP/8GZf2+OXjQ= X-Proofpoint-GUID: tKgeSyEP82UEHlq3EB15K0l10Tgvu5HH 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-19_04,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-2607190139 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 --- 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 03:45:58 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 0604A1DF27D; Sun, 19 Jul 2026 13:00:15 +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=1784466017; cv=none; b=IF0knl1bz2XP5D7jGgbx9C9XeX0PgWDx9v+iCoNM0iH76Nyn2No0oi0CAfacmOEnUpaGrKekcDus2w/zkSyXUwyhlXGJsZrCNggajCD8RZrwjVWMwVCmUPhue/wWcYaRwATBbMiC7teyoRng+zOQcrJ/6sB54+hlob7YFs3EGGY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784466017; c=relaxed/simple; bh=kt/IaOFVul557FqevKqMSkljaUYBNNzywr8px+IDhvw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Je7Wrc4iXQMNfGOlMRIZOi2mkXeCJfUreTdf0lKjhU6pihNUgOPCXaZPPxCcxL8IE+Z6unEK6nCSx+/WEiQnqznraO7NKBgtklDEwQWlty52UsTxu9lcL5k0XgDV3Mq3qFEOCg8wLvCEjKLjCYax367V/5+34yTKCkO3k5NgXDY= 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=OEz0Ssav; 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="OEz0Ssav" 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 66JCU6mq3506843; Sun, 19 Jul 2026 13:00:12 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=OEz0Ssavvf0eL0N3MNTkq84ajwuMINaaB mXwb77sOcEuwyjBySNuxcFj0nltjbzsQVZZ3wqh1T8pYlUzOd8yPJ+Znp5mPjnmz P5Fo2CjUwf8dzfHYxgjgRHacueumlC0tt2xNXHOm/rK8+gDdoLYdPTEpkyrEHao7 Q7eQ+DuY/89tJQCJHsATOGYd9suo/+UG45Does0SxpcqdDo4f44YfUsRGo84CY+M sv8YEFCCgXB0AKsN8JTUdA0V//bvZdiEYTXm7BqGYg93beb983nuiDlYIx1Dchpm ZGr6VdS9A1b8KchCxIBPJQPfg6UadIq24wMqx8/xjDmXSq+cL7z3Q== 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 4fg7aguc1w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 19 Jul 2026 13:00:12 +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 66JCnm8B016589; Sun, 19 Jul 2026 13:00:11 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgmtjhnbq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 19 Jul 2026 13:00:11 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66JD071F28770666 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 19 Jul 2026 13:00:07 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C15C620043; Sun, 19 Jul 2026 13:00:07 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 947FC2004D; Sun, 19 Jul 2026 13:00:07 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Sun, 19 Jul 2026 13:00:07 +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 v3 5/6] s390/mm: Remove folio handling for kernel faults in do_secure_storage_access() Date: Sun, 19 Jul 2026 15:00:05 +0200 Message-ID: <20260719130006.3882764-6-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260719130006.3882764-1-hca@linux.ibm.com> References: <20260719130006.3882764-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: HdzJ4nCBagG-a5Uk_vx2k7ou_2_r0wzc X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzE5MDEzOSBTYWx0ZWRfX6lHvXA3mwblq BIATkCJdKnPKqRKedeeLl4OW+R1hF+BBHBz0hIJKa5S12Bk96WeOsozGOxR2UBBELj/ST8oBEdy eh5uzo0FdaCmucFFWbf5Qz6SZiFW9ZiBnaz88LWvdFn10Dg67SiuxjJqdsBWuP51JgF3KlYe7sE lnLzsJItjcOUZ95d495EjUCAVkPFEOKbk8O4ZioCOfAkLzXJ3fueHjYL99XsI2jqFAuy/PN0dp/ OK86+EEFmMY7NnMLkaRqj9roqcEUp9c8FnKwhsBqY/1LBEc9P3VCiUpxwBpbOYWO2RovYhdYIo8 Hr7fOCJD1kzTG4Ejiuy7VzOegAZ0NYXjhnHCs4VY5V8t1za/iASQojiqQi80tajFEsfrv2S8A+0 zn/Ev6kZj85K6MT3wjhhcYnlPhqdin0Bx2870DN9tJxK73Ir178rm2WL7dat3TPnEW/E9b+Eq4Y qUYiaJDsJ39x2QJ1psw== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE5MDEzOSBTYWx0ZWRfX1cXHJsoyz+eI f6KuZEiHhTk+xdYrwEEPRYeLgfrSPtRnQlZ5dfdaeDZ1xH+S/mLliILdsByJnAw1Qp2qePDyvcA +jFCTu0D8QXYleSgCXli1TaHSf7IRTI= X-Proofpoint-GUID: HdzJ4nCBagG-a5Uk_vx2k7ou_2_r0wzc X-Authority-Analysis: v=2.4 cv=SM5ykuvH c=1 sm=1 tr=0 ts=6a5cca5c cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p: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-19_04,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-2607190139 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 --- 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 03:45:58 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 82E131F3D56; Sun, 19 Jul 2026 13:00:16 +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=1784466018; cv=none; b=VTUqdQHKmP27GZS9ADlVXIxcERFEQ8xS2IJHDaUwzr1331WCEBtPZF5vZE67QbzCncSgh5poPHRLl62zhXSwzxix1QrJMAFuRTvMQI/cVOahuOj8JwWIPs72bRttKgMy9ZUHFjKLiW26oNeHBXFOD3rI2Y84q1nKz99SoRzS/IE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784466018; c=relaxed/simple; bh=mq+7Hjma1D/CJ3C7xoD4JKAYeJNhJFF8tW/av0J4vr4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SD5Q56JDkCyDUKSsIrFT609eeIBoCKXf0ThAfFlVlfWWxJvFUB4jGyYIwZ4PDJwu/6RzYq7AdqVDixZ6g9IK+PMhzQ5iojiNW9dQe2d/kvIg3hd43ainkmu4EzLfKFCcCyPLzBIFoYyMiX94YtDni6a3t0hsLdUaKgUGbvNeHXg= 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=HMsNKqRH; 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="HMsNKqRH" Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66JBC3e43258135; Sun, 19 Jul 2026 13:00:13 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=HMsNKqRH94HFqMVwrIzd/P0Of5di6tVbn QzNjvTTiWbsJwmXm6TUVmKPrb1F3WMJCyeEmDHahz8fv9xYXOtPQoGswbBzx+lkg r72XnKavw59MyeDDc/4BlNpeG6iMp7jWLKmmyEEK4uujMZySB2jHzFZrzD6X6iaU 9Qecx/5pitecYkDfAzKW9NQEjYPQVQEkPQ82TrP34KpzFu+Zrjm2chMjEHB7HQ0M R9ts1vbQz0UV0JWCA4DxKkbYs0b3D94kIdxJ998VRyiWzVgEQas3lwNNiuXgFS3D mspdGdGAoQp6PS0hBr6EXi2pE11cQEAoNu07f4fTOYTuIjkAI4rjQ== 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 4fg78fucae-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 19 Jul 2026 13:00:12 +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 66JCnjoE016751; Sun, 19 Jul 2026 13:00:11 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fgktpstjr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 19 Jul 2026 13:00:11 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66JD08fF26935774 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 19 Jul 2026 13:00:08 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F3EBD20043; Sun, 19 Jul 2026 13:00:07 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C75032004E; Sun, 19 Jul 2026 13:00:07 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Sun, 19 Jul 2026 13:00:07 +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 v3 6/6] s390: Add support for DCACHE_WORD_ACCESS (again) Date: Sun, 19 Jul 2026 15:00:06 +0200 Message-ID: <20260719130006.3882764-7-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260719130006.3882764-1-hca@linux.ibm.com> References: <20260719130006.3882764-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-Spam-Details-Enc: AW1haW4tMjYwNzE5MDEzOSBTYWx0ZWRfX3Fici64kNAAK EKfBv773lAQvBNbjsQHVghnwmf9fJPD4rBHd8KkAWkTm9RzOeXsZ+hCaa8nFet9U1bYrPQP3xMP I47xRPZ+x//XbNAt3qC8Ezu7MZ1emFocT7KDbwibL1f/wpKk1JNWu2l2Yg9mHhtWk2kMR0nGYPl r0ahiEJnGaWuhOLc9uM3vWBPRzjEqB/+ekIfYO7My0A3+CzkBivYqY3wTh+P6RwEnnAUs9pj3xA t0dWAs+Xs1Nf9Z8A4vtrw0Yv341v3+wbc24ppgWPcAczcAVWTOL5uPcIf+Lp/94mEXwxW5QctBe n6S2inpY/cBrh+UqfOAJ0h2JK9r009//pXUrQFExycUMv2aaoShnWjZnOBTf4Z82yyMEcuaWXaA U4mr5COL9Y7Il3ed+1OCwiSCIQBopObxGFgaWYFhoejSMcUoVwhEQGWH7cbHDkpLMSFM1ccG8Nz OSRsTpZE/VFY62QEdHQ== X-Proofpoint-GUID: dzBqHHgR2lSW4AToSAqVdW8SXbMokrVw X-Authority-Analysis: v=2.4 cv=MelcfZ/f c=1 sm=1 tr=0 ts=6a5cca5c cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=iX4AGcIGDbhQ4BFKoYkA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzE5MDEzOSBTYWx0ZWRfXzOyCAvCXWAze gSK3VugGPQtEOWasMHZ952Z9c87KpKn9djNxft4pR28/BVQpADDPmj5MEacS//GwxdhWB0QlNSM loRHGDwUASOlnAdcDpstGCtLr+HzduA= X-Proofpoint-ORIG-GUID: dzBqHHgR2lSW4AToSAqVdW8SXbMokrVw 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-19_04,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 spamscore=0 clxscore=1015 malwarescore=0 phishscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607190139 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 --- 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