Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1952290pxb; Fri, 5 Mar 2021 03:59:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJzzIwH0/JgQVNDVwjBZLP6Ec2lUDxhKuCbLyXLDnvfebFcnz6deNNM0Fo2PcRIm6rgtbIlA X-Received: by 2002:a17:906:b047:: with SMTP id bj7mr1919793ejb.335.1614945551443; Fri, 05 Mar 2021 03:59:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614945551; cv=none; d=google.com; s=arc-20160816; b=xbD4iUBBoz4WvgQuAFpR8HlLcVjXcxr7AznOYXuoMZBSvjhgw+xSuBmDZYWPutyqrf gLrxrJXJ1S0F2o9PsuJPbvuVar9Jlzh5AvfjPX1MWUnuoJBnGoseQsvhx3Qed3YV1xqZ OdC/ylkt47mAi98Ma+IE8wf3QPrQbynMt5P1Zv2On87he7YWZmgrNH5j3uHQBKZ7rSo5 HFnh/AdGSOsJ0B9LmKuljNJptNykIYsHDG9rLw8tTg0PuQazA4xJ0SYs9nKsT7Etq+el iIiYasUCJbl/QvVrqlRYN2uKL0lEEqnmvD611/fGckO+MQcFQ6WhM3IuiLzvOfZmItjU Qy5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=tThMMiURIYel2tcEV6/s2VlXRYF5FWm2p5ebEVtrexM=; b=VPeE0lh1V+ueZhsQawC+tJeA0YIGwyJcFgU6oCQYRkQFmWWE6GzhFN9wLOTPmgcZa9 hCE9wys40jKH9ciXbHA058wXAQG2HHRlut+mvcsS0AYWbREZXqtJiqK6uw3f52raCsjk JIcotjWRxXrAyIXLR664SDVyyobqT8w4Jl+Kf2fPw6S9KliYYrwDm3/5fQoBjNdhXV42 DG57+AcbuukImjx+E0vLcj2yTaK927e15WWHZdcSiXfrnd0z/my4VA1gz4mwotfN8j8c VW8T/XNV1G1eo3/B89EAZrH1XksgOe800sROc2hQvEiY/qc2WWvZCHuma3f8gPpkKfec 1ltQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=LUYjC8cH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y14si1456911edt.78.2021.03.05.03.58.45; Fri, 05 Mar 2021 03:59:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=LUYjC8cH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229494AbhCELzs (ORCPT + 99 others); Fri, 5 Mar 2021 06:55:48 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:20788 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229493AbhCELzq (ORCPT ); Fri, 5 Mar 2021 06:55:46 -0500 Received: from pps.filterd (m0187473.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 125BXdcS012986; Fri, 5 Mar 2021 06:54:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding; s=pp1; bh=tThMMiURIYel2tcEV6/s2VlXRYF5FWm2p5ebEVtrexM=; b=LUYjC8cHEyyiFRiSzq78oKOfa2CQHAAaR9ibE2taXdpa4O8y/t8nbVM3Q3jc1+O/4n+J bkZ4dWxqJCpxD8whJ24L/8wVd9jMCRR7jgFhe5mSSld7SamyjOW1yewXC0deKQKsFWkM pVPnrl4lM44NMfTAVdopkDtdmmqfz+xYn4AS789aA9ck1pC1XWuZPUNSPIQWMkpNljGL +YHtfewk33fsk+z2A27x/87I7vOCB/SpwhjtN2iTtcvcSH8hynXe/p0JvWNZsUUnI6BU Cz/j1muApuenl2iArsTcrz3LKmq4MYvVXoWXcOZWsPeY7KewU9oyD9omW3E5t3GOk8ck zw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 373kk9ry2n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 05 Mar 2021 06:54:57 -0500 Received: from m0187473.ppops.net (m0187473.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 125BXgA1013171; Fri, 5 Mar 2021 06:54:56 -0500 Received: from ppma06ams.nl.ibm.com (66.31.33a9.ip4.static.sl-reverse.com [169.51.49.102]) by mx0a-001b2d01.pphosted.com with ESMTP id 373kk9ry1w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 05 Mar 2021 06:54:56 -0500 Received: from pps.filterd (ppma06ams.nl.ibm.com [127.0.0.1]) by ppma06ams.nl.ibm.com (8.16.0.42/8.16.0.42) with SMTP id 125BreLC030755; Fri, 5 Mar 2021 11:54:54 GMT Received: from b06cxnps4074.portsmouth.uk.ibm.com (d06relay11.portsmouth.uk.ibm.com [9.149.109.196]) by ppma06ams.nl.ibm.com with ESMTP id 37293fsycm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 05 Mar 2021 11:54:53 +0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps4074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 125Bspes45875634 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 5 Mar 2021 11:54:51 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0FCB8AE04D; Fri, 5 Mar 2021 11:54:51 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9F29DAE045; Fri, 5 Mar 2021 11:54:48 +0000 (GMT) Received: from bangoria.ibmuc.com (unknown [9.199.43.205]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 5 Mar 2021 11:54:48 +0000 (GMT) From: Ravi Bangoria To: mpe@ellerman.id.au Cc: ravi.bangoria@linux.ibm.com, oleg@redhat.com, rostedt@goodmis.org, paulus@samba.org, jniethe5@gmail.com, naveen.n.rao@linux.ibm.com, sandipan@linux.ibm.com, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, christophe.leroy@csgroup.eu Subject: [PATCH v4] powerpc/uprobes: Validation for prefixed instruction Date: Fri, 5 Mar 2021 17:24:33 +0530 Message-Id: <20210305115433.140769-1-ravi.bangoria@linux.ibm.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369,18.0.761 definitions=2021-03-05_05:2021-03-03,2021-03-05 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 malwarescore=0 mlxlogscore=999 priorityscore=1501 lowpriorityscore=0 clxscore=1015 spamscore=0 bulkscore=0 suspectscore=0 adultscore=0 mlxscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2103050058 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As per ISA 3.1, prefixed instruction should not cross 64-byte boundary. So don't allow Uprobe on such prefixed instruction. There are two ways probed instruction is changed in mapped pages. First, when Uprobe is activated, it searches for all the relevant pages and replace instruction in them. In this case, if that probe is on the 64-byte unaligned prefixed instruction, error out directly. Second, when Uprobe is already active and user maps a relevant page via mmap(), instruction is replaced via mmap() code path. But because Uprobe is invalid, entire mmap() operation can not be stopped. In this case just print an error and continue. Signed-off-by: Ravi Bangoria Acked-by: Naveen N. Rao --- v3: https://lore.kernel.org/r/20210304050529.59391-1-ravi.bangoria@linux.ibm.com v3->v4: - CONFIG_PPC64 check was not required, remove it. - Use SZ_ macros instead of hardcoded numbers. arch/powerpc/kernel/uprobes.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/powerpc/kernel/uprobes.c b/arch/powerpc/kernel/uprobes.c index e8a63713e655..4cbfff6e94a3 100644 --- a/arch/powerpc/kernel/uprobes.c +++ b/arch/powerpc/kernel/uprobes.c @@ -41,6 +41,13 @@ int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, if (addr & 0x03) return -EINVAL; + if (cpu_has_feature(CPU_FTR_ARCH_31) && + ppc_inst_prefixed(auprobe->insn) && + (addr & (SZ_64 - 4)) == SZ_64 - 4) { + pr_info_ratelimited("Cannot register a uprobe on 64 byte unaligned prefixed instruction\n"); + return -EINVAL; + } + return 0; } -- 2.27.0