Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp4568508pxv; Tue, 6 Jul 2021 04:16:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx4iyidKTxB525PR3Wlao0bG8QlVA5qsvn3mkwdScG7hUzIEe4g60c1BouEpjrmu//C2vgD X-Received: by 2002:a6b:cf15:: with SMTP id o21mr15630530ioa.9.1625570193901; Tue, 06 Jul 2021 04:16:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625570193; cv=none; d=google.com; s=arc-20160816; b=yusaGKKUO1TbIgJFy0Nw2IJ59GJb4wiAjnQGphTaggqBBMBmEWoh0asFPy0lR3Cj9S k38GDT1v5tyXhY10Nal4Ry4hrM+XfEdvtKbPoCVssOJpG+gSp16kX/C384XFVs/s1Yyn qxH+GTtSsUq0LiiFcGvr7jjV6Y2aY0pc7A2sBmD++jojk6WcAURkswc3ePWqH+V0bDYP oPyO1ckJT26iM0ytYyjUD5L6XcNktoIBcjuaUoU+UaCdGgivkBxeVpYRHzbaZTqhucRM Emm5KhO/Zd4w5ZLiKgh9vgTQJl8nfi7KPORs93wzSih/6gk0jtm+dmXri5dq8Xyd6Dai 9ZHw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=G1hpVFYax1ywbng+ONH68QiUj31Dmjoi9aeHo8S3Za8=; b=dhb1A3mGCXyaa51ChXyEQyz0GboIrB7vYWhrrweR5dQyTLL4zQMu9RK2OWj6Ru0XE/ s1GAEa8Uzu0jfkuJ3SL/kbgUnxQ/ayHAhHDAjA7KgwRC+bbtydXkmvk7QgWemJt+/Jru /q5uAlhs3PY0O+IUUQKCA49xK3sgYxAjnnNAD/EwEVgBpCtbpNtzA+BvUWAHOLYIqC1s SfoAlBztk6QGNTYHldH5WFAyfuJwAce+u//k38IKNp/fWxf8/zZJnOR8R0Npl//FnlWK xYHIOReXEuAJ2DFO55hIxX8mfTu6KI46rAa+YzLQTykZUXbg/GxQIslykxX1K9FiPDr4 zt9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="X/ltM1IO"; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q3si11429846iob.0.2021.07.06.04.16.20; Tue, 06 Jul 2021 04:16:33 -0700 (PDT) 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=@kernel.org header.s=k20201202 header.b="X/ltM1IO"; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232187AbhGFLR4 (ORCPT + 99 others); Tue, 6 Jul 2021 07:17:56 -0400 Received: from mail.kernel.org ([198.145.29.99]:52310 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232016AbhGFLRR (ORCPT ); Tue, 6 Jul 2021 07:17:17 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id BFB3461C23; Tue, 6 Jul 2021 11:14:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1625570079; bh=swNqVe0z99ZqvzGEdEapp55al/zXzvnmMw+OPrrGzhc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X/ltM1IOekEZt46Qo828Pztp0Jcls01RzLAo2wbMhZhE2bWMOXUtpfXr1/UwhTxtA CWM3cSX7bHf58nKL7haRpN/Ynu0gRfmXTmqTtqmLrjIJGrjpu70bD0+lSESjFwEWr0 5qU8dY8kiW75LWAyp+pIlsqTWDECUUGzkuGB8iCVWi72TCvb78DXsHuevsFT30XpHf 1ZLXGWnCsBPyfsL5tZUV1/vZbUZuJvrFMc2ZOzGJEmI+p+ta5Dwrl0IxmltsXAJs1g fCYaJMsrXpIfnEJxzu5oaJHKMOWvkA5pmad/Yuz+orwsmrebLzDdzVqRGjR59Y3Kf+ amzri/sKOo39Q== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Bibo Mao , Thomas Bogendoerfer , Sasha Levin , linux-mips@vger.kernel.org Subject: [PATCH AUTOSEL 5.13 020/189] hugetlb: clear huge pte during flush function on mips platform Date: Tue, 6 Jul 2021 07:11:20 -0400 Message-Id: <20210706111409.2058071-20-sashal@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210706111409.2058071-1-sashal@kernel.org> References: <20210706111409.2058071-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Bibo Mao [ Upstream commit 33ae8f801ad8bec48e886d368739feb2816478f2 ] If multiple threads are accessing the same huge page at the same time, hugetlb_cow will be called if one thread write the COW huge page. And function huge_ptep_clear_flush is called to notify other threads to clear the huge pte tlb entry. The other threads clear the huge pte tlb entry and reload it from page table, the reload huge pte entry may be old. This patch fixes this issue on mips platform, and it clears huge pte entry before notifying other threads to flush current huge page entry, it is similar with other architectures. Signed-off-by: Bibo Mao Signed-off-by: Thomas Bogendoerfer Signed-off-by: Sasha Levin --- arch/mips/include/asm/hugetlb.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/mips/include/asm/hugetlb.h b/arch/mips/include/asm/hugetlb.h index 10e3be870df7..c2144409c0c4 100644 --- a/arch/mips/include/asm/hugetlb.h +++ b/arch/mips/include/asm/hugetlb.h @@ -46,7 +46,13 @@ static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm, static inline void huge_ptep_clear_flush(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) { - flush_tlb_page(vma, addr & huge_page_mask(hstate_vma(vma))); + /* + * clear the huge pte entry firstly, so that the other smp threads will + * not get old pte entry after finishing flush_tlb_page and before + * setting new huge pte entry + */ + huge_ptep_get_and_clear(vma->vm_mm, addr, ptep); + flush_tlb_page(vma, addr); } #define __HAVE_ARCH_HUGE_PTE_NONE -- 2.30.2