From nobody Fri Jul 24 21:29:06 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 D6473279DAF; Fri, 24 Jul 2026 14:13:40 +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=1784902422; cv=none; b=SwKOs1VE1O1uKSVvT12dQApI1mU4JvkAAiQ2x10IEL91QcnBYygX9aWV6+V22x3UrAtyqUb6QzTn93z/9PNgC+EnkbhBk6uxPQ2D16XqE14XhTruVnJDCIuLn9YFrwSP+hJzmig9R9dHAVvYLB7l7TnOfLoEaIKjsG5NqpH1m+c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784902422; c=relaxed/simple; bh=3bz4Glex7N1UYZWnG5jVz83BObsAfGnpJDklLS5i8qQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GFLvi+O+sUyupT/rb3Dhq5sfbsFjTrmrAo7F1kKwiAGZhG2oS8HgI5U151nh01Y3WdRPOQeGMsTaFh27BAVCzbyRvzjl5WDKASEy+ujF8Xsv7bLBn50xAiWVV7U3YyZUk3/xznZQjHbW6Lleodn7AeDAQpYnyHq1RoR2LIbOBDU= 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=qd0hAQT7; 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="qd0hAQT7" 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 66ODg7e21899369; Fri, 24 Jul 2026 14:13:27 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=s+FbP8iilqbfDcR7W lrCS/djUmnvqqT7NDu6cH9dAbE=; b=qd0hAQT7tt0l7Mg2u6OWLqXMoRvEXS0MX DmDTVZxNjdVGtTzdDBUkrwmcbSnV1nQHJvJ3u9W6oq/R4yReUhiXnoDghk8W64qf nj77ByKfe/kGLvcydTnujpmL2wqhREOviHTChHX+OD86/l4JZVOHJcW2I17ztbe3 yclVm3QsvPAxkuB5m/qsw1G5sfaVQ1SNdfdgMYEDpSH3MS5vswZ2FGvokniDxQmo PNVqrp16ARs4roABy6h5+SKiTr1DK1M3Jp4uYOSOP8xfpL9VMhJ3imNVa2sx4cqJ 60d2pryAW7PuhXI7j1umxSkTkH3HThROMLP0QW92v049DCizcUwdQ== Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4fg77kmf2c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 14:13:26 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 66OE4fG3029170; Fri, 24 Jul 2026 14:13:25 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4fgp1gs1nw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 14:13:25 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66OEDLNR45416784 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Jul 2026 14:13:21 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B5E1320116; Fri, 24 Jul 2026 14:13:21 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6D1442012D; Fri, 24 Jul 2026 14:13:21 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 24 Jul 2026 14:13:21 +0000 (GMT) From: Heiko Carstens To: Stefan Schulze Frielinghaus , Juergen Christ , Ilya Leoshkevich , Dominik Steenken , Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Maxim Khmelevskii , Jens Remus , Sami Tolvanen , Kees Cook , Nathan Chancellor , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi Cc: llvm@lists.linux.dev, bpf@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/6] s390/tools: Pass symbol name to do_relocs() Date: Fri, 24 Jul 2026 16:13:13 +0200 Message-ID: <20260724141318.1037434-2-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260724141318.1037434-1-hca@linux.ibm.com> References: <20260724141318.1037434-1-hca@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=HJXz0Itv c=1 sm=1 tr=0 ts=6a637306 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=TSwsfb3K8UwMknoMj3EA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDEyOCBTYWx0ZWRfX70bWpBERlUOQ rgDDDIQEsJrzxBJaOYtGLTwFGUC8jrnUmqH4U+er+DcTvciBfI/skvIaTV3mmq/QLGajGzvXKdh 1smW+Te5EBNwUUOKD+8fjCKgj0r1N1K7uKtkZoEIFp7Qfz7Xl3RCK4yTk55CZydGipmyWlZ/lyQ F3UQ3jePCCz0lGrO+aH8DyFHXkSXsaUFaEAY/dnBH3d6r9lPGOLBWlUlm2AQkpmpwM3D0t5YQND Dzz5YXqLhCVaxm1+TGWOWlzEbKDs8dPJSeTXgvAaYMOnhZsjcYrW2AxWuw1TnI1ZR+4rJywVkt4 ggQJ2J7HT73Px42bKzbZPNsK92C8dzMLY5un2J/yZfOSJd2o20CmlGspj/6X1QOx0Qo12/76KfL jwbBMd7E5hLV8BgZcq4UZH8FECKulKgZFhqnG0WDAjlpeqn2QMkh8732lcE7YON6t9ZNIy3FWo1 eVw1uDTv3w0yp2KcXkw== X-Proofpoint-ORIG-GUID: hyChGusyD4HRjsoqhjcshdARpIue5eUY X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDEyOCBTYWx0ZWRfX+4lTQzPH4g8g Zsr0Kxsn5xSWERLkTRDYBwBjXctdjr4S+49cQ5p/14vzW07IZlU+gPxbUqapFPD1QCOYz4F8T27 qFSmNU609geyp3EZ8vRB5G5CpNisjrs= X-Proofpoint-GUID: E5x2NFA0KmEOoTN1gd4cBSZMl2Ld0KCk X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_03,2026-07-24_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 lowpriorityscore=0 suspectscore=0 malwarescore=0 impostorscore=0 clxscore=1015 phishscore=0 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240128 Content-Type: text/plain; charset="utf-8" Pass the symbol symbol name which corresponds to a relocation to do_relocs(). This is preparation for kcfi support. Given that the s390 specific relocs tool is a stripped down version of the x86 version, add more code from the x86 version to the s390 version, while keeping coding style, etc. in order to add the required functionality. Reviewed-by: Jens Remus Signed-off-by: Heiko Carstens --- arch/s390/tools/relocs.c | 142 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 139 insertions(+), 3 deletions(-) diff --git a/arch/s390/tools/relocs.c b/arch/s390/tools/relocs.c index 30a732c808f3..a2774176d38f 100644 --- a/arch/s390/tools/relocs.c +++ b/arch/s390/tools/relocs.c @@ -41,6 +41,10 @@ static Elf_Ehdr ehdr; static unsigned long shnum; static unsigned int shstrndx; +static unsigned int shsymtabndx; +static unsigned int shxsymtabndx; + +static int sym_index(Elf_Sym *sym); =20 struct relocs { uint32_t *offset; @@ -54,11 +58,40 @@ static struct relocs relocs64; struct section { Elf_Shdr shdr; struct section *link; + Elf_Sym *symtab; + Elf32_Word *xsymtab; Elf_Rel *reltab; + char *strtab; }; =20 static struct section *secs; =20 +static const char *sec_name(unsigned shndx) +{ + const char *sec_strtab; + const char *name =3D ""; + sec_strtab =3D secs[shstrndx].strtab; + + if (shndx < shnum) + name =3D sec_strtab + secs[shndx].shdr.sh_name; + else if (shndx =3D=3D SHN_ABS) + name =3D "ABSOLUTE"; + else if (shndx =3D=3D SHN_COMMON) + name =3D "COMMON"; + return name; +} + +static const char *sym_name(const char *sym_strtab, Elf_Sym *sym) +{ + const char *name; + + if (sym->st_name) + name =3D sym_strtab + sym->st_name; + else + name =3D sec_name(sym_index(sym)); + return name; +} + #if BYTE_ORDER =3D=3D LITTLE_ENDIAN #define le16_to_cpu(val) (val) #define le32_to_cpu(val) (val) @@ -105,6 +138,23 @@ static uint64_t elf64_to_cpu(uint64_t val) #define elf_off_to_cpu(x) elf64_to_cpu(x) #define elf_xword_to_cpu(x) elf64_to_cpu(x) =20 +static int sym_index(Elf_Sym *sym) +{ + Elf_Sym *symtab =3D secs[shsymtabndx].symtab; + Elf32_Word *xsymtab =3D secs[shxsymtabndx].xsymtab; + unsigned long offset; + int index; + + if (sym->st_shndx !=3D SHN_XINDEX) + return sym->st_shndx; + + /* calculate offset of sym from head of table. */ + offset =3D (unsigned long)sym - (unsigned long)symtab; + index =3D offset / sizeof(*sym); + + return elf32_to_cpu(xsymtab[index]); +} + static void die(char *fmt, ...) { va_list ap; @@ -216,6 +266,81 @@ static void read_shdrs(FILE *fp) =20 } =20 +static void read_strtabs(FILE *fp) +{ + int i; + + for (i =3D 0; i < shnum; i++) { + struct section *sec =3D &secs[i]; + + if (sec->shdr.sh_type !=3D SHT_STRTAB) + continue; + + sec->strtab =3D malloc(sec->shdr.sh_size); + if (!sec->strtab) + die("malloc of %" FMT " bytes for strtab failed\n", sec->shdr.sh_size); + + if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) + die("Seek to %" FMT " failed: %s\n", sec->shdr.sh_offset, strerror(errn= o)); + + if (fread(sec->strtab, 1, sec->shdr.sh_size, fp) !=3D sec->shdr.sh_size) + die("Cannot read symbol table: %s\n", strerror(errno)); + } +} + +static void read_symtabs(FILE *fp) +{ + int i, j; + + for (i =3D 0; i < shnum; i++) { + struct section *sec =3D &secs[i]; + int num_syms; + + switch (sec->shdr.sh_type) { + case SHT_SYMTAB_SHNDX: + sec->xsymtab =3D malloc(sec->shdr.sh_size); + if (!sec->xsymtab) + die("malloc of %" FMT " bytes for xsymtab failed\n", sec->shdr.sh_size= ); + + if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) + die("Seek to %" FMT " failed: %s\n", sec->shdr.sh_offset, strerror(err= no)); + + if (fread(sec->xsymtab, 1, sec->shdr.sh_size, fp) !=3D sec->shdr.sh_siz= e) + die("Cannot read extended symbol table: %s\n", strerror(errno)); + + shxsymtabndx =3D i; + continue; + + case SHT_SYMTAB: + num_syms =3D sec->shdr.sh_size / sizeof(Elf_Sym); + + sec->symtab =3D malloc(sec->shdr.sh_size); + if (!sec->symtab) + die("malloc of %" FMT " bytes for symtab failed\n", sec->shdr.sh_size); + + if (fseek(fp, sec->shdr.sh_offset, SEEK_SET) < 0) + die("Seek to %" FMT " failed: %s\n", sec->shdr.sh_offset, strerror(err= no)); + + if (fread(sec->symtab, 1, sec->shdr.sh_size, fp) !=3D sec->shdr.sh_size) + die("Cannot read symbol table: %s\n", strerror(errno)); + + for (j =3D 0; j < num_syms; j++) { + Elf_Sym *sym =3D &sec->symtab[j]; + + sym->st_name =3D elf_word_to_cpu(sym->st_name); + sym->st_value =3D elf_addr_to_cpu(sym->st_value); + sym->st_size =3D elf_xword_to_cpu(sym->st_size); + sym->st_shndx =3D elf_half_to_cpu(sym->st_shndx); + } + shsymtabndx =3D i; + continue; + + default: + continue; + } + } +} + static void read_relocs(FILE *fp) { int i, j; @@ -263,7 +388,8 @@ static void add_reloc(struct relocs *r, uint32_t offset) r->offset[r->count++] =3D offset; } =20 -static int do_reloc(struct section *sec, Elf_Rel *rel) +static int do_reloc(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym, + const char *symname) { unsigned int r_type =3D ELF64_R_TYPE(rel->r_info); ElfW(Addr) offset =3D rel->r_offset; @@ -296,21 +422,29 @@ static void walk_relocs(void) =20 /* Walk through the relocations */ for (i =3D 0; i < shnum; i++) { - struct section *sec_applies; + char *sym_strtab; + Elf_Sym *sh_symtab; + struct section *sec_applies, *sec_symtab; int j; struct section *sec =3D &secs[i]; =20 if (sec->shdr.sh_type !=3D SHT_REL_TYPE) continue; =20 + sec_symtab =3D sec->link; sec_applies =3D &secs[sec->shdr.sh_info]; if (!(sec_applies->shdr.sh_flags & SHF_ALLOC)) continue; =20 + sh_symtab =3D sec_symtab->symtab; + sym_strtab =3D sec_symtab->link->strtab; + for (j =3D 0; j < sec->shdr.sh_size / sizeof(Elf_Rel); j++) { Elf_Rel *rel =3D &sec->reltab[j]; + Elf_Sym *sym =3D &sh_symtab[ELF_R_SYM(rel->r_info)]; + const char *symname =3D sym_name(sym_strtab, sym); =20 - do_reloc(sec, rel); + do_reloc(sec, rel, sym, symname); } } } @@ -349,6 +483,8 @@ static void process(FILE *fp) { read_ehdr(fp); read_shdrs(fp); + read_strtabs(fp); + read_symtabs(fp); read_relocs(fp); emit_relocs(); } --=20 2.53.0 From nobody Fri Jul 24 21:29:06 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 4FC7C429033; Fri, 24 Jul 2026 14:13:41 +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=1784902422; cv=none; b=H3KyJAio1fo2R1yNLCrC2wZbnlTnX4GNgP+6uoVF314s6x1hKa63yV4LZPc7de4DtsnrooLB4PGwQVgCdL8uHPB8IAvvOaUHlJNmWWGMZgZqo7qa9837KUGwjj8K78/xQqbUuap++rjScmFH64HdKGH/VnwCzEaQH7h47R1aINE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784902422; c=relaxed/simple; bh=A7qJkMTjxRquoJ2QgBAWgqIF9D2mNKN7a7VRe8KIFvo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=K6jPOGL0F7x/7AA5bT8jBO5NigYVPjc+/grcr79NQzYpAaTawjsS3Fw1rn6GxYHFJ27L4Ij2geqZNPFN875ldc0Fomjn+TKRj+eoGiq0luiLkTCnDGSKW+Yx3TvnpV8qgbvyGM/xuVG+2AoRzrqzQz/2x7ntEsDvepzliJh4Dic= 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=Xn3JmCdA; 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="Xn3JmCdA" 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 66ODfjd1100527; Fri, 24 Jul 2026 14:13:28 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=4vCemSz3No9Aqz0xJ X38sw0uhRZr2ODZGpDlRpTd/Ig=; b=Xn3JmCdAWuIjkMR1MKhZxD/cILYDF28tO 0U7ZZ0sXDiojzhOfb4J1gpGCzcLnoYq9w4XvHMqmInhCqeeTyT9rlz7e136NpGVv N3vkqpA5iYeWYCxrjxsc8dzesfnu4lbcx9KuGmADXetLEuD0LNjLl/2dwj5udAaA AQrRtVEN2EHIFXw9ShRh8x2u4U3ZdRBnkHg5dASGUzoSEnl6unqbR2w6MFRpECRm Lrj8OKnaEN9X0BM1G2QR3KoQs9ZvbljENJZS5F92X2gtzUU6l7Q+ZXBGUbGvhMCQ vYU6gXYOQOyLiqAVI15czdjhKawpRdhCzSS4aq0JPfnxue6X5iOCw== 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 4fm8gs8arp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 14:13:27 +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 66OE4lua014575; Fri, 24 Jul 2026 14:13:26 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgmtk97gx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 14:13:26 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66OEDMft11600330 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Jul 2026 14:13:22 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 100D920116; Fri, 24 Jul 2026 14:13:22 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BB42920128; Fri, 24 Jul 2026 14:13:21 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 24 Jul 2026 14:13:21 +0000 (GMT) From: Heiko Carstens To: Stefan Schulze Frielinghaus , Juergen Christ , Ilya Leoshkevich , Dominik Steenken , Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Maxim Khmelevskii , Jens Remus , Sami Tolvanen , Kees Cook , Nathan Chancellor , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi Cc: llvm@lists.linux.dev, bpf@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/6] s390/tools/relocs: Ignore __kcfi_typeid_ relocations Date: Fri, 24 Jul 2026 16:13:14 +0200 Message-ID: <20260724141318.1037434-3-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260724141318.1037434-1-hca@linux.ibm.com> References: <20260724141318.1037434-1-hca@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDEyOCBTYWx0ZWRfX+3SI6WCULHVZ 1Ncy0jcP64StcVTb7TOBFWA0B52zcMz9SgVE1QEfehC6N2tVs7bukIEmMXfQQYf51RTu8SfXEL4 Ty2WlUVMdDtCO3cf/1dMJNW4wiawuds= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDEyOCBTYWx0ZWRfX84WQiSjz49c4 1E/FSx2HxKGABuAvBll5ewoW/cng8dRHizmVLFg0WzOjSpbCZmvPqO/S8Nj5+wQ2sXvwq1pOF4i ZGpvt0rEFITX31u3Vk45DxZ/h0W4dloceyMAxh4vzWAjRdrpmDDAdZu6da/2lSgEGhyRE9bk2LK OXdQmMqh59CupQNBtwt2gONGvtSN1TAVN3YH0da+eOEn7BR9omdT6gMGG/BqiJrXvXmUJv+2koo EO8mr/nRg05XXcdzxIYaGW17ZZGyOZctyn7y4tBriT2iAREzP7rJY6INDqNiZm3ij3kiCW1kL7a nBrIg/iPr16Fugk97UzSct3bnREfMKSfhTx5I6Iea+q5Tv5zHPUb6iZSmz97TNoU1Flbkgn3YW5 hjvfFSmJldLc6h9aTitulv6hSQ68qcQaZPt6zcGHw0/hGaWFLIpCLLi998naib6AZMBq1FA+aCy IP/cDDmWJxb+Po/kpbw== X-Authority-Analysis: v=2.4 cv=Q9LiJY2a c=1 sm=1 tr=0 ts=6a637307 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=88w2KFz2_lgIV2xuEDwA:9 X-Proofpoint-ORIG-GUID: JyU-SU_fQd40G7p_9rgmMaXi-HY18Xbl X-Proofpoint-GUID: lxGROCQQ-laPD0cwlQYwmSaXCDpTcO3y X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_03,2026-07-24_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 adultscore=0 phishscore=0 bulkscore=0 spamscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240128 Content-Type: text/plain; charset="utf-8" This is the s390 variant of commit ca7e10bff196 ("x86/tools/relocs: Ignore __kcfi_typeid_ relocations"): "The compiler generates __kcfi_typeid_ symbols for annotating assembly functions with type information. These are constants that can be referenced in assembly code and are resolved by the linker. Ignore them in relocs." Reviewed-by: Jens Remus Signed-off-by: Heiko Carstens --- arch/s390/tools/relocs.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/arch/s390/tools/relocs.c b/arch/s390/tools/relocs.c index a2774176d38f..72178dc90a4c 100644 --- a/arch/s390/tools/relocs.c +++ b/arch/s390/tools/relocs.c @@ -405,6 +405,22 @@ static int do_reloc(struct section *sec, Elf_Rel *rel,= ElfW(Sym) *sym, case R_390_GOTPCDBL: case R_390_GOTOFF64: break; + case R_390_32: { + static const char kcfipfx[] =3D "__kcfi_typeid_"; + + if (sym->st_shndx !=3D SHN_ABS) + die("Unsupported relocation type: %d\n", r_type); + /* + * Symbols with __kcfi_typeid_ prefix have constant values, + * which do not change if bzImage is loaded at a different + * physical address than the address for which it has been + * compiled. + */ + if (!strncmp(kcfipfx, symname, sizeof(kcfipfx) - 1)) + break; + die("Invalid absolute R_390_32 relocation: %s\n", symname); + break; + } case R_390_64: add_reloc(&relocs64, offset); break; --=20 2.53.0 From nobody Fri Jul 24 21:29:06 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 4EFC9423EAD; Fri, 24 Jul 2026 14:13:41 +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=1784902422; cv=none; b=Ahw/7bk24KFC9l7OfOkB9SIRHWdJP7MnjdJkCVBZDd1VvBzPt3OyUsDLtyA1yxQgsGKW/Q5q1apZb+94MOIYYXRhjkk7RmGtDU70925UGnZzYk/PIEsd5XW0b70s8II9DahG/NSW5op91wuXG7tIIj9nR1oqBkTUcZV0iBSxovA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784902422; c=relaxed/simple; bh=kZDkuebWmGXmLSMYX+w65HN68TgG1HeSfwm7+6uNqiE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lU5T0HRlsqw46Gh75ItaUcyMd1hIg1PUjsC8oeUtrNEMGNwtXI6PYGV+Q8Wjrq1i8l0VzbA/+3SrADM0eEoBOy7lY1XN1YTIGRw2oaGFchmiDfN7jWj4OVy/+KmI+sTYTq6q38OKZ6Exnpfpe+dXtOueg4/Rqzlkce68uzJpZig= 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=OFgr4rOI; 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="OFgr4rOI" 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 66ODflaR1974199; Fri, 24 Jul 2026 14:13:28 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=LcWYdIw5DKr0gJasi dPh0A6eet/ZPBaSpJYwfM4G3DQ=; b=OFgr4rOI2tfPmCYLuq5WYTpcDQKcEBh9V CHL+bypohk+zW+AlXaX0b0zJ0ymufPVyWafmHRT3OjGAtnc9iN2jNWGeNA7JhKZI bfD7sL/uwHqlMxEdsIeVayJa7wh9spx2boZwS4o/5tQ8m+EWa84Xdi1gF0w505V9 ZGnxFZ87vF0SyIzcjoCP+nK97jFfgE24lSBWIJrg6013C2sHv/HYqV+S8FaCNWv0 DrfxSMuFFBJBxVAGSv9tjXMqWBfaCIFWRbRfWt0Dvg4U7E7gW8W0bcb+d9eJydSg b3UWWOdkMeqvUd4e4ZjwvSSQqgrRzpDmRIXbPczxFkw6WdgMP63Kw== 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 4fm8h50ap9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 14:13:27 +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 66OE4g6u013230; Fri, 24 Jul 2026 14:13:26 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgm6whamx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 14:13:26 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66OEDMsh17039686 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Jul 2026 14:13:22 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 66A1620116; Fri, 24 Jul 2026 14:13:22 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 152922012B; Fri, 24 Jul 2026 14:13:22 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 24 Jul 2026 14:13:22 +0000 (GMT) From: Heiko Carstens To: Stefan Schulze Frielinghaus , Juergen Christ , Ilya Leoshkevich , Dominik Steenken , Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Maxim Khmelevskii , Jens Remus , Sami Tolvanen , Kees Cook , Nathan Chancellor , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi Cc: llvm@lists.linux.dev, bpf@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/6] s390: Add ftrace_stub_graph Date: Fri, 24 Jul 2026 16:13:15 +0200 Message-ID: <20260724141318.1037434-4-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260724141318.1037434-1-hca@linux.ibm.com> References: <20260724141318.1037434-1-hca@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDEyOCBTYWx0ZWRfX7Lzll5IZziPt 8eKuKUSDcWS3q9tXU48kVL8103/C94ctOYCmi37lY7om7NioHR+7n7CLZklTJzw7vHG/aNpb/fm rR2hqHWxefhujfzn2wAEpErJohtukcQ= X-Proofpoint-ORIG-GUID: pJ_05TysW6_E7gMKoaaQgx40WY4_nQgO X-Proofpoint-GUID: vB5YhEF_2REwfzPmYvED_aBzAgfXeyiY X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDEyOCBTYWx0ZWRfX+4mNoFfHJOig N8Lfg0KvJstP0NWozbjvs2oPjo+suwM/zB5zxdBfEoCAWnGHIllXHDDpxPRYgXU8rzI5WtOjuN3 4B3RdeFwLNSorN28/+lBwjLf/NAXuuNRpovO5UsupDgxAdpIjmRDuYR74cQfZO0gDmIr/qVKYM4 XDMW8ECzLQeg9fZrmhm2itMqNVXwrl4Iznhq1PYEtU5TzhTOAVN6KqlBDu/F07iGPvZjUofoNU3 lZzaCiAh5fT6BXJ306sdJWR9oU8MXk20okcE9lTF/qzX3Fz9nzDDZMn/B8vSbN8lysu4o/MrCfq NgD8wKjHtgj5KkkAWq7ougZX+W78zXe7R+wxvHEnIBvEPB6S6DCaNFG0hRAc3YUpohrSvL00/bm M/nviexND4zyJAjNRRVGy/4ciiCfP2Iwxt7iFjpxoBSIPGhRzW84r/p+y2bnCWmboN1TsE7qhNe dkVwPnZFzMOkg3JH/aQ== X-Authority-Analysis: v=2.4 cv=du3rzVg4 c=1 sm=1 tr=0 ts=6a637308 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=-AIEXUT1W0u7Szh5zmwA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_03,2026-07-24_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 malwarescore=0 spamscore=0 impostorscore=0 phishscore=0 bulkscore=0 priorityscore=1501 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240128 Content-Type: text/plain; charset="utf-8" This is the s390 variant of commit f3a0c23f2539 ("riscv: Add ftrace_stub_graph"): "Commit 883bbbffa5a4 ("ftrace,kcfi: Separate ftrace_stub() and ftrace_stub_graph()") added a separate ftrace_stub_graph function for CFI_CLANG. Add the stub to fix FUNCTION_GRAPH_TRACER compatibility with CFI." Reviewed-by: Jens Remus Signed-off-by: Heiko Carstens --- arch/s390/kernel/mcount.S | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/s390/kernel/mcount.S b/arch/s390/kernel/mcount.S index 1fec370fecf4..97e9d6bdc017 100644 --- a/arch/s390/kernel/mcount.S +++ b/arch/s390/kernel/mcount.S @@ -4,6 +4,7 @@ * */ =20 +#include #include #include #include @@ -34,10 +35,14 @@ =20 .section .kprobes.text, "ax" =20 -SYM_FUNC_START(ftrace_stub) +SYM_TYPED_FUNC_START(ftrace_stub) BR_EX %r14 SYM_FUNC_END(ftrace_stub) =20 +SYM_TYPED_FUNC_START(ftrace_stub_graph) + BR_EX %r14 +SYM_FUNC_END(ftrace_stub_graph) + SYM_CODE_START(ftrace_stub_direct_tramp) lgr %r1, %r0 BR_EX %r1 --=20 2.53.0 From nobody Fri Jul 24 21:29:06 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 CFC47431A52; Fri, 24 Jul 2026 14:13:41 +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=1784902423; cv=none; b=bTFFRdp2vy1anSKFUw8IFa0tq9dJGcq41VVZ35nT1m6s135I6rUrmCRtfbP86zGw/FNPbB+oSclMi8ryixrR1Istzjx7/7HM1uPwgSoWVnRHiXBnexLu70dMu7VVyrwCOgmEuW+1lJfOkBpzX0UzfOWjjzUlDUmlty6EHjHD3Rk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784902423; c=relaxed/simple; bh=dvLX83Y1N+bxcR5GC3lVUIytKdI3Jmlt/0HiFjXm8dA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Z2WXm51rz9m1j3jemiH51s51scXatT7k8e5eehd/v8krFuKEKtpmmsVTOrWKpGtVNIsvfb+wDt+UzNiS1MNQo1b3csWUa3v+S4zscPPM5N/hoCsQfQMJpfY9brZ6Lq38MS54W2E56UzJ7Nbl9O0imSUaGNbhS3TfAt9yIvtoC5c= 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=iHRxBRZx; 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="iHRxBRZx" 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 66ODg0Q81898317; Fri, 24 Jul 2026 14:13:28 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=PVI0u44dEHcXtcM0s Xi475GM3IfnyCxK+FZSSkdF33g=; b=iHRxBRZxr0sPtEVC4hNCfd8S7V2qEr9n3 3fa8ucupvBkycKP6F9FG/pgqWfog+oYTuQl9DywrZO7Yj2d0GSm0SMvIWYJ66EjL T6UCky+fIR9MiLa6du7tAP3UXp7pQm0APRwjcSiaM+7wGms7jiht62eEXYb+HHby IiaU4MBOZBSG/CDueNZ7lmnhJR0AIccF9ADejek1ki6hfOfvaUh7QNnvAHX/PLWp EIgwrSuBMT9i6UXs7I2KtjpXcjMZ9D61bqqSdsdmTp4IFZ1PnhUdBAjq1w4E8prM c4S09NFABRcAqEu25acwcPCJZFkGwXbEv4jzWG/LkwqtstpW6Eifg== 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 4fg77kmf2n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 14:13:27 +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 66ODo4Sm024935; Fri, 24 Jul 2026 14:13:26 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgnahh68v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 14:13:26 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66OEDMhU31195660 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Jul 2026 14:13:22 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B123120116; Fri, 24 Jul 2026 14:13:22 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6BDA620128; Fri, 24 Jul 2026 14:13:22 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 24 Jul 2026 14:13:22 +0000 (GMT) From: Heiko Carstens To: Stefan Schulze Frielinghaus , Juergen Christ , Ilya Leoshkevich , Dominik Steenken , Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Maxim Khmelevskii , Jens Remus , Sami Tolvanen , Kees Cook , Nathan Chancellor , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi Cc: llvm@lists.linux.dev, bpf@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/6] s390/diag: Generate CFI type information for assembly functions Date: Fri, 24 Jul 2026 16:13:16 +0200 Message-ID: <20260724141318.1037434-5-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260724141318.1037434-1-hca@linux.ibm.com> References: <20260724141318.1037434-1-hca@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=HJXz0Itv c=1 sm=1 tr=0 ts=6a637307 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=EPsGp4Ve3OqINF1AOYoA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDEyOCBTYWx0ZWRfX7eFOp0aEPHMC rulBIjpXV3Ltd2QvzbxiqZvieA+EpXCYN6HxLRdvZZ0VYM2pUHz7WmE72A/+RvXBeEG+Zir2voy ZsM6OQ7+E9G7eEoJIoqa+Le86XeqFIm5nMh03ubMPnal5w0PremALqeDin25fsoUTMN3dx2C5N9 dGn73EirWWF4NCoufJAvjiWSo56Cf6so+YraDspefpErRbG0o9BmbStGSWo9T+1Wkctkh/Kpfl0 etTBt5RdT0kOLo0l2BhgCaQCkeu6nmtNx1EuJR0PlHX0yaxhhshuS4goi47TDF21wDRosDOSqWf swgr5Ko9OSBoyeMwvno8uN/5I1DMqmSJUElD6qEaYIB8CPMu0k5iiIxDsOydXu045TxlhK9N2Hv 1sGGtVThP91568rFhXIWbjRRDTWu6YmF6bX66dpn5Jr0n9jv75zIzwrkf/U3tGLtQgGPjP6KrDD ks7vs6Brn3UBjLFygwQ== X-Proofpoint-ORIG-GUID: dCY8e3MjymhXNBKluNILjvjPhiO0K4vo X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDEyOCBTYWx0ZWRfXw4COyJb3bpZT FTkAw8DW9LPd3MTwBdlwzUESeh8OsRSkM4uxq/r3tcZJTuC+CoXicuMXkwHnUaLOrEm1aZtMt2c N/Awm2g6wdyL7vi1RneYtBu99KUpG1s= X-Proofpoint-GUID: 4Rn6Sqs90kV_tR1pBnG6U0oNcFoMP9xe X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_03,2026-07-24_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 lowpriorityscore=0 suspectscore=0 malwarescore=0 impostorscore=0 clxscore=1015 phishscore=0 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240128 Content-Type: text/plain; charset="utf-8" Use SYM_TYPED_FUNC_START to generate __kcfi_typeid_ symbols for assembler functions which are called indirectly. All assembler functions contained in text_amode31.S are called indirectly and require such annotations. Reviewed-by: Jens Remus Signed-off-by: Heiko Carstens --- arch/s390/kernel/text_amode31.S | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/arch/s390/kernel/text_amode31.S b/arch/s390/kernel/text_amode3= 1.S index 26f2981aa09e..f007d892d0c5 100644 --- a/arch/s390/kernel/text_amode31.S +++ b/arch/s390/kernel/text_amode31.S @@ -5,6 +5,7 @@ * Copyright IBM Corp. 2019 */ =20 +#include #include #include #include @@ -26,7 +27,7 @@ /* * int _diag14_amode31(unsigned long rx, unsigned long ry1, unsigned long = subcode) */ -SYM_FUNC_START(_diag14_amode31) +SYM_TYPED_FUNC_START(_diag14_amode31) lgr %r1,%r2 lgr %r2,%r3 lgr %r3,%r4 @@ -46,7 +47,7 @@ SYM_FUNC_END(_diag14_amode31) /* * int _diag210_amode31(struct diag210 *addr) */ -SYM_FUNC_START(_diag210_amode31) +SYM_TYPED_FUNC_START(_diag210_amode31) lgr %r1,%r2 lhi %r2,-1 sam31 @@ -64,7 +65,7 @@ SYM_FUNC_END(_diag210_amode31) /* * int diag8c(struct diag8c *addr, struct ccw_dev_id *devno, size_t len) */ -SYM_FUNC_START(_diag8c_amode31) +SYM_TYPED_FUNC_START(_diag8c_amode31) llgf %r3,0(%r3) sam31 diag %r2,%r4,0x8c @@ -77,7 +78,7 @@ SYM_FUNC_END(_diag8c_amode31) /* * int _diag26c_amode31(void *req, void *resp, enum diag26c_sc subcode) */ -SYM_FUNC_START(_diag26c_amode31) +SYM_TYPED_FUNC_START(_diag26c_amode31) lghi %r5,-EOPNOTSUPP sam31 diag %r2,%r4,0x26c @@ -91,7 +92,7 @@ SYM_FUNC_END(_diag26c_amode31) /* * void _diag0c_amode31(unsigned long rx) */ -SYM_FUNC_START(_diag0c_amode31) +SYM_TYPED_FUNC_START(_diag0c_amode31) sam31 diag %r2,%r2,0x0c sam64 @@ -103,7 +104,7 @@ SYM_FUNC_END(_diag0c_amode31) * * Calls diag 308 subcode 1 and continues execution */ -SYM_FUNC_START(_diag308_reset_amode31) +SYM_TYPED_FUNC_START(_diag308_reset_amode31) larl %r4,ctlregs # Save control registers stctg %c0,%c15,0(%r4) lg %r2,0(%r4) # Disable lowcore protection --=20 2.53.0 From nobody Fri Jul 24 21:29:06 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 5D6884908B1; Fri, 24 Jul 2026 14:13:41 +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=1784902422; cv=none; b=D56NUXgHmQUq9AGW8zqgZaHYif1PAtY6bpHeq84/0UGlX3X9z1RYuKysNkVLtFWLJDei5zpr5LM0SWCzrHcuZvwx+uBNslkzRmNXpv/JY6zKibw7HC+9Lq7eUYic0kzSlnEC9TJD4X8VKyQxiWs8LRTCFNuoXW6ECxegYRUHi68= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784902422; c=relaxed/simple; bh=eD6KthX/agMahtfSxUkG9k9qP+fh0XjghUVPLnq/bM8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uEavj2GrtHDKI/TGcuMOMnUDFDnakjtdPK/I6T7CgKDsYQjLrVzF1UnR00wq1HOj/oPTor8Sd+95aFD7dS/ytwodBxV1yDdKXnrYITVJNWpdYqwnezT7tp5ZWoGnNdpJXzcmsKfBuLqvlf+hBIxNozVDqJZprTUJmzGxt+SGAoQ= 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=QNzIs/b1; 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="QNzIs/b1" 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 66ODfnDU1869270; Fri, 24 Jul 2026 14:13:28 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=WLZu7e8IxS3aea7Sv V49Et/DZXMcYkot0Hljc8ji2Co=; b=QNzIs/b1BWpnnJcXLX4zUUZ18vkDLzc7O I1IP19bYG7axeox8rNKWxuwlG5FARixHB/jq7K9rAhZwHKBmT1NmRAkT/9o/9Z30 kL1b/kRBz3248oMdi8QwBEE4sLo5uqUnwlOeOkPN669mGnxljh/Qb31yXmDyOZvZ 0FTJCyxi2xmAytTlFNTgUEQ2P18ISXZbL0s1oXWLXBJ/NN8u3pR1gbpdGlgPx3o6 4fcO7NH2ATjp6kmLR91/gwxPi9YfLXi38QadUWwl9FHUPRJLsRdMa4mGq99tflss R4ViKvSITYA7SGwx82db3Z5/QQwBU37qalP1WoEzF7jGbdO7MuSfg== 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 4fg78gmcdx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 14:13:27 +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 66OE4eEI013218; Fri, 24 Jul 2026 14:13:27 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgm6whamy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 14:13:27 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66OEDNCg48038202 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Jul 2026 14:13:23 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 07FD220116; Fri, 24 Jul 2026 14:13:23 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B70D820129; Fri, 24 Jul 2026 14:13:22 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 24 Jul 2026 14:13:22 +0000 (GMT) From: Heiko Carstens To: Stefan Schulze Frielinghaus , Juergen Christ , Ilya Leoshkevich , Dominik Steenken , Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Maxim Khmelevskii , Jens Remus , Sami Tolvanen , Kees Cook , Nathan Chancellor , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi Cc: llvm@lists.linux.dev, bpf@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 5/6] s390/Kconfig: Select ARCH_SUPPORTS_CFI Date: Fri, 24 Jul 2026 16:13:17 +0200 Message-ID: <20260724141318.1037434-6-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260724141318.1037434-1-hca@linux.ibm.com> References: <20260724141318.1037434-1-hca@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDEyOCBTYWx0ZWRfXzwDy6ZnJDl4n J/Pi7uIfkfsU8jl1LOQFDoaD7gox7+ZAHJJP9lOuRYNWKfOojmZsf+FqsEjHk95WQDlG8XlyNZM S1e1p2GCTXCCu2RV/fAdFAzg/ZBYd7X6scbEazhbEyhG4TiYPw5tLPM2T3dm6qHGZgfim9O3nTv dq59g8W15Ri6y8YdZ8fdwFkXkn87fgC91XfPNpmYjNIamL14DAv0hX3y+J8/4JWG3NaKyGgkE0S /wZjdMLPGujQzinMXaGgYF45r5+vT0a4NWK07ukg7q74t+hFmI25KX5iKxHIM8CcSOSujDZpX4J 5PiGK3i/IsG/yyw1a7ZOziwoSXgkO+rCLkFvWPxqVhnVUTBOynz/2ydZ9UjtXSPpXHRi8a2V1L6 vaecV1Jk1UJbBMDjyqfBmwt3sBKGWYHY2m1wCzZrkVn0fVRZUxYaVxEC1PNX7QvxDJ8dKpD8Rn8 K0QLin+lhtBKdmY3iFQ== X-Proofpoint-GUID: xAyLlGmyh314oUpH8SwYTsP2WKzHI-B0 X-Authority-Analysis: v=2.4 cv=MelcfZ/f c=1 sm=1 tr=0 ts=6a637308 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=rWXMRKN3t-ortPuYfZYA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDEyOCBTYWx0ZWRfX5OOLAGuBEw7V 1XDpGtwih4lEuoiUluDK8akrq/krCvIVUGH6NRrY2BEU2MZQ9eO607E6jKzlugMYfz7G/2p/HhA vNT21bd2EyBMRIUafd/hXzo1IVCDI6E= X-Proofpoint-ORIG-GUID: uHsx4DBFjSr0Mj2beW0O1Rw1QuoqejyQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_03,2026-07-24_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 spamscore=0 clxscore=1015 malwarescore=0 phishscore=0 adultscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240128 Content-Type: text/plain; charset="utf-8" With all prerequisites in place select ARCH_SUPPORTS_CFI. Note that this support is supposed to work with the generic kcfi support which is provided by clang. This comes with a couple of limitations: The generic kcfi implementation does not generate a .kcfi_traps section, nor is a special instruction used in case a checksum mismatch is detected. This means in case of checksum mismatch the kernel just crashes. It should be quite easy to tell by the surrounding code that a crash happened because of a checksum mismatch. If clang and/or gcc provide a .kcfi_traps section it will be possible to print proper CFI messages instead of just crashing the kernel (enable ARCH_USES_CFI_TRAPS). In addition this also means that CFI_PERMISSIVE does not work. Even if the option is selected the kernel will crash in case of checksum mismatch. However it seems to be acceptable to enable kcfi support to the kernel now even if it is not perfect. Later clang and gcc extensions are required to improve this. As of now a crash caused by a CFI failure looks like this: illegal operation: 0001 ilc:1 [#1]SMP Modules linked in: bpf_testmod(OE) CPU: 0 UID: 0 PID: 92 Comm: test_progs Tainted: G OE 7.2.0-= rc4-00021-gc35ed7a1ca22-dirty #3 PREEMPTLAZY Tainted: [O]=3DOOT_MODULE, [E]=3DUNSIGNED_MODULE Hardware name: IBM 3931 A01 703 (KVM/Linux) Krnl PSW : 0704e00180000000 00000166d4853a0a (bpf_task_work_callback+0x176/= 0x290) R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:2 PM:0 RI:0 EA:3 Krnl GPRS: 0400000069b02e96 000001665471856c 0000000084dc1000 000000008084d= a58 000000008084da60 000000005ff492bf 0000000000000000 00000000809de= 300 fffffffffff7ffff 00000000000a0337 00000000809e4d00 000000008437b= 100 00000000801bc288 00000000801bc280 00000166d48538fc 000000e6d502b= a90 Krnl Code: 00000166d48539fa: e320c0400004 lg %r2,64(%r12) 00000166d4853a00: e340c0480004 lg %r4,72(%r12) *00000166d4853a06: a7640001 brc 6,00000166d4853a08 >00000166d4853a0a: 0de1 basr %r14,%r1 00000166d4853a0c: e300b6580095 llh %r0,1624(%r11) 00000166d4853a12: ec040009027e cij %r0,2,4,00000166d48= 53a24 00000166d4853a18: a70affff ahi %r0,-1 00000166d4853a1c: 4000b658 sth %r0,1624(%r11) Call Trace: [<00000166d4853a0a>] bpf_task_work_callback+0x176/0x290 ... The disassembly contains the brc instruction (branch into the instruction itself with two byte offset to execute an illegal instruction, and the following basr instruction used for an indirect branch. Reviewed-by: Jens Remus Signed-off-by: Heiko Carstens --- arch/s390/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 84404e6778d5..d57a6c02f51d 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -144,6 +144,7 @@ config S390 select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE select ARCH_STACKWALK select ARCH_SUPPORTS_ATOMIC_RMW + select ARCH_SUPPORTS_CFI select ARCH_SUPPORTS_DEBUG_PAGEALLOC select ARCH_SUPPORTS_HUGETLBFS select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && CC_IS_CLANG --=20 2.53.0 From nobody Fri Jul 24 21:29:06 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 68C18439008; Fri, 24 Jul 2026 14:13:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784902424; cv=none; b=Y/089lmEpKo5JGmwqX15C6Om+o/P9sxHl+H30peqXO1Legz7ySaexcDE+6KjX+uAr3mhmmoNMDTsR0kzHAumvVotwer1AEqJ18zrhUT6qNWk1BIqqUi0DvtqCGb6oUROjdHJF9Q8d59TjHW5NVPq6XwiG4WiQE3G1edz6PO8UDY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784902424; c=relaxed/simple; bh=qzdJEes+JcGSIMNS1SLAblNgi10KpFF/c7yicoMeH7M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=I/JJWW5f2bxYwl2Pt0w96YAaw6O7wOjC+K+/1x6V/W8oUu6Nl/lj/wu7yMnSWft5LRLOaMKkJNFrf+glTiK1wL9kCqHIyc6sETxgg0Tc23Rj+NxSVvzLSxhjmhsDS7HC/BJVagkUQ6xdfQBtNB+kVK/ZS7bdF9LhgQEp5MBloiE= 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=f4ATmUMR; 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="f4ATmUMR" 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 66ODfjd2100527; Fri, 24 Jul 2026 14:13:29 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=3Gup2122irWeVTFwr bTkTPgiSdur334BEncEwPBZo24=; b=f4ATmUMRShIEZtlwU0newHMUk2nm/a+OS G8zZ1x7r8Iiw/DEVpOGEpivOsOkOCBp4MSyKYqAGXzU/HIIIrOJJo1TcaCeUQ/S6 QSReaJQ2o0Nqg60ZgcEZ7M6iQ8KZjeoWXbXdREsTtu31glEvpuh6YZsqc/a22t0K m7zY3q2O7rGvROtqonaQRnrNdldOdTeGfrzPak6ZSmuoPq8SR+kuaWH1bMIHX5l0 6gW5dLJKI3/7okeEvSbJ36OKJz7pRmAphBxMUDGjRCl0qcoFylgE18r/CXuiHXSZ jNTweATaJ3ogSR5ALiEBWc4BPa+PwZVncUGpI/Ua1cRFihMJm0kzw== 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 4fm8gs8arv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 14:13:28 +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 66ODo3rv024916; Fri, 24 Jul 2026 14:13:27 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4fgnahh68x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Jul 2026 14:13:27 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 66OEDNPs47382922 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 24 Jul 2026 14:13:23 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 54A4520116; Fri, 24 Jul 2026 14:13:23 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0D68D2012A; Fri, 24 Jul 2026 14:13:23 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 24 Jul 2026 14:13:23 +0000 (GMT) From: Heiko Carstens To: Stefan Schulze Frielinghaus , Juergen Christ , Ilya Leoshkevich , Dominik Steenken , Alexander Gordeev , Sven Schnelle , Vasily Gorbik , Christian Borntraeger , Maxim Khmelevskii , Jens Remus , Sami Tolvanen , Kees Cook , Nathan Chancellor , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi Cc: llvm@lists.linux.dev, bpf@vger.kernel.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/6] s390/bpf: Add kCFI support Date: Fri, 24 Jul 2026 16:13:18 +0200 Message-ID: <20260724141318.1037434-7-hca@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260724141318.1037434-1-hca@linux.ibm.com> References: <20260724141318.1037434-1-hca@linux.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI0MDEyOCBTYWx0ZWRfX7s4hQFR6dyO/ yU//FEHDsfBWnBBqkCBq2lorxL69FsSOuiYOtpa9iaxSzNw39yKMTJM/TcSBs65QBHyPslMPqu/ 1EVgBtJvVh17/ZoI7q6oUoCcL8mLfGM= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI0MDEyOCBTYWx0ZWRfX51a4/FY8yNIo FVL7HF8JlpwBT7LKzlejFFd4zMyKPkeP45Bi9FL7xVV3dhik26/tcMN3JCxyKR6yvSr3xHxjGjd Bmd+7PhYWfY3V2+Zggr6Nj1N9CkOcIvdHFkUc8RBG7rdTUrlx5SWGLijavEw/mgrfpnDaNYNiO7 0hghr83sYnH+SB9MuPCBTio7LONhrM5zNwdvBtbSqelrJiKUHogbSRXE/y5hWnbyFYR6MKqk1+x 2fAy4M/sFoWNFRnccBbOVs1BRl3HvQUddmG6R++Z3EPcZm04onDdknVe7oeaadrqcyMkh6Z827+ 1/uMPM3DaTG/ozo8YLR4Cg+g2kWEjRl/k7/QZVugoTBNVNASMjVfggra8opm7KRGLqBEH/Q33VW ehY7osXKO4YQ7VNouoxq0vvEzMrvEENlcZ4iC6mNPnMRlz2RJUrUwNEOe4mCFuls6h7LaexdS5m VMFU9xtgT8EHVZhqUyw== X-Authority-Analysis: v=2.4 cv=Q9LiJY2a c=1 sm=1 tr=0 ts=6a637309 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=RAioF0-LDSMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=bPLy7VutBQud47ZB1NcA:9 X-Proofpoint-ORIG-GUID: oMa11n_Y9UKCYcPNaaYAs0qJMEEvpXng X-Proofpoint-GUID: 6xkqPT-oPyxkUZsJsKQ8nqlhyGuI0UDV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-24_03,2026-07-24_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 adultscore=0 phishscore=0 bulkscore=0 spamscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607240128 Content-Type: text/plain; charset="utf-8" This is the s390 variant of commit 710618c760c0 ("arm64/cfi,bpf: Support kCFI + BPF on arm64"). Signed-off-by: Heiko Carstens --- arch/s390/include/asm/cfi.h | 7 +++++++ arch/s390/net/bpf_jit_comp.c | 26 ++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 arch/s390/include/asm/cfi.h diff --git a/arch/s390/include/asm/cfi.h b/arch/s390/include/asm/cfi.h new file mode 100644 index 000000000000..9af2c7cb70ca --- /dev/null +++ b/arch/s390/include/asm/cfi.h @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_S390_CFI_H +#define _ASM_S390_CFI_H + +#define __bpfcall + +#endif /* _ASM_S390_CFI_H */ diff --git a/arch/s390/net/bpf_jit_comp.c b/arch/s390/net/bpf_jit_comp.c index 31749c0362ca..74642e0b4ee1 100644 --- a/arch/s390/net/bpf_jit_comp.c +++ b/arch/s390/net/bpf_jit_comp.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -356,6 +357,19 @@ static void emit6_pcrel_rilc(struct bpf_jit *jit, u32 = op, u8 mask, s64 pcrel) } \ }) =20 +static inline void emit_u32_data(const u32 data, struct bpf_jit *jit) +{ + if (jit->prg_buf) + *(u32 *)(jit->prg_buf + jit->prg) =3D data; + jit->prg +=3D 4; +} + +static inline void emit_kcfi(u32 hash, struct bpf_jit *jit) +{ + if (IS_ENABLED(CONFIG_CFI)) + emit_u32_data(hash, jit); +} + /* * Return whether this is the first pass. The first pass is special, since= we * don't know any sizes yet, and thus must be conservative. @@ -597,6 +611,8 @@ static void bpf_jit_prologue(struct bpf_jit *jit, struc= t bpf_prog *fp) { BUILD_BUG_ON(sizeof(struct prog_frame) !=3D STACK_FRAME_OVERHEAD); =20 + emit_kcfi(bpf_is_subprog(fp) ? cfi_bpf_subprog_hash : cfi_bpf_hash, jit); + /* No-op for hotpatching */ /* brcl 0,prologue_plt */ EMIT6_PCREL_RILC(0xc0040000, 0, jit->prologue_plt); @@ -616,7 +632,7 @@ static void bpf_jit_prologue(struct bpf_jit *jit, struc= t bpf_prog *fp) bpf_skip(jit, 6); } /* Tail calls have to skip above initialization */ - jit->tail_call_start =3D jit->prg; + jit->tail_call_start =3D jit->prg - cfi_get_offset(); if (fp->aux->exception_cb) { /* * Switch stack, the new address is in the 2nd parameter. @@ -2401,9 +2417,9 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_verif= ier_env *env, struct bpf_pr jit_data->ctx =3D jit; jit_data->pass =3D pass; } - fp->bpf_func =3D (void *) jit.prg_buf; + fp->bpf_func =3D (void *)jit.prg_buf + cfi_get_offset(); fp->jited =3D 1; - fp->jited_len =3D jit.size; + fp->jited_len =3D jit.size - cfi_get_offset(); =20 if (!fp->is_func || extra_pass) { bpf_prog_fill_jited_linfo(fp, jit.addrs + 1); @@ -2671,8 +2687,10 @@ static int __arch_prepare_bpf_trampoline(struct bpf_= tramp_image *im, return -ENOTSUPP; =20 /* Return to %r14 in the struct_ops case. */ - if (flags & BPF_TRAMP_F_INDIRECT) + if (flags & BPF_TRAMP_F_INDIRECT) { flags |=3D BPF_TRAMP_F_SKIP_FRAME; + emit_kcfi(cfi_get_func_hash(func_addr), jit); + } =20 /* * Compute how many arguments we need to pass to BPF programs. --=20 2.53.0