From nobody Sat Sep 26 19:33:47 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 425FF3DBD43; Mon, 31 Aug 2026 11:18:06 +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=1788175087; cv=none; b=Mm06Dgwvl1Iys62oj3GkKHPibAqk4eR/mIMmrf3+4eR5AU46mX21PE7wqrs0GfPISo2crXB6WzV/elBsiyfKaugS65sJLZRBXY0woJHNMSpjGW3OLhY7SZ5q3ZLbbSxu/8oi2oe0s8BH27fM1QagVDZgFJDHLNbL9H9mtwTGzSI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788175087; c=relaxed/simple; bh=7SSDeSLrpHX+loCFzcH5Ip25M57YFUMFY2ccI0G2kVQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SyqBPmWHaRqF60nbLAJam7XVwn9+BBNtHmBWi+r1Tz/XdM/sORKGVSO8p6hZksMg4/qBnzNnItPgBQGjzuw2n0OW2f64oRhibWyOC0P4+YGPA9ARnpKEJx/Ix30Mj0ugCS/optJmWPfbxo21hjst5kIdcPMJIi8aum0mC5dJKow= 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=CKZfbqK3; 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="CKZfbqK3" 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 67V82M5u1698181; Mon, 31 Aug 2026 11:17:51 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=6Aby6J8S9My1jTaZO XyTHNwF1Hj/DrlTLzWePf5+yBU=; b=CKZfbqK3G9aUnUrAANpkflpFHLVgvUEpT CZWA/GnbbsOf+9+tIaDeA/s3lPK48QaYND8IYfDpl+rYkZOKnO5q/PJS3l9BWzgt zsMaWTeIg4IUM1SSUvZOdWiWUWIeimGJr8QTMLYd1uPU8V16Ji8wx5HQIgwpN+OX UKPpLemt3zQLqpg3o8qd+Y4CjS2aq3IiDR/EJaM5IuXJpkAiY3KUo4Ds7L675MYx 3VIv+iV7KQxhR6nSkgMuNwFqIxRcTDj4Tgcqfx7iHba9TlaRF5Znq4VX90WErHDB KXGtITOuvnTVQ7zAMs1kR2rjkT+ZUaq1QMpR457I5bYb9HzZsMtoA== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gbq2t0pp5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:17:51 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67VBDZnW009110; Mon, 31 Aug 2026 11:17:50 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gcb8h5f4m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:17:50 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67VBHkhX29557494 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 31 Aug 2026 11:17:46 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2DDA52004D; Mon, 31 Aug 2026 11:17:46 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C49D82004F; Mon, 31 Aug 2026 11:17:42 +0000 (GMT) Received: from li-fc74f8cc-3279-11b2-a85c-ef5828687581.bl1-in.ibm.com (unknown [9.123.14.23]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 31 Aug 2026 11:17:42 +0000 (GMT) From: Srish Srinivasan To: linux-integrity@vger.kernel.org, keyrings@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, James.Bottomley@HansenPartnership.com, jarkko@kernel.org, zohar@linux.ibm.com, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org, nayna@linux.ibm.com, rnsastry@linux.ibm.com, ssrish@linux.ibm.com Subject: [PATCH v2 01/10] pseries/plpks: update PKS documentation and maintainer entry Date: Mon, 31 Aug 2026 16:47:29 +0530 Message-ID: <20260831111738.334857-2-ssrish@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260831111738.334857-1-ssrish@linux.ibm.com> References: <20260831111738.334857-1-ssrish@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-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=bc1bluPB c=1 sm=1 tr=0 ts=6a9562df cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=VwQbUJbxAAAA:8 a=2YPxekF_mspUCEnIjzkA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX7j0D6lMbPhkN daVz5sYetziO6bYqjFmymuJ/gD40UEez+W1AiPvXxdO6hm+l6F+flftioc/PXRLCg7ZlEB9pejc W8M+bKTvYJebFEpHCSpU3wNBTesMpJE= X-Proofpoint-ORIG-GUID: tmobB0sGCWLACNXgzdUEVWFabphGn9F4 X-Proofpoint-GUID: 9aq1HGKIMH2YEp745oE65NGUcPHtsEJX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX+AtIAKyCMEPk tGOgA4+CCAgPwKoKwMM5Gv9iz1NyrvdnWFzKWDvfSCr1JGB9U3z4xXtkfUwGpBt2/qgLDyrxRaE qP7U8U9Z5ZmuT9SWQRjgRzOF4hFtk7SxMWgAePBVcioZRKHs4S+8NXH23TdocO6l1gjxAcN33WI dQQk4/xhrrD+hXpQBRq8YOWG+jk5jejtFnUONkNmr+q1c95VJ7MQlsCUSINT5iCaGKd4SwqCnPb t0PRrF3UltVbDHaR/T36xBfWzR37eVqTtKYcqcnvuZ+r+lP9r9AXgJ1DHGKD7UGzFJ/Q4Qc5nF2 WkvPEaP+ffx9BgGGWF+mPuv3AUN9yhtHEaZAQQlnhYdArXAP7+h45zgYyOsuDT5Rup8bgLjsd2U yKwC6EtAz/AZq9H+nKLt+eEu3gi5W/v+4c5535SNaxiqGOnyFxecgC1rOnzvjrxqauPOxg0MoLY arZEfssnesoao17ualA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-31_03,2026-08-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 adultscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 phishscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608310095 Content-Type: text/plain; charset="utf-8" Wrap long PKS hcall return-value lines consistently and fix a typo in the H_PKS_UNWRAP_OBJECT description. Also update the MAINTAINERS entry from KEYS-TRUSTED-PLPKS to KEYS-TRUSTED-PKWM to reflect the PowerVM Key Wrapping Module naming. Signed-off-by: Srish Srinivasan Tested-by: R Nageswara Sastry --- Documentation/arch/powerpc/papr_hcalls.rst | 16 ++++++++-------- MAINTAINERS | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Documentation/arch/powerpc/papr_hcalls.rst b/Documentation/arc= h/powerpc/papr_hcalls.rst index 14e39f095a1c..44c9c8b32ae3 100644 --- a/Documentation/arch/powerpc/papr_hcalls.rst +++ b/Documentation/arch/powerpc/papr_hcalls.rst @@ -305,8 +305,8 @@ like core instruction, core LLAT and nest. | Input: authorization, objectlabel, objectlabellen, policy, out, outlen | Out: *Hypervisor Generated Key, or None when the wrapping key policy is = set* | Return Value: *H_SUCCESS, H_Function, H_State, H_R_State, H_Parameter, H= _P2, - H_P3, H_P4, H_P5, H_P6, H_Authority, H_Nomem, H_Busy, H_Re= source, - H_Aborted* + H_P3, H_P4, H_P5, H_P6, H_Authority, H_Nomem, H_Busy, + H_Resource, H_Aborted* =20 H_PKS_GEN_KEY is used to have the hypervisor generate a new random key. This key is stored as an object in the Power LPAR Platform KeyStore with @@ -321,8 +321,8 @@ the user. Generation of wrapping keys is supported only= for a key size of | inlen, out, outlen, continue-token | Out: *continue-token, byte size of wrapped object, wrapped object* | Return Value: *H_SUCCESS, H_Function, H_State, H_R_State, H_Parameter, H= _P2, - H_P3, H_P4, H_P5, H_P6, H_P7, H_P8, H_P9, H_Authority, H_I= nvalid_Key, - H_NOT_FOUND, H_Busy, H_LongBusy, H_Aborted* + H_P3, H_P4, H_P5, H_P6, H_P7, H_P8, H_P9, H_Authority, + H_Invalid_Key, H_NOT_FOUND, H_Busy, H_LongBusy, H_Aborted* =20 H_PKS_WRAP_OBJECT is used to wrap an object using a wrapping key stored in= the Power LPAR Platform KeyStore and return the wrapped object to the caller. = The @@ -331,16 +331,16 @@ which must have been previously created with H_PKS_GE= N_KEY. The provided object is then encrypted with the wrapping key and additional metadata and the re= sult is returned to the caller. =20 - **H_PKS_UNWRAP_OBJECT** =20 | Input: authorization, objectwrapflags, in, inlen, out, outlen, continue-= token | Out: *continue-token, byte size of unwrapped object, unwrapped object* | Return Value: *H_SUCCESS, H_Function, H_State, H_R_State, H_Parameter, H= _P2, - H_P3, H_P4, H_P5, H_P6, H_P7, H_Authority, H_Unsupported, = H_Bad_Data, - H_NOT_FOUND, H_Invalid_Key, H_Busy, H_LongBusy, H_Aborted* + H_P3, H_P4, H_P5, H_P6, H_P7, H_Authority, H_Unsupported, + H_Bad_Data, H_NOT_FOUND, H_Invalid_Key, H_Busy, H_LongBusy, + H_Aborted* =20 -H_PKS_UNWRAP_OBJECT is used to unwrap an object that was previously warapp= ed with +H_PKS_UNWRAP_OBJECT is used to unwrap an object that was previously wrappe= d with H_PKS_WRAP_OBJECT. =20 References diff --git a/MAINTAINERS b/MAINTAINERS index 3a19da74d00c..6b91d7f081c4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14491,7 +14491,7 @@ S: Supported F: include/keys/trusted_dcp.h F: security/keys/trusted-keys/trusted_dcp.c =20 -KEYS-TRUSTED-PLPKS +KEYS-TRUSTED-PKWM M: Srish Srinivasan M: Nayna Jain L: linux-integrity@vger.kernel.org --=20 2.52.0 From nobody Sat Sep 26 19:33:47 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 734233438B9; Mon, 31 Aug 2026 11:17:57 +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=1788175078; cv=none; b=A8ZpjP4cXgw+h6TOo8zLsbXkd508otwmPMdrcE4itz+/ypKBV3Ba76o8KPI9TzXsc1maNHEIOGk3DM2rBeR6aHkiBSTk2q3eWUEi7llja0ORXvBcz7fP3x7Q3TmpzuWwZZvHqMf2dd4Sw3pKST3olgKoa9ErfGd7crYfkFfHdEw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788175078; c=relaxed/simple; bh=oZ5zOTfctuu0/HyEQytumxVet5UV0oIU1N62rYA4vP4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=n3um4ORU4s/0OnwC4oouC06cgsRUxAPknOaabcn4Z0hKDuHsw2OtUVirOGqjdw/4bC2RN6H/XR58jwXof3s8ri57CvKiAx1EkKfH1z4ECmNnisR39jeeaqlJSlX/maDqqARrt8md5I1idYFZpbZ9bYwYfYGG131K+6skGKZ/w50= 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=UztgbIy5; 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="UztgbIy5" 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 67V82GT41530799; Mon, 31 Aug 2026 11:17:52 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=G9mDYgItyOkSuZg9u 5J3SdEPeCqDGWcTNHF4yfy6l5I=; b=UztgbIy5gKEtgx/8Z4+CrQTVy+fR4M3Xp um2bTK+b4EI/F8nHV8hE+GxNmAsqxyR7AgPzMA5tH/3Azgeig6P/a8131OaloCuc HekrYy2VAfDiK/FlmHrfIW+oihxxYJk2gAaen4TY7wVi1V158RIBG8Cwg57OuQWZ yW1Q1IQ2QixAu6lKmcHCj6IpRhoOgLaQGvppHNhQhYy2nXvU1YePDuLg3TvSCBlK QYMuI+jmATJjYw0E0f0rVs5kP5UX2V5Qh/O5IVln+bNpeXy2bxZL0DAFdyqyAjoI SsS01aH0OIM++7g2PdDhYOi/FIs54aiAnwJB/BcPTvd5aW8NsBPow== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gbmuhh1nf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:17:52 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67VBDIc8008524; Mon, 31 Aug 2026 11:17:52 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gcb8h5f4u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:17:51 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67VBHo1p30671120 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 31 Aug 2026 11:17:50 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E27812004D; Mon, 31 Aug 2026 11:17:49 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 908C62004F; Mon, 31 Aug 2026 11:17:46 +0000 (GMT) Received: from li-fc74f8cc-3279-11b2-a85c-ef5828687581.bl1-in.ibm.com (unknown [9.123.14.23]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 31 Aug 2026 11:17:46 +0000 (GMT) From: Srish Srinivasan To: linux-integrity@vger.kernel.org, keyrings@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, James.Bottomley@HansenPartnership.com, jarkko@kernel.org, zohar@linux.ibm.com, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org, nayna@linux.ibm.com, rnsastry@linux.ibm.com, ssrish@linux.ibm.com Subject: [PATCH v2 02/10] pseries/plpks: fix error handling in plpks_read_var() Date: Mon, 31 Aug 2026 16:47:30 +0530 Message-ID: <20260831111738.334857-3-ssrish@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260831111738.334857-1-ssrish@linux.ibm.com> References: <20260831111738.334857-1-ssrish@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-GUID: iWnzLJvtMWUuzQvMJx5ZXthGDssAZPSG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX194yWTpBRn7b ylaR7fA5ZbK8kesJojyVEZtSbLD76Idxh9jvARLKrT6ZBVMKU21qMCTbS39hZxj429tmYhh+NQG veiqGIKZ0vH/UTAAlRduqVP+HRqFP3hFdqtqFsuIu7+68Gz5jqMBxfLMhE/WJAvuieetSZ2Gq2k FxZe4h1uebllRZJxX2CmWCiStVrsl67XrZ4qidw1eBQmPTQsFbxfQuBH5avCQSm1qcVMKqCiXMF Jip+uZALsU5u5MR85izNOesvGi+PWMMsjzmrIQZoKVNmClbOkGoMprie5hRJJ/gBB/4KK8M6ewS VVNLTHjNzV5rUCg0vwtcftaNJEQc45WbwnYL+G315MJLQ7Ani66hTFIIVKs0dGGyt8kTM4wvlh4 KLf8wdnfXVnq+mCR2GUOI4Z2gCdYrgghtSP5OY21CIHRP4K4PHWXYa9Qz5+HCyP3QAT+MDkhjE0 ChQk+OoS1r9oVFk0ZPw== X-Authority-Analysis: v=2.4 cv=Osl/DS/t c=1 sm=1 tr=0 ts=6a9562e0 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=oL9t_hqQ2ej-tATgvj4A:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX0QQiYlBn8Fjl jNnuLU5GgAyaXFpOtfd6+p5rNziv4kl3H47QdNgsq/Z1/E13lZF8r4oTPMJWZXnR3+yJbuyogbp Btg0CnsO00MGzi3j+sJzTVX/C6VGvcg= X-Proofpoint-ORIG-GUID: iWnzLJvtMWUuzQvMJx5ZXthGDssAZPSG X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-31_03,2026-08-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 suspectscore=0 bulkscore=0 lowpriorityscore=0 adultscore=0 impostorscore=0 phishscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608310095 Content-Type: text/plain; charset="utf-8" When a plpks variable is initialized without a policy and used to read an object with the 'wrapping key' policy set, the hypervisor returns H_AUTHORITY along with the object's policy. However, plpks_read_var() at present treats this the same as any other H_AUTHORITY failure and returns an error without propagating the policy information to the caller. Distinguish this case from other H_AUTHORITY failures and only propagate policy information when it is returned alongside H_AUTHORITY by the hypervisor. Remove the explicit assignment of rc to zero in the case of H_SUCCESS as it is redundant. Also return -EPERM instead of -EINVAL when the 'wrapping key' policy bit is set by the caller, better reflecting the access restriction being enforced. Fixes: 2454a7af0f2a ("powerpc/pseries: define driver for Platform KeyStore") Fixes: 133aa79e211d ("pseries/plpks: add HCALLs for PowerVM Key Wrapping Mo= dule") Cc: stable@vger.kernel.org Signed-off-by: Srish Srinivasan Tested-by: R Nageswara Sastry --- arch/powerpc/platforms/pseries/plpks.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/arch/powerpc/platforms/pseries/plpks.c b/arch/powerpc/platform= s/pseries/plpks.c index 23e4e2a922fc..7bd5c149dd09 100644 --- a/arch/powerpc/platforms/pseries/plpks.c +++ b/arch/powerpc/platforms/pseries/plpks.c @@ -826,7 +826,7 @@ static int plpks_read_var(u8 consumer, struct plpks_var= *var) return -EINVAL; =20 if (var->policy & PLPKS_WRAPPINGKEY) - return -EINVAL; + return -EPERM; =20 auth =3D construct_auth(consumer); if (IS_ERR(auth)) @@ -856,22 +856,21 @@ static int plpks_read_var(u8 consumer, struct plpks_v= ar *var) virt_to_phys(var->name), var->namelen, virt_to_phys(output), maxobjsize); =20 - if (rc !=3D H_SUCCESS) { rc =3D pseries_status_to_err(rc); - goto out_free_output; + if (rc !=3D -EPERM || !retbuf[1]) + goto out_free_output; + goto out_copy_policy; } =20 if (!var->data || var->datalen > retbuf[0]) var->datalen =3D retbuf[0]; =20 - var->policy =3D retbuf[1]; - if (var->data) memcpy(var->data, output, var->datalen); =20 - rc =3D 0; - +out_copy_policy: + var->policy =3D retbuf[1]; out_free_output: kfree(output); out_free_label: --=20 2.52.0 From nobody Sat Sep 26 19:33:47 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 AABCC279907; Mon, 31 Aug 2026 11:18:11 +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=1788175093; cv=none; b=TCa/bVA+ckUll7i/roS+5RMYvpS+G9GWWjRmGSz44f4f2RzDLN1eHtQ9Wx4d/ldBpHsOajEcOcy/dhCKmKIPYjUekBLJt/JVEjUD7qZUlvFcR+bIxuc/OnT7BCYJpdSmtJbUbDi6P9fY5TFlaGwIV5tkw+dS15NyserfIm9zxPw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788175093; c=relaxed/simple; bh=H7BgJZkf1R0wb7Prkiad+2p+PzEIBcHabrRb+opvwMM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rCd+7gbgj0Krj0unatIWJgwi28cZ0/brIg3M8vjEHLv3XzEuTxedysNsUbxviIA5P3fHSdxhC5GgbKJT0fttrVC+Hf2bv96oA4uLXHekru4ZO/jRLW/JKUSPphC+z/BtKdJ4BQrFqaKhEVJvVCU6d8WrMBsDXlpi6lzN3XbtHJY= 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=K4xuwqcx; 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="K4xuwqcx" 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 67V82B6f3959609; Mon, 31 Aug 2026 11:17:59 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=TLQQZm0vHFSVmBXbo Fd2RBHeyVJ1jKromlCaPghUta4=; b=K4xuwqcxGGjn6nMhSrlyBrFRi9FBHYr4J lLS2S+HjTfxNEmqWqvrcqx1orCHXG8QAL0X+oTUbQRtBohYMfDLdctbOWmRDQeAg HNadMY41X8+rM/0fsPNgFW6Yu2RwH7nrTaugroG4R/puWltaZoCwjpznO0IBBZaY G6xWz//bjtLhECBW2JFuLnszB3uPPDWRjPeNziWU4g/c7qsKTSRAxDer9SnVVMDA yoilS5P55xQx8jUo/lEI0KdPE2LQC0ERunguP3LQSh293UPlMq1VPG3zzc5CKzPu FhE54iHNSg2Uyzlg5vfboN8uIyVK509MhXXqzC4YOX/wwRQVJBEbQ== 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 4gbq3r0u3s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:17:58 +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 67VBDI9x007589; Mon, 31 Aug 2026 11:17:57 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4gc9rq5pvc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:17:57 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67VBHrOD15860140 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 31 Aug 2026 11:17:53 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id AF81320040; Mon, 31 Aug 2026 11:17:53 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5D2702004D; Mon, 31 Aug 2026 11:17:50 +0000 (GMT) Received: from li-fc74f8cc-3279-11b2-a85c-ef5828687581.bl1-in.ibm.com (unknown [9.123.14.23]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 31 Aug 2026 11:17:50 +0000 (GMT) From: Srish Srinivasan To: linux-integrity@vger.kernel.org, keyrings@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, James.Bottomley@HansenPartnership.com, jarkko@kernel.org, zohar@linux.ibm.com, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org, nayna@linux.ibm.com, rnsastry@linux.ibm.com, ssrish@linux.ibm.com Subject: [PATCH v2 03/10] pseries/plpks: improve type consistency and parameter validation Date: Mon, 31 Aug 2026 16:47:31 +0530 Message-ID: <20260831111738.334857-4-ssrish@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260831111738.334857-1-ssrish@linux.ibm.com> References: <20260831111738.334857-1-ssrish@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-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=EIc2FVZC c=1 sm=1 tr=0 ts=6a9562e6 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=lkDOvFPUoNuE0DTt1acA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX8hvvMUAuL/Zk hX5XbRdsYiifcFiqBd9LV0Z3smdzC56yklbdRDeIm2L+7DSmNhDHL1U56l4kU7/h8qyhzaAD7WS Qf3NfFrup9LleR/DcYlpiii1AergkcwNAE8P/A1wtsxIRymn96S7Tj7MRusaM7mfOuQpa7+VOrR 5qZ1TBxzUa7j1Mf6iOJB//cWnEp6bhDsrH8fpTLV46IxN6gRk47ArnP4WoV42R+meT0JLWoV4cH 2CM8JOruMP3vIcoiWGX4CxLwh9hkMuq2qWTknKDjShDRUddjUrUqQhyU7WHa0BYgshZ7vENFnsY T4NIyoLjkbL4Mrgt18fIH901Gq1afBQIfodNo9oN7NUWKRaCf67sqQL9THsuFymJXr9I6PPaPJi qz2pNkY6EDhtqBGNQObJurbmBOv1Zbcdu/Y7DGCy9oI0kTWKBGQAzUlEebP7l2O3xDrZGpGRvfA Hlzww2Vd0ISXijkxj7Q== X-Proofpoint-GUID: HZY2-zbuBSrYHjgR_D_igYlOcwBKPYCk X-Proofpoint-ORIG-GUID: LblHWECU7VIFdeluzhCpP3vRcbIi4NGQ X-Proofpoint-Spam-Info: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfXx12cn2rp+aWJ 006nOBKFhqOp7QJXRSYfDF845W6Ndwgikm5G4VNiNrYb5g1t433AaDyFC3OuMsKoFLlh8zmdfeh amNBYV5PKqKhHyWba9guoMQrfcgEgqY= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-31_03,2026-08-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 phishscore=0 spamscore=0 adultscore=0 lowpriorityscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608310095 Content-Type: text/plain; charset="utf-8" Update plpks_wrap_object() and plpks_unwrap_object() to use u64 length parameters, matching the underlying hcall data types for consistency. Update the PKWM consumer, where these interfaces are used, accordingly. Add explicit casts when copying values from hcall return buffers into narrower data types. This makes the intended conversion clear and avoids implicit truncation in PLPKS hcall result handling. Also validate input pointers in plpks_signed_update_var() and plpks_read_var() before dereferencing them, addressing missing validation when reading and updating PLPKS objects. Fixes: 133aa79e211d ("pseries/plpks: add HCALLs for PowerVM Key Wrapping Mo= dule") Fixes: 2454a7af0f2a ("powerpc/pseries: define driver for Platform KeyStore") Fixes: 899d9b8fee66 ("powerpc/pseries: Implement signed update for PLPKS ob= jects") Fixes: c99fcb0d735b ("keys/trusted_keys: establish PKWM as a trusted source= ") Cc: stable@vger.kernel.org Signed-off-by: Srish Srinivasan Tested-by: R Nageswara Sastry --- arch/powerpc/include/asm/plpks.h | 8 ++++---- arch/powerpc/platforms/pseries/plpks.c | 22 ++++++++++++++-------- security/keys/trusted-keys/trusted_pkwm.c | 4 ++-- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/arch/powerpc/include/asm/plpks.h b/arch/powerpc/include/asm/pl= pks.h index e87f90e40d4e..8b2ffb27db5a 100644 --- a/arch/powerpc/include/asm/plpks.h +++ b/arch/powerpc/include/asm/plpks.h @@ -118,11 +118,11 @@ bool plpks_wrapping_is_supported(void); =20 int plpks_gen_wrapping_key(void); =20 -int plpks_wrap_object(u8 **input_buf, u32 input_len, u16 wrap_flags, - u8 **output_buf, u32 *output_len); +int plpks_wrap_object(u8 **input_buf, u64 input_len, u16 wrap_flags, + u8 **output_buf, u64 *output_len); =20 -int plpks_unwrap_object(u8 **input_buf, u32 input_len, - u8 **output_buf, u32 *output_len); +int plpks_unwrap_object(u8 **input_buf, u64 input_len, + u8 **output_buf, u64 *output_len); #else // CONFIG_PSERIES_PLPKS static inline bool plpks_is_available(void) { return false; } static inline u16 plpks_get_passwordlen(void) { BUILD_BUG(); } diff --git a/arch/powerpc/platforms/pseries/plpks.c b/arch/powerpc/platform= s/pseries/plpks.c index 7bd5c149dd09..45278c5a45c1 100644 --- a/arch/powerpc/platforms/pseries/plpks.c +++ b/arch/powerpc/platforms/pseries/plpks.c @@ -576,7 +576,7 @@ static int plpks_confirm_object_flushed(struct label *l= abel, virt_to_phys(auth), virt_to_phys(label), label->size); =20 - status =3D retbuf[0]; + status =3D (u8)retbuf[0]; if (rc) { timed_out =3D false; if (rc =3D=3D H_NOT_FOUND && status =3D=3D 1) @@ -637,6 +637,9 @@ int plpks_signed_update_var(struct plpks_var *var, u64 = flags) u64 continuetoken =3D 0; u64 timeout =3D 0; =20 + if (!var) + return -EINVAL; + if (!var->data || var->datalen <=3D 0 || var->namelen > PLPKS_MAX_NAME_SI= ZE) return -EINVAL; =20 @@ -822,6 +825,9 @@ static int plpks_read_var(u8 consumer, struct plpks_var= *var) u8 *output; int rc; =20 + if (!var) + return -EINVAL; + if (var->namelen > PLPKS_MAX_NAME_SIZE) return -EINVAL; =20 @@ -863,14 +869,14 @@ static int plpks_read_var(u8 consumer, struct plpks_v= ar *var) goto out_copy_policy; } =20 - if (!var->data || var->datalen > retbuf[0]) - var->datalen =3D retbuf[0]; + if (!var->data || var->datalen > (u16)retbuf[0]) + var->datalen =3D (u16)retbuf[0]; =20 if (var->data) memcpy(var->data, output, var->datalen); =20 out_copy_policy: - var->policy =3D retbuf[1]; + var->policy =3D (u32)retbuf[1]; out_free_output: kfree(output); out_free_label: @@ -1015,8 +1021,8 @@ EXPORT_SYMBOL_GPL(plpks_gen_wrapping_key); * * Returns: On success 0 is returned, a negative errno if not. */ -int plpks_wrap_object(u8 **input_buf, u32 input_len, u16 wrap_flags, - u8 **output_buf, u32 *output_len) +int plpks_wrap_object(u8 **input_buf, u64 input_len, u16 wrap_flags, + u8 **output_buf, u64 *output_len) { unsigned long retbuf[PLPAR_HCALL9_BUFSIZE] =3D { 0 }; struct plpks_auth *auth; @@ -1134,8 +1140,8 @@ EXPORT_SYMBOL_GPL(plpks_wrap_object); * * Returns: On success 0 is returned, a negative errno if not. */ -int plpks_unwrap_object(u8 **input_buf, u32 input_len, u8 **output_buf, - u32 *output_len) +int plpks_unwrap_object(u8 **input_buf, u64 input_len, u8 **output_buf, + u64 *output_len) { unsigned long retbuf[PLPAR_HCALL9_BUFSIZE] =3D { 0 }; struct plpks_auth *auth; diff --git a/security/keys/trusted-keys/trusted_pkwm.c b/security/keys/trus= ted-keys/trusted_pkwm.c index bf42c6679245..b6b5697426a8 100644 --- a/security/keys/trusted-keys/trusted_pkwm.c +++ b/security/keys/trusted-keys/trusted_pkwm.c @@ -83,7 +83,7 @@ static int trusted_pkwm_seal(struct trusted_key_payload *= p, char *datablob) struct trusted_key_options *options =3D NULL; struct trusted_pkwm_options *pkwm =3D NULL; u8 *input_buf, *output_buf; - u32 output_len, input_len; + u64 output_len, input_len; int rc; =20 options =3D trusted_options_alloc(); @@ -130,7 +130,7 @@ static int trusted_pkwm_seal(struct trusted_key_payload= *p, char *datablob) static int trusted_pkwm_unseal(struct trusted_key_payload *p, char *databl= ob) { u8 *input_buf, *output_buf; - u32 input_len, output_len; + u64 input_len, output_len; int rc; =20 input_len =3D p->blob_len; --=20 2.52.0 From nobody Sat Sep 26 19:33:47 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 50AD43E0094; Mon, 31 Aug 2026 11:18:15 +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=1788175096; cv=none; b=MavIj3+5dSf70uh+yxPtk/0QeVxcHUyGcC+lMXA0CwfeYW+ChLENgPANCcdh+gOJwCLpbAaFQjsOV4FQanbk5/a5zKzpqTgNSac/FkFVYENxtPLOk4LeTMSAAkg9LT6vzY7HBkdDUpvKbmLpjSsGbltTjSstfEKKXCx6tDZwqTk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788175096; c=relaxed/simple; bh=WgeCkf7q5hYFdLSIuJUDqHLzHgj8fiXuKE8OiyGd/oY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rVReM6oYFUpJLfwPyYq/LpIXACs+31jzmjVGjTxzmB0mgoYC8obe8daTG+FsPNqQzj+t7bkh+6zQ6mnr0pe1fBwVFP21W8cupacw1ps3bP7l+O9QtqLi9XAtm19hWwSZ/ZJXTWxGBVcqPcGLG+cayvPyOnaG3Bf2mzqUefakVrY= 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=PShtSmON; 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="PShtSmON" 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 67V82VXh3960350; Mon, 31 Aug 2026 11:18:03 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=PV3cVrQcJkRs1i1F5 rp/AhTohaUA9pg0WqA1IdNOVMI=; b=PShtSmONMSrgXCW5lioKXXVCnX25NcuxE gqIO15Ax4RWhlH1aGpoeUZzfiErH5m2kq1DtXOn3HHyqDvuW0+lRantLUfrEowvy 4jC0RIOFYfRnGYglTMF7bQpXU/ztszCwRwYCWrn0qSCCiZI6Eir2sEQT7IEnDQmt j7jW41ULTHZzofeGAJQ+9McfR+RwzxWfRwKmA3TgA7wGRo+ak2XmY+Vgd7Oyylj6 XFjcIWEhIu8wCJWM0PY2lwlHn85mF4PJmoJx0a5PBxazQh23lKqBZ6jH5XJh5DZA 8vsUrnpzYUC5Nc8+NAOmJqdBUXOrOdPj4xy+S5SJlYfrJ/RM24QlA== 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 4gbq3r0u42-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:18:02 +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 67VBDFZp021934; Mon, 31 Aug 2026 11:18:01 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4gccexwach-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:18:01 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67VBHv4q39649708 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 31 Aug 2026 11:17:58 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D2EA62004B; Mon, 31 Aug 2026 11:17:57 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 42FA720040; Mon, 31 Aug 2026 11:17:54 +0000 (GMT) Received: from li-fc74f8cc-3279-11b2-a85c-ef5828687581.bl1-in.ibm.com (unknown [9.123.14.23]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 31 Aug 2026 11:17:53 +0000 (GMT) From: Srish Srinivasan To: linux-integrity@vger.kernel.org, keyrings@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, James.Bottomley@HansenPartnership.com, jarkko@kernel.org, zohar@linux.ibm.com, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org, nayna@linux.ibm.com, rnsastry@linux.ibm.com, ssrish@linux.ibm.com Subject: [PATCH v2 04/10] keys/trusted_keys: propagate wrapping key generation errors Date: Mon, 31 Aug 2026 16:47:32 +0530 Message-ID: <20260831111738.334857-5-ssrish@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260831111738.334857-1-ssrish@linux.ibm.com> References: <20260831111738.334857-1-ssrish@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-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=EIc2FVZC c=1 sm=1 tr=0 ts=6a9562ea cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=Li9DeLKnNFycptmB2j8A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX9recuVghaAAz 2WgN7ZAkQVN7cx2gNxGkxG30tYuMPsRYAgwF+ivoBL1z3x3Sa5QkF3q19eGRSOcvYbMBjyPPN7a knckmkXbU8IPoE7rGG48lAybJvQk9xb2XrUqh5+vEiQ/oEUanmPq6C7Lv5S8ZWqhUvDzyyDj7nz AtuB3sYySnl9PWwB6nDyHj5fYI50soAayigze9kuR0ZO0r/Cqd++MZfC7+tnGSAqxvPN9j8M8nv 9LGZX5guz/xchYhfRXx1KXsHvL6lCXdZuueHOODcKm44SMuebOmQgZFLQyzEop2w52dzJzqvWL4 ma4q0W8YfIMu8p2V9DyLcPLEEKsXbmOC+0tz3dP76ZiudH776hjsB5yjSHWGWLSG+sPFaLTz6ca f0QXaKltI0Ck1GIdxS027O11+dGrEevLwSvhzT3++xqHssUYS9ZFmmorL/tDBq7Jw658+1ci7fe NbcS4FS5yOlLgaNvHsw== X-Proofpoint-GUID: _AqKu64lJZO5KVmhO_Z_RGObs1c503Kj X-Proofpoint-ORIG-GUID: 5_uZ-5GU9o-a1Bo1qXRy5ctL9yrDOOe3 X-Proofpoint-Spam-Info: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX/yxUZ+unbHch iiwLFG/wjJ1kq60OK/5/+QpUFkUignmIUWPM+C48Mm82LP5guX4VjeM0If5XpXc+BiKFOR6n2rb Ydmg/mNCyQ9WzNYz15YPyNyzngZqcmk= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-31_03,2026-08-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 phishscore=0 spamscore=0 adultscore=0 lowpriorityscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608310095 Content-Type: text/plain; charset="utf-8" plpks_gen_wrapping_key() returns a negative errno when default wrapping key generation fails. However, trusted_pkwm_init() returns -EINVAL for all such failures, discarding the original error. Propagate the error returned by plpks_gen_wrapping_key() unchanged. Fixes: c99fcb0d735b ("keys/trusted_keys: establish PKWM as a trusted source= ") Cc: stable@vger.kernel.org Signed-off-by: Srish Srinivasan Tested-by: R Nageswara Sastry --- security/keys/trusted-keys/trusted_pkwm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/security/keys/trusted-keys/trusted_pkwm.c b/security/keys/trus= ted-keys/trusted_pkwm.c index b6b5697426a8..633a7674d065 100644 --- a/security/keys/trusted-keys/trusted_pkwm.c +++ b/security/keys/trusted-keys/trusted_pkwm.c @@ -170,7 +170,7 @@ static int trusted_pkwm_init(void) ret =3D plpks_gen_wrapping_key(); if (ret) { pr_err("Failed to generate default wrapping key\n"); - return -EINVAL; + return ret; } =20 return register_key_type(&key_type_trusted); --=20 2.52.0 From nobody Sat Sep 26 19:33:47 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 0573A3B14AB; Mon, 31 Aug 2026 11:18:19 +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=1788175101; cv=none; b=eSjWxEA+/2FbIr6igZnPAKIwDd/RtzA65/N8xkJdl7I9BWK52VcDYe0ObXXW8CQ9GQJWduKaNFS42L6IBEhwxI9BYJ65FMNNRSZfB/kXa89PMBjZyHqgTIE1OCgg9vfrRv+QOdGVT46ppkB6NSBPwE9SELThBLb8ZrGHol6FOhg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788175101; c=relaxed/simple; bh=uNWf7wq9t1ywDzK6n70DLtcjQtPFNWfjzVSf07SHSmQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hk7LubkJWkJgTUf8/1bYnn/Iw6Jdp4xGfeUjSVSVDGwZ9fWZshBtT3Ebua2QM3LuqrfDnBim6btbuDE1f3lgHqP0eKk9AJXDf28XerEY6lPRLzdNncOB4aWnrugcqf+9rJ8ITqklj7p/twJhh2rLSFGFG/jSJp3KaIcnu/FNl2g= 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=i/D07dpz; 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="i/D07dpz" Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67V8261k1640140; Mon, 31 Aug 2026 11:18:07 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=frp7duogNzNycmdIw xcJ+of17iEXKSGWdWO2svAK0g8=; b=i/D07dpzq9AeoJdn4R/cwyc1w3Qf4APOW 3Q+8EC68Dl9afAG6N5ZG+ps0mLbvQZWpbjuk7WjGinbmuNjutWJEDptynH2Wuzko DpJxwgjvGAJ0sQJY8je/WJiKY/Xs3KtNbSmmRvx86n9Zp15a5UgkZjbb8iGRbcjg NitJ7YsaIrz5zI5wBYVj32Wr9Loj/h9rBMiVo4KHF+XXgOiijONw60eNiaa4cUdw 3z+cKwRSpgVuCvsTW63igUgU/bfLSypWKae4Aoo3/C9JGC6d3f3hJl7dSQqdGlYD 7T4zF9KWyAfXabG5W9LJRc+fY7lpRF6kOA9nWH/5GgCSMP+8B6lKA== 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 4gbpx58vum-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:18:07 +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 67VAuIl6006239; Mon, 31 Aug 2026 11:18:05 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gcarjwhye-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:18:05 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67VBI1le43778328 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 31 Aug 2026 11:18:01 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 971452004D; Mon, 31 Aug 2026 11:18:01 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 421FB20040; Mon, 31 Aug 2026 11:17:58 +0000 (GMT) Received: from li-fc74f8cc-3279-11b2-a85c-ef5828687581.bl1-in.ibm.com (unknown [9.123.14.23]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 31 Aug 2026 11:17:58 +0000 (GMT) From: Srish Srinivasan To: linux-integrity@vger.kernel.org, keyrings@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, James.Bottomley@HansenPartnership.com, jarkko@kernel.org, zohar@linux.ibm.com, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org, nayna@linux.ibm.com, rnsastry@linux.ibm.com, ssrish@linux.ibm.com Subject: [PATCH v2 05/10] pseries/plpks: rename the default wrapping key macro Date: Mon, 31 Aug 2026 16:47:33 +0530 Message-ID: <20260831111738.334857-6-ssrish@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260831111738.334857-1-ssrish@linux.ibm.com> References: <20260831111738.334857-1-ssrish@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-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=PPc/P/qC c=1 sm=1 tr=0 ts=6a9562ef cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=ZsBnnucTmTjdUaLPtLYA:9 X-Proofpoint-GUID: 5tiAgGcZykoCRQGbUvJyvMTrAu5614um X-Proofpoint-ORIG-GUID: Y9CdX98Sh8gXT05O61HmjXZ1yOi7kYEP X-Proofpoint-Spam-Info: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX+aoURLXKmsuM DBAWmfDj3oKjEG3WZJ8U2p6z7OBCbcOUCmu+ir+hFNgwfD5l/9+W0LiuYwzVF7LJWSwBRGwlHCx rwTDiT8VRLUTrnSPCODpiTTtUdvaRCU= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfXxwiVX/ONW05N NU/OKpCEugcCmp4lbKNt70BptagjYeP13s+IBjkAJL06uQQvE8wy5OEIgQTlCcsVM6nXWGaIkom /5uZsS92yrKhxkC5xz3ORbht59We4zRr69eIla1T1yeNI+nldH+4tNTgEbX4EToA7q0B3xYJu8v oiw7Y7+pMsylydpOcd9BSM2/al2x6eLrLKXlZirXGhDPZDxXfLTxC1vD8J1+u6yL2FW+QDua8EP B7SpVMjLBkFxAf63efWdVtOz9B1FgU9kIQzIac7msoyneSPPwjJG2pnKahOApi1kHtjuwd23ODl 9Q12y/o37z+nqfj3oCWstANW6/7UuZiirv4g2OPd+9bJzfCQXj3xN3cPdTR0S2HowJIeNKeShkQ re3kejmf4N978VAT+5ZTJ5Gu+chwsFHD/B9oz8sAt7T0w4vdmSgXhecd6My2FUoI0eaMS9yJ0nS /kD3o/O5Y7nsr4GczIA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-31_03,2026-08-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 phishscore=0 adultscore=0 suspectscore=0 bulkscore=0 spamscore=0 priorityscore=1501 impostorscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608310095 Content-Type: text/plain; charset="utf-8" Rename PLPKS_WRAPKEY_NAME to PLPKS_DEFAULT_WRAPKEY_LABEL to clarify that the macro represents the default wrapping key label used by PKWM. Signed-off-by: Srish Srinivasan Tested-by: R Nageswara Sastry --- arch/powerpc/platforms/pseries/plpks.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/platforms/pseries/plpks.c b/arch/powerpc/platform= s/pseries/plpks.c index 45278c5a45c1..b553f7b130b6 100644 --- a/arch/powerpc/platforms/pseries/plpks.c +++ b/arch/powerpc/platforms/pseries/plpks.c @@ -10,7 +10,7 @@ #define pr_fmt(fmt) "plpks: " fmt =20 #define PLPKS_WRAPKEY_COMPONENT "PLPKSWR" -#define PLPKS_WRAPKEY_NAME "default-wrapping-key" +#define PLPKS_DEFAULT_WRAPKEY_LABEL "default-wrapping-key" =20 /* * To 4K align the {input, output} buffers to the {UN}WRAP H_CALLs @@ -938,7 +938,7 @@ int plpks_gen_wrapping_key(void) struct label *label; int rc =3D 0, pseries_status =3D 0; struct plpks_var var =3D { - .name =3D PLPKS_WRAPKEY_NAME, + .name =3D PLPKS_DEFAULT_WRAPKEY_LABEL, .namelen =3D strlen(var.name), .policy =3D PLPKS_WRAPPINGKEY, .os =3D PLPKS_VAR_LINUX, @@ -1033,7 +1033,7 @@ int plpks_wrap_object(u8 **input_buf, u64 input_len, = u16 wrap_flags, bool sb_audit_or_enforce_bit =3D wrap_flags & BIT(0); bool sb_enforce_bit =3D wrap_flags & BIT(1); struct plpks_var var =3D { - .name =3D PLPKS_WRAPKEY_NAME, + .name =3D PLPKS_DEFAULT_WRAPKEY_LABEL, .namelen =3D strlen(var.name), .os =3D PLPKS_VAR_LINUX, .component =3D PLPKS_WRAPKEY_COMPONENT --=20 2.52.0 From nobody Sat Sep 26 19:33:47 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 739D5342509; Mon, 31 Aug 2026 11:18:24 +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=1788175105; cv=none; b=BOHcd3rlR3YyXCI3hNum+K4HC1d4E9YFGdioj7f3UYKzxbp9JRD794r2ahiW4zhxHU5RRNRDml3qsAGS4vgPQtmCjDa9ZxIfs34knkjXLXNsBbwiBCr9+YLrZjGwBmzv9eRnsn4tKH72HSMidlOqVotJ0+zmxjDDKTigQjBfJLM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788175105; c=relaxed/simple; bh=LjQU7Ma8Ue+xgyozbaFeJ7euvrxjPoYaqz7TpOW04xs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qoJd0DWSuTFa/Qay42iG1yPrzWYUyH1mNcxtzdjIFYCsfpkfi6cQhbJBVJa0hqsEfy2KyH24sUunAeJbDnqxNPrGdjZFEFr6MVuqvxjSSBIDzsmWfNQXHSA824brvu4XMeDaZYB00FGW14BmI1B2HWgYu78YpxR1pAvXheGfgPg= 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=YGmaxDqv; 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="YGmaxDqv" 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 67V82H561697480; Mon, 31 Aug 2026 11:18:10 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=w3Ht7jwaLfz5JWi1v 2vUTqFscY0+qdcIxI1EC5n7pXs=; b=YGmaxDqvt+df9YDMY1m54PVLhLnHji3i5 xnpS/KfeAYf6PMINeQ7KCmTTeq+gUFbL9U8XJdj4R+zhO3XgzTU2B/TT4qXobRMG FYRTAVNfWlBbZfV5v1o+vv2KosMGmVbbOMSy4hdUb+tAB1eIm9okoOJWkGxxhTlo DCzAq0EbV5WcWOGd8QsiVOHW1IzyJWbawJjNnUeM+NUB4Cr4uulzN6wwjCvUwih3 R8NoqDYz0gCJDJZVelnlNvzlZQ+QwuEWu+oGszRzLgZV42XOBpqtWRSGf7W5eMlx S85mdroAZYoK6pVpw5lM6vuk1nH8CoxlXrv5h+TPuMIhBHORM9Jjg== 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 4gbq2t0pq9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:18:09 +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 67VBDNon007646; Mon, 31 Aug 2026 11:18:09 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4gc9rq5pw6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:18:08 +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 67VBI54e39977416 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 31 Aug 2026 11:18:05 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 542712004B; Mon, 31 Aug 2026 11:18:05 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 036A020040; Mon, 31 Aug 2026 11:18:02 +0000 (GMT) Received: from li-fc74f8cc-3279-11b2-a85c-ef5828687581.bl1-in.ibm.com (unknown [9.123.14.23]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 31 Aug 2026 11:18:01 +0000 (GMT) From: Srish Srinivasan To: linux-integrity@vger.kernel.org, keyrings@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, James.Bottomley@HansenPartnership.com, jarkko@kernel.org, zohar@linux.ibm.com, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org, nayna@linux.ibm.com, rnsastry@linux.ibm.com, ssrish@linux.ibm.com Subject: [PATCH v2 06/10] pseries/plpks: fix self-reference in plpks_var initializer Date: Mon, 31 Aug 2026 16:47:34 +0530 Message-ID: <20260831111738.334857-7-ssrish@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260831111738.334857-1-ssrish@linux.ibm.com> References: <20260831111738.334857-1-ssrish@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-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=bc1bluPB c=1 sm=1 tr=0 ts=6a9562f2 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=VwQbUJbxAAAA:8 a=yo0uri9pEEIi5ApSFXoA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX0VTWcXKJcSo+ Vb/0x8AzoGFca6UKjuLzbNWOOr3OgrjMyBIos7JZ9kjUaYxQntqJHIQGR206eT/JQbAHeu5WpnU 3kocEYOWXwHMFHt/W9erT5+gK/0nzRI= X-Proofpoint-ORIG-GUID: GwvuHEutnCeb4c21o8nvJVj8Mjp0s5H1 X-Proofpoint-GUID: w5ZmGw5Q36aGuR-2xXGTLi-eB92znNCq X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX1vJofBIIqFI3 5l2rixZZqruGsrjYXv1MatQ+hx98UKzPHl4OtmJAtGkGm4nMh1weTlnCU+30kLKR9a3INL3nknk eyIMW/N3hbbF+7OM7vsjQYz9LkJJ1ypzOKTcFUmL79KhAvhWXkgAAb0NGYtQPEmkNhfylhUHnYX lIOvgdYEb9cD9FFcMKfcfQUeaJRYM6SW/PRIHgkGqr4CJI6kp5zk3gwLZcUHvE0ClRi+DzcMiWC 6R0x0WLb5v0j0OruJwPSUrGTo2kgFNSi2XgWtcsUElY27DCPgMPbmkefc/T+MFZuLudH8toOFRg dfdMRO41weRqY6lyDzi/eCFH8DkxDTJDwtPdIETXap6dQxUhqT4jzMxffVUei+fuY6e7iTD5SUC S7qXaxokYDwgQf/Lp7ol2AhrDrzAiwDWlBBMNXWcTTpms6GrVKcYcZ+KKqclLndNTPOezNPN179 3qYpMgOLTIcPrsI0b7g== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-31_03,2026-08-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 adultscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 phishscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608310095 Content-Type: text/plain; charset="utf-8" In plpks_gen_wrapping_key() and plpks_wrap_object(), strlen(var.name) is used to initialize var.namelen within the same struct initializer. This references a member of var before initialization of var is complete. Use the compile-time length of PLPKS_DEFAULT_WRAPKEY_LABEL instead. Reported-by: R Nageswara Sastry Fixes: 133aa79e211d ("pseries/plpks: add HCALLs for PowerVM Key Wrapping Mo= dule") Cc: stable@vger.kernel.org Signed-off-by: Srish Srinivasan Tested-by: R Nageswara Sastry --- arch/powerpc/platforms/pseries/plpks.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/platforms/pseries/plpks.c b/arch/powerpc/platform= s/pseries/plpks.c index b553f7b130b6..d582c786ccad 100644 --- a/arch/powerpc/platforms/pseries/plpks.c +++ b/arch/powerpc/platforms/pseries/plpks.c @@ -939,7 +939,7 @@ int plpks_gen_wrapping_key(void) int rc =3D 0, pseries_status =3D 0; struct plpks_var var =3D { .name =3D PLPKS_DEFAULT_WRAPKEY_LABEL, - .namelen =3D strlen(var.name), + .namelen =3D sizeof(PLPKS_DEFAULT_WRAPKEY_LABEL) - 1, .policy =3D PLPKS_WRAPPINGKEY, .os =3D PLPKS_VAR_LINUX, .component =3D PLPKS_WRAPKEY_COMPONENT @@ -1034,7 +1034,7 @@ int plpks_wrap_object(u8 **input_buf, u64 input_len, = u16 wrap_flags, bool sb_enforce_bit =3D wrap_flags & BIT(1); struct plpks_var var =3D { .name =3D PLPKS_DEFAULT_WRAPKEY_LABEL, - .namelen =3D strlen(var.name), + .namelen =3D sizeof(PLPKS_DEFAULT_WRAPKEY_LABEL) - 1, .os =3D PLPKS_VAR_LINUX, .component =3D PLPKS_WRAPKEY_COMPONENT }; --=20 2.52.0 From nobody Sat Sep 26 19:33:47 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 10F3E3B14AB; Mon, 31 Aug 2026 11:18:27 +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=1788175109; cv=none; b=VXWo59EJIqRsw6+r3nDfik0eYBKKMphTJSeEcvegGRkeAi/1rNSqYLlYQZh20Nf1HgzlFHxFSkB2TWxkdVvi9mNB//Wce+cLK37KpQIPJS7BOgxhAtgqt8vDWa5MPGiLVTjQYJV3pnvd7dNss9c9EM8VUorJBf4umX/jFpiH4uA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788175109; c=relaxed/simple; bh=ppOq9YOpmGywaNuX1inE/XhGeWpNGHm+tW35VvMwni0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EKQLNj7O+710gogGH+it56ZG9gNS/9HTEr4LEnr/DS92+3wFQTdZhAcJ3X2eOorgBL9G/AKT5sNj6fGBx0N3aXRFGpYr2XH79FiwMrDJeAZW5oXy3uNrtdUYeUiy0CTvA+dXIDE7V8hgd7kJXVWQMp5A7ZGt1PWaj2S5ZTx9YCA= 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=PedxxZTO; 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="PedxxZTO" 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 67V82IoZ1697486; Mon, 31 Aug 2026 11:18:14 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=YKwCvUdoAOC3svV0Z XnY6wMaAycWuH2JbGu1LQVNZ0o=; b=PedxxZTOIEE2QaF791z3yiso25IUM5wyI XQWH9SGzbhF1E0I4OrlQ+gL/lBdjpGZgfYgfyevNPrIZfjFffmszYWViqx694/b0 oTbRD1bzhFVFgN8QS3+a27/PK/JpT5rfKZ1DKI41VwvFD7t7rf43Nr79X/kUb6JA AqlElq+p3wAHeKy622um8/xTAOvzVBageRtadn7SfghwY8/gd08ejvdzcFX0WUpI THTNZ9sUizJky31bIJVvsC2O+NJyDr8+QuC7qeHg/gPi9ddu3N2D9yZlxINA82dT YAng82kk4vjTYeI9rtIx+3z2DVbcDvf57QoMHfL816Xcd5S4YUoqA== 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 4gbq2t0pqj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:18:14 +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 67VBDHsq009196; Mon, 31 Aug 2026 11:18:13 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gca4vwm64-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:18:13 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67VBI9wP41484750 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 31 Aug 2026 11:18:09 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 375FF2004B; Mon, 31 Aug 2026 11:18:09 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id AAA9120040; Mon, 31 Aug 2026 11:18:05 +0000 (GMT) Received: from li-fc74f8cc-3279-11b2-a85c-ef5828687581.bl1-in.ibm.com (unknown [9.123.14.23]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 31 Aug 2026 11:18:05 +0000 (GMT) From: Srish Srinivasan To: linux-integrity@vger.kernel.org, keyrings@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, James.Bottomley@HansenPartnership.com, jarkko@kernel.org, zohar@linux.ibm.com, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org, nayna@linux.ibm.com, rnsastry@linux.ibm.com, ssrish@linux.ibm.com Subject: [PATCH v2 07/10] pseries/plpks: hide wrapping_features when unsupported Date: Mon, 31 Aug 2026 16:47:35 +0530 Message-ID: <20260831111738.334857-8-ssrish@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260831111738.334857-1-ssrish@linux.ibm.com> References: <20260831111738.334857-1-ssrish@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-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=bc1bluPB c=1 sm=1 tr=0 ts=6a9562f6 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=Lnrgi2ogIeW2OlIaXxgA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX3U/JLDnmVfCA 1IVH9EQLtjted0Xt4sdm4SgrbVntKJBMNrptHZgXCtocHs5qRgLi4ArwQHgtUHmp5V4iJMDw30c 2eSQHmR4YvMv3M1+A6w2Zgi8gJ0oChA= X-Proofpoint-ORIG-GUID: eubbGhSrzusjcLOREbg1CxAp5KI2130N X-Proofpoint-GUID: ZNgizUtJ58x0q8Ed72G2juWvjoLK0iI2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfXzR6Ogb9xWALY 6rSlJftl/ApkGQf/GfsZOzzakRkOTzcUx4E3ICJe+KmooCmE7ofUsY5gXcyvJJ7CxAoGz2/ceZB mf2+2k68dQQ+u+NNcpoxEIKdKnCKSMnN5l29ml3zWnOP9/8zc3NeL+RJGMrQyKmhZXn7pyJQuT3 xfdgDLKGyJZDqNicoXIJew/2MAk1Fq1k01EvKXYQ6c0pPuyHXiGtBvHsn/fPIK9QIRKu3U7asl6 WCMCzqfOhkVj3diun6WMwA+X/WIMj6W6QB8TtrRcXTcMHZ3V9o67DgIOquJlX/mM6q0ISBhMhc9 xJToEHOx0pDR+foRhmhAHrZxrCB5v6o5br5cfVBbibw/MJvJKrbORFqjM3lNj3jziRz5V/2OBP2 bn37vK9yv0wgfxAWCuJfMRl/Czxa/v59YM4Gvk7yrmABi/5bQO8vsaKocvefOoP/eKnvxCr8Hsw cDIQe8SEPX3pvUe4BTg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-31_03,2026-08-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 suspectscore=0 adultscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 phishscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608310095 Content-Type: text/plain; charset="utf-8" The PLPKS wrapping features config is only valid on systems that support the "Key Wrapping" feature. Currently the config is always exposed, even when the feature is unavailable. Add is_visible attribute_group callback to suppress the wrapping features sysfs attribute when the "Key Wrapping" feature is not supported. Declare the attribute group static const, as it is not modified after initialization. Fixes: 447eb1d5ef00 ("pseries/plpks: expose PowerVM wrapping features via t= he sysfs") Cc: stable@vger.kernel.org Signed-off-by: Srish Srinivasan Tested-by: R Nageswara Sastry --- arch/powerpc/platforms/pseries/plpks-sysfs.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/platforms/pseries/plpks-sysfs.c b/arch/powerpc/pl= atforms/pseries/plpks-sysfs.c index c2ebcbb41ae3..f2436229f323 100644 --- a/arch/powerpc/platforms/pseries/plpks-sysfs.c +++ b/arch/powerpc/platforms/pseries/plpks-sysfs.c @@ -45,6 +45,16 @@ static const struct attribute *config_attrs[] =3D { =20 static struct kobject *plpks_kobj, *plpks_config_kobj; =20 +static umode_t plpks_config_attr_is_visible(struct kobject *kobj, + struct attribute *attr, int n) +{ + if (attr =3D=3D &attr_wrapping_features.attr && + !plpks_wrapping_is_supported()) + return 0; + + return attr->mode; +} + int plpks_config_create_softlink(struct kobject *from) { if (!plpks_config_kobj) @@ -52,13 +62,13 @@ int plpks_config_create_softlink(struct kobject *from) return sysfs_create_link(from, plpks_config_kobj, "config"); } =20 +static const struct attribute_group config_group =3D { + .attrs =3D (struct attribute **)config_attrs, + .is_visible =3D plpks_config_attr_is_visible, +}; + static __init int plpks_sysfs_config(struct kobject *kobj) { - struct attribute_group config_group =3D { - .name =3D NULL, - .attrs =3D (struct attribute **)config_attrs, - }; - return sysfs_create_group(kobj, &config_group); } =20 --=20 2.52.0 From nobody Sat Sep 26 19:33:47 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 CF2F73438B9; Mon, 31 Aug 2026 11:18:33 +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=1788175116; cv=none; b=jEt4D2+0WZUEE/mIt7J4LnoMLZrhCxG36keovSg9sv7pyO6ObOfFcPMjUI4875e3EWS8MfcAmsR1LtygAHVaIneqVGjDu2gKasYoWSumwTv5hw2X3yWHq90p7tM/ShrpiBt7XVflQt+IBy5JCbJfFSmCuvvZguYFOdNUp1k5T2E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788175116; c=relaxed/simple; bh=B0ZAwzMDkKcnjNc0A29yDJgyotSn8dK9sfK799avYXQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tFwyhCT/D5y3Wv3j/QH2M3lbNn3RohZw7LNxWI/Ap1nUYwIssCzb5myGMWE+EIfSmqpXh9M5ewWtfJqVQ9SRz8aoZuU3cFBREGugDVInZuaUG1xndOMX6a77YgLg2I8KoG7CmqhzRhgic8uhq9mSYGfcTEREwY3A+/XUdgGVoy4= 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=FnnU46W5; 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="FnnU46W5" 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 67V82KXR1530950; Mon, 31 Aug 2026 11:18:18 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=tglP/avkIQCVsusv9 8Mr1exUtoriJHUwS3Ng6KfjbCo=; b=FnnU46W5atta///LUQ3H5EEsxvgeTeXM0 /q9KrcLFYgoN3SU8OSLxhCHMBZw9KozNg9+IiQCrGVuHtmQSmn8kSmbJQfYCmFHu vAtRejFSD2WyZb+MiaLVqEWtaonfu45BrTdAatv2fH3glgMiNXQ7o1DLjLQonMQU l1LVGcw0DBqphuVE+n2oX0Cyt+ThBv6/KkQMR9xI8ImUefnCtYfpvfLiymeBib3r MsqHk1HL4tqcvmT3AJgTyX4VKEk4rgyotCGjLSpN55+aRwChGmxYsGQJyLDqnNKs BMpN6pWkJriJgczmrx9uWtt3Ppz6AeOcimgb9AyIBNRrtnTbIpRAw== 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 4gbmuhh1ps-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:18:17 +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 67VAuMEU006465; Mon, 31 Aug 2026 11:18:17 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gcarjwj0k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:18:17 +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 67VBIDXL35848580 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 31 Aug 2026 11:18:13 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 26BC32004B; Mon, 31 Aug 2026 11:18:13 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9B15320040; Mon, 31 Aug 2026 11:18:09 +0000 (GMT) Received: from li-fc74f8cc-3279-11b2-a85c-ef5828687581.bl1-in.ibm.com (unknown [9.123.14.23]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 31 Aug 2026 11:18:09 +0000 (GMT) From: Srish Srinivasan To: linux-integrity@vger.kernel.org, keyrings@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, James.Bottomley@HansenPartnership.com, jarkko@kernel.org, zohar@linux.ibm.com, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org, nayna@linux.ibm.com, rnsastry@linux.ibm.com, ssrish@linux.ibm.com Subject: [PATCH v2 08/10] pseries/plpks: add HCALLs for PKWM wrapping key life cycle management Date: Mon, 31 Aug 2026 16:47:36 +0530 Message-ID: <20260831111738.334857-9-ssrish@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260831111738.334857-1-ssrish@linux.ibm.com> References: <20260831111738.334857-1-ssrish@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-Reinject: loops=2 maxloops=12 X-Proofpoint-GUID: 0-Q5Knvi1UbSH3PxEuwalD14B00sespG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX0pNxTkpPIu0o Emd9W3dtN+TAcRPWD0m1QQXFnofU69cnhiZJr8lNBHIckSkh635AiWRveEdd4cFL0YB6Z22ayz5 1uXWI0fPNSVLLza5y8CJH9tWqrN1Aj2Nc6ZbU6kx329cHvJNQysDCPZ6RWRpxRobotSjzC0xXa0 o9GZhRdqhzLbcaC/Kyu+tc+nKBIEukIn+9896DANPY/32BfMSZ/j8VVOKShrlH5lP062LV6yLuB 2CAwPyglqJhVr7YWOfxFphsG3Onazm+KMZ/5XJsVOus5B4tjBkhEGjpFy+fT+ALiE+09s4SDYpc JJ/yS899hSe/AO2vbpvrbPbZXsP2T9K5RXYdoCxcuo8zB6ZFxXLH9KSFbI8j0Ifn1ZmVcp73pPr yjAhqZWkDuQkVMscmNdEj/FFQ5gIBBlnhQhichLXL1MgwMqdQn3W7Dd869OZrRCtRhVDR3ZFmVZ ZDtX7IBndQkvwKadAXQ== X-Authority-Analysis: v=2.4 cv=Osl/DS/t c=1 sm=1 tr=0 ts=6a9562fa cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=lWQKvBrNlG38MY5WF7oA:9 a=4Rbdz_3SWuTzBNBt:21 X-Proofpoint-Spam-Info: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX8NshWiIoHy1b Jz8aHYuQPCRhn49/9yA78e1ifT5GvC59owus9E8Y7YnOTh+Xjk8bfiuoamZ/WUEL10VKZuLXt2X rVjF2L5ez/mIcHY+gcAHH1vdkfxmQmY= X-Proofpoint-ORIG-GUID: XHSntZ2yaw-S7o47nS8qRx7Tx8ahJ42Y X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-31_03,2026-08-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 suspectscore=0 bulkscore=0 lowpriorityscore=0 adultscore=0 impostorscore=0 phishscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608310095 Content-Type: text/plain; charset="utf-8" The PKWM trusted source uses a single wrapping key per LPAR, created only once during trust source initialization. All the wrap and unwrap requests are bound to this default wrapping key. Implement H_PKS_REVOKE_OBJECT, H_PKS_UNREVOKE_OBJECT, and H_PKS_GET_OBJECTLABELS HCALLs to enable support for revoking and unrevoking PKWM wrapping keys, and for retrieving wrapping key labels. The label retrieval operation (H_PKS_GET_OBJECTLABELS) applies to all wrapping keys including the default one, while the life cycle operations (H_PKS_REVOKE_OBJECT/H_PKS_UNREVOKE_OBJECT) apply only to user-created wrapping keys. Signed-off-by: Srish Srinivasan Tested-by: R Nageswara Sastry --- Documentation/arch/powerpc/papr_hcalls.rst | 33 ++ arch/powerpc/include/asm/hvcall.h | 5 +- arch/powerpc/include/asm/plpks.h | 15 + arch/powerpc/platforms/pseries/plpks.c | 487 ++++++++++++++++++++- 4 files changed, 536 insertions(+), 4 deletions(-) diff --git a/Documentation/arch/powerpc/papr_hcalls.rst b/Documentation/arc= h/powerpc/papr_hcalls.rst index 44c9c8b32ae3..3455b403a048 100644 --- a/Documentation/arch/powerpc/papr_hcalls.rst +++ b/Documentation/arch/powerpc/papr_hcalls.rst @@ -343,6 +343,39 @@ is returned to the caller. H_PKS_UNWRAP_OBJECT is used to unwrap an object that was previously wrappe= d with H_PKS_WRAP_OBJECT. =20 +**H_PKS_REVOKE_OBJECT** + +| Input: authorization, objectlabel, objectlabellen, flags +| Out: *object policy* +| Return Value: *H_Success, H_Function, H_State, H_Parameter, H_P2, H_P3, = H_P4, + H_Authority, H_Not_Found, H_Busy, H_Aborted* + +H_PKS_REVOKE_OBJECT is used to revoke an object in Platform Keystore. + + +**H_PKS_UNREVOKE_OBJECT** + +| Input: authorization, objectlabel, objectlabellen, flags +| Out: *object policy* +| Return Value: *H_Success, H_Function, H_State, H_Parameter, H_P2, H_P3, = H_P4, + H_Authority, H_Not_Found, H_Busy, H_Aborted* + +H_PKS_UNREVOKE_OBJECT is used to unrevoke an object that was previously re= voked +with H_PKS_REVOKE_OBJECT in Platform Keystore. + + +**H_PKS_GET_OBJECTLABELS** + +| Input: authorization, continueToken, out, outlen +| Out: *continue-token, number of object labels in the returned list, obje= ct + label list* +| Return Value: *H_Success, H_Function, H_State, H_Parameter, H_P2, H_P3, = H_P4, + H_Authority, H_Busy, H_Aborted, H_Continue* + +H_PKS_GET_OBJECTLABELS is used to retrieve a list of object labels owned b= y the +specified consumer. + + References =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D .. [1] "Power Architecture Platform Reference" diff --git a/arch/powerpc/include/asm/hvcall.h b/arch/powerpc/include/asm/h= vcall.h index dff90a7d7f70..4d4c2ce1dd87 100644 --- a/arch/powerpc/include/asm/hvcall.h +++ b/arch/powerpc/include/asm/hvcall.h @@ -340,6 +340,7 @@ #define H_PKS_GET_CONFIG 0x41C #define H_PKS_SET_PASSWORD 0x420 #define H_PKS_GEN_PASSWORD 0x424 +#define H_PKS_GET_OBJECTLABELS 0x428 #define H_PKS_WRITE_OBJECT 0x42C #define H_PKS_GEN_KEY 0x430 #define H_PKS_READ_OBJECT 0x434 @@ -362,7 +363,9 @@ #define H_GUEST_DELETE 0x488 #define H_PKS_WRAP_OBJECT 0x490 #define H_PKS_UNWRAP_OBJECT 0x494 -#define MAX_HCALL_OPCODE H_PKS_UNWRAP_OBJECT +#define H_PKS_REVOKE_OBJECT 0x4AC +#define H_PKS_UNREVOKE_OBJECT 0x4B0 +#define MAX_HCALL_OPCODE H_PKS_UNREVOKE_OBJECT =20 /* Scope args for H_SCM_UNBIND_ALL */ #define H_UNBIND_SCOPE_ALL (0x1) diff --git a/arch/powerpc/include/asm/plpks.h b/arch/powerpc/include/asm/pl= pks.h index 8b2ffb27db5a..c39d1f07017e 100644 --- a/arch/powerpc/include/asm/plpks.h +++ b/arch/powerpc/include/asm/plpks.h @@ -25,6 +25,7 @@ #define PLPKS_SIGNEDUPDATE PPC_BIT32(7) // Object can only be modified by = signed updates #define PLPKS_WRAPPINGKEY PPC_BIT32(8) // Object contains a wrapping key #define PLPKS_HVPROVISIONED PPC_BIT32(28) // Hypervisor has provisioned th= is object +#define PLPKS_REVOKED PPC_BIT32(30) // Object is revoked =20 // Signature algorithm flags from signed_update_algorithms #define PLPKS_ALG_RSA2048 PPC_BIT(0) @@ -123,6 +124,20 @@ int plpks_wrap_object(u8 **input_buf, u64 input_len, u= 16 wrap_flags, =20 int plpks_unwrap_object(u8 **input_buf, u64 input_len, u8 **output_buf, u64 *output_len); + +int plpks_revoke_wrapping_key(struct plpks_var *var); + +int plpks_unrevoke_wrapping_key(struct plpks_var *var); + +int plpks_del_wrapping_key(struct plpks_var *var); + +int plpks_is_wrapping_key_revoked(struct plpks_var *var); + +int plpks_get_object_labels(u8 **output_buf, u64 *output_len, + char *comp_prefix); + +bool plpks_revoke_is_supported(void); + #else // CONFIG_PSERIES_PLPKS static inline bool plpks_is_available(void) { return false; } static inline u16 plpks_get_passwordlen(void) { BUILD_BUG(); } diff --git a/arch/powerpc/platforms/pseries/plpks.c b/arch/powerpc/platform= s/pseries/plpks.c index d582c786ccad..3b1e6f00b4ae 100644 --- a/arch/powerpc/platforms/pseries/plpks.c +++ b/arch/powerpc/platforms/pseries/plpks.c @@ -23,8 +23,17 @@ */ #define PLPKS_WRAPPING_BUF_DIFF 1024 =20 +/* + * Maximum length for the buffer to store the retrieved object labels + */ +#define PLPKS_OBJLABEL_BUF_MAX 2550 + +#define PLPKS_OBJLABEL_LEN_FIELD_SIZE 2 +#define PLPKS_OBJLABEL_PREFIX_LEN 8 + #define PLPKS_WRAP_INTERFACE_BIT 3 #define PLPKS_WRAPPING_KEY_LENGTH 32 +#define PLPKS_REVOKE_INTERFACE_BIT 4 =20 #define WRAPFLAG_BE_BIT_SET(be_bit) \ BIT_ULL(63 - (be_bit)) @@ -46,6 +55,7 @@ #include #include #include +#include #include #include #include @@ -67,6 +77,7 @@ static u32 maxlargeobjectsize; static u64 signedupdatealgorithms; static u64 wrappingfeatures; static bool wrapsupport; +static bool revokesupport; =20 struct plpks_auth { u8 version; @@ -146,6 +157,9 @@ static int pseries_status_to_err(int rc) case H_ABORTED: err =3D -EIO; break; + case H_CONTINUE: + err =3D -EAGAIN; + break; default: err =3D -EINVAL; } @@ -312,6 +326,7 @@ static int _plpks_get_config(void) signedupdatealgorithms =3D be64_to_cpu(config->signedupdatealgorithms); wrappingfeatures =3D be64_to_cpu(config->wrappingfeatures); wrapsupport =3D config->flags & PPC_BIT8(PLPKS_WRAP_INTERFACE_BIT); + revokesupport =3D config->flags & PPC_BIT8(PLPKS_REVOKE_INTERFACE_BIT); =20 // Validate that the numbers we get back match the requirements of the sp= ec if (maxpwsize < 32) { @@ -831,9 +846,6 @@ static int plpks_read_var(u8 consumer, struct plpks_var= *var) if (var->namelen > PLPKS_MAX_NAME_SIZE) return -EINVAL; =20 - if (var->policy & PLPKS_WRAPPINGKEY) - return -EPERM; - auth =3D construct_auth(consumer); if (IS_ERR(auth)) return PTR_ERR(auth); @@ -903,6 +915,23 @@ bool plpks_wrapping_is_supported(void) } EXPORT_SYMBOL_GPL(plpks_wrapping_is_supported); =20 +/** + * plpks_revoke_is_supported() - Get the H_PKS_REVOKE_OBJECT and + * H_PKS_UNREVOKE_OBJECT interfaces availability status for the LPAR. + * + * Successful execution of the H_PKS_GET_CONFIG HCALL during initialization + * sets bit 4 of the flags variable in the PLPKS config structure if the + * H_PKS_REVOKE_OBJECT and H_PKS_UNREVOKE_OBJECT interfaces are supported. + * + * Returns: true if the H_PKS_REVOKE_OBJECT and H_PKS_UNREVOKE_OBJECT inte= rfaces + * are supported, false if not. + */ +bool plpks_revoke_is_supported(void) +{ + return revokesupport; +} +EXPORT_SYMBOL_GPL(plpks_revoke_is_supported); + /** * plpks_gen_wrapping_key() - Generate a new random key with the 'wrapping= key' * policy set. @@ -1189,6 +1218,458 @@ int plpks_unwrap_object(u8 **input_buf, u64 input_l= en, u8 **output_buf, } EXPORT_SYMBOL_GPL(plpks_unwrap_object); =20 +/** + * plpks_revoke_wrapping_key() - Revoke a wrapping key stored in the PLPKS. + * @var: variable representing the wrapping key to be revoked + * + * The H_PKS_REVOKE_OBJECT HCALL revokes an object stored in the PLPKS. + * + * Possible reasons for the returned errno values: + * + * -ENXIO if PLPKS is not supported + * -EIO if PLPKS access is blocked due to the LPAR's state + * if PLPKS modification is blocked due to the LPAR's state + * if an error occurred while processing the request + * -EINVAL if invalid authorization parameter + * if invalid wrapping key label parameter + * if invalid wrapping key label length parameter + * if invalid or unsupported wrapping key revoking flags + * -EPERM if access is denied + * -ENOENT if the requested wrapping key was not found + * -EBUSY if unable to handle the request or long running operation + * initiated, retry later. + * + * Returns: On success 0 is returned, a negative errno if not. + */ +int plpks_revoke_wrapping_key(struct plpks_var *var) +{ + unsigned long retbuf[PLPAR_HCALL_BUFSIZE] =3D { 0 }; + struct plpks_auth *auth =3D NULL; + struct label *label; + u64 objrevokeflags =3D 0; + int rc =3D 0, pseries_status =3D 0; + + if (!var) + return -EINVAL; + + if (!var->name || !*var->name) { + pr_err("key label cannot be NULL/empty\n"); + rc =3D -EINVAL; + goto out; + } + + if (!strcmp((char *)var->name, PLPKS_DEFAULT_WRAPKEY_LABEL)) { + pr_warn("the default wrapping key must not be revoked!\n"); + rc =3D -EPERM; + goto out; + } + + auth =3D construct_auth(PLPKS_OS_OWNER); + if (IS_ERR(auth)) { + rc =3D PTR_ERR(auth); + goto out; + } + + label =3D construct_label(var->component, var->os, var->name, + var->namelen); + if (IS_ERR(label)) { + rc =3D PTR_ERR(label); + goto out; + } + + rc =3D plpar_hcall(H_PKS_REVOKE_OBJECT, retbuf, virt_to_phys(auth), + virt_to_phys(label), label->size, objrevokeflags); + + pseries_status =3D rc; + rc =3D pseries_status_to_err(rc); + + if (rc) { + pr_err("H_PKS_REVOKE_OBJECT failed. pseries_status=3D%d, rc=3D%d\n", + pseries_status, rc); + } + + if (!rc || (rc =3D=3D -EPERM && retbuf[0])) + var->policy =3D (u32)retbuf[0]; + + kfree(label); +out: + kfree(auth); + return rc; +} +EXPORT_SYMBOL_GPL(plpks_revoke_wrapping_key); + +/** + * plpks_unrevoke_wrapping_key() - Unrevoke a revoked wrapping key in the = PLPKS. + * @var: variable representing the revoked wrapping key to be unrevoked + * + * The H_PKS_UNREVOKE_OBJECT HCALL unrevokes a revoked object stored in the + * PLPKS. + * + * Possible reasons for the returned errno values: + * + * -ENXIO if PLPKS is not supported + * -EIO if PLPKS access is blocked due to the LPAR's state + * if PLPKS modification is blocked due to the LPAR's state + * if an error occurred while processing the request + * -EINVAL if invalid authorization parameter + * if invalid object label parameter + * if invalid object label length parameter + * if invalid or unsupported object revoking flags + * -EPERM if access is denied + * -ENOENT if the requested object was not found + * -EBUSY if unable to handle the request or long running operation + * initiated, retry later. + * + * Returns: On success 0 is returned, a negative errno if not. + */ +int plpks_unrevoke_wrapping_key(struct plpks_var *var) +{ + unsigned long retbuf[PLPAR_HCALL_BUFSIZE] =3D { 0 }; + struct plpks_auth *auth =3D NULL; + struct label *label; + u64 objrevokeflags =3D 0; + int rc =3D 0, pseries_status =3D 0; + + if (!var) + return -EINVAL; + + if (!var->name || !*var->name) { + pr_err("key label cannot be NULL/empty\n"); + rc =3D -EINVAL; + goto out; + } + + if (!strcmp((char *)var->name, PLPKS_DEFAULT_WRAPKEY_LABEL)) { + pr_warn("unrevoke on the default wrapping key is invalid\n"); + rc =3D -EINVAL; + goto out; + } + + auth =3D construct_auth(PLPKS_OS_OWNER); + if (IS_ERR(auth)) { + rc =3D PTR_ERR(auth); + goto out; + } + + label =3D construct_label(var->component, var->os, var->name, + var->namelen); + if (IS_ERR(label)) { + rc =3D PTR_ERR(label); + goto out; + } + + rc =3D plpar_hcall(H_PKS_UNREVOKE_OBJECT, retbuf, + virt_to_phys(auth), virt_to_phys(label), + label->size, objrevokeflags); + + pseries_status =3D rc; + rc =3D pseries_status_to_err(rc); + + if (rc) + pr_err("H_PKS_UNREVOKE_OBJECT failed. pseries_status=3D%d, rc=3D%d\n", + pseries_status, rc); + + if (!rc || (rc =3D=3D -EPERM && retbuf[0])) + var->policy =3D (u32)retbuf[0]; + + kfree(label); +out: + kfree(auth); + return rc; +} +EXPORT_SYMBOL_GPL(plpks_unrevoke_wrapping_key); + +/** + * plpks_is_wrapping_key_revoked() - Check if a given wrapping key has been + * revoked. + * @var: variable representing the wrapping key to be checked + * + * When the H_PKS_READ_OBJECT HCALL tries reads an object that exists but = when + * the policy is not met, it returns H_AUTHORITY along with the 4-byte obj= ect + * policy. This policy is inspected to determine if the object has been re= voked. + * + * Possible reasons for the returned errno values: + * + * -ENXIO if PLPKS is not supported + * -EIO if PLPKS access is blocked due to the LPAR's state + * if an error occurred while processing the request + * -EINVAL if invalid authorization parameter + * if invalid object label parameter + * if invalid object label len parameter + * if invalid output data parameter + * if invalid output data len parameter + * -EPERM if access is denied + * -ENOENT if the requested object was not found + * -EFBIG if the requested object couldn't be + * stored in the buffer provided + * -EBUSY if unable to handle the request + * + * Returns: 1 is returned if the wrapping key has been revoked. 0 is retur= ned if + * the wrapping key has not been revoked. Otherwise, a negative errno + * is returned. + */ +int plpks_is_wrapping_key_revoked(struct plpks_var *var) +{ + int rc; + + if (!var) + return -EINVAL; + + if (!var->name || !*var->name) { + pr_err("key label cannot be NULL/empty\n"); + rc =3D -EINVAL; + goto out; + } + + rc =3D plpks_read_var(PLPKS_OS_OWNER, var); + if (!rc) { + pr_err("unexpected successful read of wrapping key\n"); + rc =3D -EIO; + } else if (rc =3D=3D -EPERM) { + if (var->policy & PLPKS_WRAPPINGKEY) { + if (var->policy & PLPKS_REVOKED) + rc =3D 1; + else + rc =3D 0; + } + } + +out: + return rc; +} +EXPORT_SYMBOL_GPL(plpks_is_wrapping_key_revoked); + +/** + * plpks_del_wrapping_key() - Delete a wrapping key from the PLPKS. + * @var: variable representing the revoked wrapping key to be deleted + * + * The plpks_remove_var function removes the specified variable and its da= ta + * from the PLPKS by invoking the H_PKS_REMOVE_OBJECT HCALL. + * + * Possible reasons for the returned errno values: + * + * -ENXIO if PLPKS is not supported + * -EIO if PLPKS access is blocked due to the LPAR's state + * if PLPKS modification is blocked due to the LPAR's state + * if an error occurred while processing the request + * -EINVAL if invalid authorization parameter + * if invalid object label parameter + * if invalid object label len parameter + * -EPERM if access is denied + * -ENOENT if the requested object was not found + * -EBUSY if unable to handle the request + * + * Returns: On success 0 is returned, a negative errno if not. + */ +int plpks_del_wrapping_key(struct plpks_var *var) +{ + int rc; + struct plpks_var_name vname; + + if (!var) + return -EINVAL; + + if (!var->name || !*var->name) { + pr_err("key label cannot be NULL/empty\n"); + rc =3D -EINVAL; + goto out; + } + + if (!strcmp((char *)var->name, PLPKS_DEFAULT_WRAPKEY_LABEL)) { + pr_warn("the default wrapping key must not be deleted!\n"); + rc =3D -EPERM; + goto out; + } + + rc =3D plpks_is_wrapping_key_revoked(var); + if (rc =3D=3D 1) { + vname =3D (struct plpks_var_name) { + .name =3D var->name, + .namelen =3D var->namelen + }; + + rc =3D plpks_remove_var(PLPKS_WRAPKEY_COMPONENT, var->os, + vname); + if (rc) + pr_err("deletion of <%s> failed. rc=3D%d\n", + (char *)var->name, rc); + goto out; + } else if (!rc) { + pr_err("revoke <%s> before deletion\n", (char *)var->name); + rc =3D -EPERM; + goto out; + } else { + pr_err("revocation status check failed for <%s>. rc =3D %d\n", + (char *)var->name, rc); + } + +out: + return rc; +} +EXPORT_SYMBOL_GPL(plpks_del_wrapping_key); + +/** + * plpks_get_object_labels() - retrieve a list of object labels for the ob= jects + * stored in the PLPKS + * @output_buf: buffer to store the retrieved object labels + * @output_len: number of object labels retrieved + * @comp_prefix: component prefix string + * + * The H_PKS_GET_OBJECTLABELS HCALL retrieves a list of object labels for = the + * objects with the given component prefix stored in the PLPKS. + * + * Possible reasons for the returned errno values: + * + * -ENXIO if PLPKS is not supported + * -EIO if PLPKS access is blocked due to the LPAR's state + * if PLPKS modification is blocked due to the LPAR's state + * if an error occurred while processing the request + * -EINVAL if invalid authorization parameter + * if invalid output buffer parameter + * if invalid output buffer length parameter + * if invalid continue token parameter + * if the provided component prefix is NULL + * -EPERM if access is denied + * -EBUSY if unable to handle the request or long running operation + * initiated, retry later. + * + * Returns: On success 0 is returned, a negative errno if not. + */ +int plpks_get_object_labels(u8 **output_buf, u64 *output_len, + char *comp_prefix) +{ + unsigned long retbuf[PLPAR_HCALL_BUFSIZE] =3D { 0 }; + u8 *labels_buf =3D NULL; + u8 *tmp_buf =3D NULL; + struct plpks_auth *auth =3D NULL; + struct label_attr *metadata =3D NULL; + u16 label_len; + u64 labels_count; + u64 continuetoken =3D 0, output_buf_len =3D 0; + int rc =3D 0, pseries_status =3D 0; + size_t labels_buf_offset =3D 0, output_buf_offset =3D 0; + size_t obj_label_entry_size, i; + + *output_buf =3D NULL; + *output_len =3D 0; + + if (!comp_prefix) { + rc =3D -EINVAL; + goto out; + } + + auth =3D construct_auth(PLPKS_OS_OWNER); + if (IS_ERR(auth)) { + rc =3D PTR_ERR(auth); + goto out; + } + + do { + labels_buf =3D + kzalloc(roundup_pow_of_two(PLPKS_OBJLABEL_BUF_MAX), + GFP_KERNEL); + + if (!labels_buf) { + pr_err("labels_buf buffer allocation failed\n"); + rc =3D -ENOMEM; + goto out_free_output_buf; + } + + rc =3D plpar_hcall(H_PKS_GET_OBJECTLABELS, retbuf, + virt_to_phys(auth), continuetoken, + virt_to_phys(labels_buf), + roundup_pow_of_two(PLPKS_OBJLABEL_BUF_MAX)); + + pseries_status =3D rc; + rc =3D pseries_status_to_err(rc); + + if (rc && rc !=3D -EAGAIN) { + pr_err("H_PKS_GET_OBJECTLABELS failed. pseries_status=3D%d rc=3D%d\n", + pseries_status, rc); + goto out_free_labels_buf; + } else { + /* + * Setting an incorrect countinuetoken upon + * receiving H_CONTINUE would result in H_P2. Since + * the continuetoken is being set to the expected + * value from the previous call, H_P2 must not be + * returned. + */ + continuetoken =3D retbuf[1]; + + labels_count =3D retbuf[0]; + if (!labels_count) { + kfree(labels_buf); + labels_buf =3D NULL; + goto out; + } + + /* + * Filter out object labels that don't have the provided + * component prefix. + */ + + output_buf_len +=3D + roundup_pow_of_two(PLPKS_OBJLABEL_BUF_MAX); + + tmp_buf =3D krealloc(*output_buf, output_buf_len, + GFP_KERNEL); + + if (!tmp_buf) { + pr_err("output buffer re-allocation failed\n"); + rc =3D -ENOMEM; + goto out_free_labels_buf; + } + + *output_buf =3D tmp_buf; + + for (i =3D 0; i < labels_count; ++i) { + label_len =3D + get_unaligned_be16(labels_buf + + labels_buf_offset); + + obj_label_entry_size =3D + PLPKS_OBJLABEL_LEN_FIELD_SIZE + + label_len; + + metadata =3D + (struct label_attr *)(labels_buf + + labels_buf_offset + + PLPKS_OBJLABEL_LEN_FIELD_SIZE); + + if (!memcmp(metadata->prefix, comp_prefix, + PLPKS_OBJLABEL_PREFIX_LEN)) { + memcpy(*output_buf + output_buf_offset, + labels_buf + labels_buf_offset, + obj_label_entry_size); + + output_buf_offset +=3D + obj_label_entry_size; + (*output_len) +=3D 1; + } + labels_buf_offset +=3D obj_label_entry_size; + } + kfree(labels_buf); + labels_buf =3D NULL; + labels_buf_offset =3D 0; + } + } while (rc =3D=3D -EAGAIN); + + goto out; + +out_free_labels_buf: + kfree(labels_buf); + labels_buf =3D NULL; +out_free_output_buf: + kfree(*output_buf); + *output_buf =3D NULL; + *output_len =3D 0; +out: + kfree(auth); + return rc; +} +EXPORT_SYMBOL_GPL(plpks_get_object_labels); + /** * plpks_read_os_var() - Fetch the data for the specified variable that is= owned * by the OS consumer. --=20 2.52.0 From nobody Sat Sep 26 19:33:47 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 A4FDE3DE43E; Mon, 31 Aug 2026 11:18:36 +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=1788175118; cv=none; b=Cr8WAM+oGf8EB0y+hP8uMMDMFEvGc1BeKoac6YhhKkFUbRZk3qQUiinjcgwnL6PXkaeEOSsEcaKW/IQKSA2WJ7Fy2NTLu6c0BGari6ES+KYRdHktn+NRhVT1AJMzyW+yvRLzPMg42qY/YBQun8EuxLrbpz8dlue8m0pGOcyLE2s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788175118; c=relaxed/simple; bh=KFrO65ZZmmfn0EUsobMqNPzH5VP9lPAQRxWzQf/JQU0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GNIS2l/l+tYhP5scCJkBXDe783UKS7cdl4Sy9L2pyPRBPj38P4RLivA899/rfN+DFdmDG0cDw08V3uqLtp8JIXvLbvK+JtG3S6cN/h24frvL4oshxwNHemNoGWRspMTHTp45HSwkCDZPEomALSBm4yw0CJFIF4RnqDu+UyPEQOc= 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=K5ATn6yK; 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="K5ATn6yK" 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 67V82jxX512812; Mon, 31 Aug 2026 11:18:22 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=dp9R1MwSjzkvuulJX dXK/0FQPBdPepaEEBgz4Bmw4VA=; b=K5ATn6yKoJzHFMis38OKW9u6bhUG+lb6N spCfrvWmCjQEF6I7JQ+oVAmP5M8ifdzCwnMdTv6qSlrch7DS3hAYOTl4PVFk9AUD 4pB89CKX4VPaKPFe4K1Pj8/A0Kgeo4UR9wF5YdZ41bIhAcgsSSbdTw3VEZaLgAJA 0LZdGaAh8B7XcXvfT1Qvj8bUB77wwh72NyzbZEjGMcpjyrdi7Fy0ZY9Y/sxa/nas L/GHEtaumHtqg55RzPtWWxpv9peIt40AQBH7kqBC9sY37ElyJvsAtgSmAyCv6UKJ 12xGO2GEkOM8WvuYVTQepQqshHJzSs3b5EVCh3+xnroelGbUHfFhA== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4gbnudgvdy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:18:21 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 67VBDJ55008540; Mon, 31 Aug 2026 11:18:20 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4gcb8h5f6y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Aug 2026 11:18:20 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 67VBIGgB33227204 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 31 Aug 2026 11:18:16 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BC6412004B; Mon, 31 Aug 2026 11:18:16 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7FEAA20040; Mon, 31 Aug 2026 11:18:13 +0000 (GMT) Received: from li-fc74f8cc-3279-11b2-a85c-ef5828687581.bl1-in.ibm.com (unknown [9.123.14.23]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 31 Aug 2026 11:18:13 +0000 (GMT) From: Srish Srinivasan To: linux-integrity@vger.kernel.org, keyrings@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, James.Bottomley@HansenPartnership.com, jarkko@kernel.org, zohar@linux.ibm.com, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org, nayna@linux.ibm.com, rnsastry@linux.ibm.com, ssrish@linux.ibm.com Subject: [PATCH v2 09/10] keys/trusted_keys: enable PKWM wrapping key selection by label Date: Mon, 31 Aug 2026 16:47:37 +0530 Message-ID: <20260831111738.334857-10-ssrish@linux.ibm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260831111738.334857-1-ssrish@linux.ibm.com> References: <20260831111738.334857-1-ssrish@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-Reinject: loops=2 maxloops=12 X-Proofpoint-GUID: UfNs0flxgXOoGiTLtIGM4PmlZsiL2tlK X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX9fM+Z9mlnQfs 4EqpBkUSa2tVHE3dEFhSmv4JjWoDc96qHS83o/O1Klur03oF/8pt0vYF/rZB29VGKokgkoyAyA/ p+REr8OcjCmDG+TeW9A52wtCDnIZ9ke0tuygRXW0eux/ulLYTIlsXSmIRf/qhHI5LZMdeHznMPC PQYUgWpW+q09e+ZhvCX2Hg6EfLpqrUMv/EGdyx4oTGl8TRecVZGZI1XRwPQtWb1dZUiNLh2bZqI x9wpsvExTwzpHtMX65VMyOHKBpnowRJYsHVhrD1TYyUw7iaSk+nOamRxcSF5Pgs9dUg8xUjxOmG KbM3IyoXfzRuBCCQH329SGUnMoVNChCezvJatr5zM4iU+JNGxrxQzgGZkcW87xA9lhXnFkoUWFn C3WOQjHRsDo80HoIKBzRCjPUiZ5cJQF8GuqdHOHmAHj3Dn1zK/TLRJYze9OYnjzA+qbRZZYzcbP zIf4t1QJrglyomAXhiw== X-Proofpoint-ORIG-GUID: lD1WbmnAU2vGoZ-vJmJuDbEMnf7P2Oy_ X-Proofpoint-Spam-Info: AW1haW4tMjYwODMxMDA5NSBTYWx0ZWRfX5T22KJ0V6JEB YWq8XuaLE2azgYWeOm0IHgFBPeCl8gadzYYcZ9uVTsiTEDD854LZaiZ1jyG2WjK134lFTQ8QdCL FI/AAlg6DUgPCvwn2CwCwMYLYJBYJaM= X-Authority-Analysis: v=2.4 cv=B92JFutM c=1 sm=1 tr=0 ts=6a9562fe cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=_1a9KapSLEuvdD3BKzMA:9 a=OmX4KOSJZv6Tv-4Y:21 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-31_03,2026-08-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 spamscore=0 clxscore=1015 suspectscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608310095 Content-Type: text/plain; charset="utf-8" The PKWM trusted source currently uses the default wrapping key for all seal and unseal operations. However, PKWM supports multiple wrapping keys, enabling better isolation between trusted keys. Allow users to provide an active wrapping key of their choice created through sysfs when sealing trusted keys through a new wrapping_key=3D