Received: by 2002:ab2:6203:0:b0:1f5:f2ab:c469 with SMTP id o3csp2775649lqt; Tue, 23 Apr 2024 00:43:26 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCU6TvRj4tNcjSRtgl4+LmshlaKySWigdkfpcpqxuyC8lf4QuhiQ+WSlxuvtYGEY3A+pX20MLcscdzZVM6zcfk8AOE3atWdyAU5uMII9xQ== X-Google-Smtp-Source: AGHT+IFy6GR2x0dsR6vBFjzU1dOP8TJOrd6ELHsaA5nHdHInxyvKQBSd7yO6D/bp9ZqPUoAgkWid X-Received: by 2002:ac8:5789:0:b0:437:ae7c:ebd with SMTP id v9-20020ac85789000000b00437ae7c0ebdmr16673259qta.28.1713858206169; Tue, 23 Apr 2024 00:43:26 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713858206; cv=pass; d=google.com; s=arc-20160816; b=Rs8Ot8AQ6c7U4jlzIrTflgIjv5CQm5uKHQgCLtRlK/Rmqexc85A68wYYz3/Pl6MQsh 1WUoSUfyUs7VQSD34Tdp+Ir/VNaTKGDppNs7TtXtlUQ/WTgVgEUix8alCYvLBIeSAiqY QslOUvf+vbyB7yJAoLf32ZxZmrWxFXqgFqyrzJrb/Gdw4ker3a/4ZU3EMIp7ZH7scpZQ 8IcIvgSQJk3T+ZwgJgQrM1zE3MH+jOPyZC+n+SNvaXb1+1s2My7PU14k0wzGoatkb6p9 b3qzei/myuA3JJhreqNiyaOLCEoKkltYAdDUsr9XxPC98zBUT0JA/J9PhEVTcFO74WMC nwKg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from; bh=Kl5HE6X9g8RNDjSDe4ajd8S//gbL/S46IqpmW9V1dio=; fh=PNqKrCOHX+VJoqUjJamHCLDIMUCHf3uykdyOju9GT7c=; b=bDS8wIHcNyn5/ijKI9rqxgkQDQ51OaCXNOw6UgWt41pNLkzmfFgV3R9o/Mo0wBSEus BtKZHFH00JOHOArXouAnvPu/3KF+UvUvSQ6a6Trl8bEycOPF5/F5pvLTQei9lyqQTnMU Q+RIPTOmqZtoFYgsKoTM+XNEUys8ZESRoS9qAIGF/L4r6PgB4V4gRL7rpDcX8tEFA8uv RD0lsp4Pa2YoRfJw6nokuuRWHHRV5epQ7HvMsezkn2j/qYiyhyLm/tHRTU4rkD29H0Ax M8jz9PPVysPveUKStco94VS3DerLVukc+eTZD3QoSM3EdYUUjY3oFJsS8UT+CUntKYp2 QV0Q==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-154614-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-154614-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id t7-20020a05622a180700b004396f41fea2si7723901qtc.265.2024.04.23.00.43.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Apr 2024 00:43:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-154614-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-154614-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-154614-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id E2E171C219BF for ; Tue, 23 Apr 2024 07:43:25 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AC91747F64; Tue, 23 Apr 2024 07:43:19 +0000 (UTC) Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 2977746557; Tue, 23 Apr 2024 07:43:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713858199; cv=none; b=nctynLfKy5pypBRFAyegfYYgw77w7RI3PjTdlB2WsfqGDV5ghESNCdovB9YHIgExdXwkUsjE6+pq+devrUQPrAwgO8pW6P9VqSfk3YSixPvJ7Ek8odqz+91X+x/RrLAajSTPCAWv7qosjS3aKq8GkBgP6Eau+QEKDbATJjJccjE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713858199; c=relaxed/simple; bh=NoS4itDaBOpjGmCNi4CVA0MJJnPxZXKEwsnZaFEDMQA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=DMIN5gQTsuw64NTFn4PldljR9tKsggGPN/vu9vjtjj3mB5fF63E3ijiCgpYK4Oq1FaGVcq5E1VGJpueX94L7IZ90Tr8myEm/LBAaQW5LSwrO7m496lu0JiiplK0+RUfL5AyhmGQMlXPPyEPIZp4NKRKCzvINhzRMYaAzXc5+LpI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2CF89C116B1; Tue, 23 Apr 2024 07:43:15 +0000 (UTC) From: Huacai Chen To: Arnd Bergmann , Huacai Chen Cc: loongarch@lists.linux.dev, linux-arch@vger.kernel.org, Xuefeng Li , Guo Ren , Xuerui Wang , Jiaxun Yang , linux-kernel@vger.kernel.org, loongson-kernel@lists.loongnix.cn, Jiantao Shan , Huacai Chen Subject: [PATCH] LoongArch: Fix access error when read fault on a write-only VMA Date: Tue, 23 Apr 2024 15:42:57 +0800 Message-ID: <20240423074257.2480274-1-chenhuacai@loongson.cn> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Jiantao Shan As with most architectures, allow handling of read faults in VMAs that have VM_WRITE but without VM_READ (WRITE implies READ). Otherwise, reading before writing a write-only memory will error while reading after writing everything is fine. BTW, move the VM_EXEC judgement before VM_READ/VM_WRITE to make logic a little clearer. Signed-off-by: Jiantao Shan Signed-off-by: Huacai Chen --- arch/loongarch/mm/fault.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/loongarch/mm/fault.c b/arch/loongarch/mm/fault.c index 1fc2f6813ea0..97b40defde06 100644 --- a/arch/loongarch/mm/fault.c +++ b/arch/loongarch/mm/fault.c @@ -202,10 +202,10 @@ static void __kprobes __do_page_fault(struct pt_regs *regs, if (!(vma->vm_flags & VM_WRITE)) goto bad_area; } else { - if (!(vma->vm_flags & VM_READ) && address != exception_era(regs)) - goto bad_area; if (!(vma->vm_flags & VM_EXEC) && address == exception_era(regs)) goto bad_area; + if (!(vma->vm_flags & (VM_READ | VM_WRITE)) && address != exception_era(regs)) + goto bad_area; } /* -- 2.43.0