From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Huang Pei <huangpei@loongson.cn>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
Sasha Levin <sashal@kernel.org>,
linux-mips@vger.kernel.org
Subject: [PATCH AUTOSEL 4.9 24/35] MIPS: add PMD table accounting into MIPS'pmd_alloc_one
Date: Tue, 6 Jul 2021 07:28:36 -0400 [thread overview]
Message-ID: <20210706112848.2066036-24-sashal@kernel.org> (raw)
In-Reply-To: <20210706112848.2066036-1-sashal@kernel.org>
From: Huang Pei <huangpei@loongson.cn>
[ Upstream commit ed914d48b6a1040d1039d371b56273d422c0081e ]
This fixes Page Table accounting bug.
MIPS is the ONLY arch just defining __HAVE_ARCH_PMD_ALLOC_ONE alone.
Since commit b2b29d6d011944 (mm: account PMD tables like PTE tables),
"pmd_free" in asm-generic with PMD table accounting and "pmd_alloc_one"
in MIPS without PMD table accounting causes PageTable accounting number
negative, which read by global_zone_page_state(), always returns 0.
Signed-off-by: Huang Pei <huangpei@loongson.cn>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/mips/include/asm/pgalloc.h | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/arch/mips/include/asm/pgalloc.h b/arch/mips/include/asm/pgalloc.h
index a03e86969f78..ff982d8b62f6 100644
--- a/arch/mips/include/asm/pgalloc.h
+++ b/arch/mips/include/asm/pgalloc.h
@@ -107,11 +107,15 @@ do { \
static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
{
- pmd_t *pmd;
+ pmd_t *pmd = NULL;
+ struct page *pg;
- pmd = (pmd_t *) __get_free_pages(GFP_KERNEL, PMD_ORDER);
- if (pmd)
+ pg = alloc_pages(GFP_KERNEL | __GFP_ACCOUNT, PMD_ORDER);
+ if (pg) {
+ pgtable_pmd_page_ctor(pg);
+ pmd = (pmd_t *)page_address(pg);
pmd_init((unsigned long)pmd, (unsigned long)invalid_pte_table);
+ }
return pmd;
}
--
2.30.2
next prev parent reply other threads:[~2021-07-06 12:12 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-06 11:28 [PATCH AUTOSEL 4.9 01/35] net: pch_gbe: Use proper accessors to BE data in pch_ptp_match() Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 02/35] hugetlb: clear huge pte during flush function on mips platform Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 03/35] atm: iphase: fix possible use-after-free in ia_module_exit() Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 04/35] mISDN: fix possible use-after-free in HFC_cleanup() Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 05/35] atm: nicstar: Fix possible use-after-free in nicstar_cleanup() Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 06/35] net: Treat __napi_schedule_irqoff() as __napi_schedule() on PREEMPT_RT Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 07/35] reiserfs: add check for invalid 1st journal block Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 08/35] drm/virtio: Fixes a potential NULL pointer dereference on probe failure Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 09/35] drm/virtio: Fix double free " Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 10/35] udf: Fix NULL pointer dereference in udf_symlink function Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 11/35] e100: handle eeprom as little endian Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 12/35] clk: tegra: Ensure that PLLU configuration is applied properly Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 13/35] ipv6: use prandom_u32() for ID generation Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 14/35] RDMA/cxgb4: Fix missing error code in create_qp() Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 15/35] dm space maps: don't reset space map allocation cursor when committing Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 16/35] net: micrel: check return value after calling platform_get_resource() Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 17/35] net: moxa: Use devm_platform_get_and_ioremap_resource() Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 18/35] fjes: check return value after calling platform_get_resource() Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 19/35] selinux: use __GFP_NOWARN with GFP_NOWAIT in the AVC Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 20/35] xfrm: Fix error reporting in xfrm_state_construct Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 21/35] wlcore/wl12xx: Fix wl12xx get_mac error if device is in ELP Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 22/35] wl1251: Fix possible buffer overflow in wl1251_cmd_scan Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 23/35] cw1200: add missing MODULE_DEVICE_TABLE Sasha Levin
2021-07-06 11:28 ` Sasha Levin [this message]
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 25/35] atm: nicstar: use 'dma_free_coherent' instead of 'kfree' Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 26/35] atm: nicstar: register the interrupt handler in the right place Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 27/35] RDMA/rxe: Don't overwrite errno from ib_umem_get() Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 28/35] sfc: avoid double pci_remove of VFs Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 29/35] sfc: error code if SRIOV cannot be disabled Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 30/35] wireless: wext-spy: Fix out-of-bounds warning Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 31/35] RDMA/cma: Fix rdma_resolve_route() memory leak Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 32/35] Bluetooth: Fix the HCI to MGMT status conversion table Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 33/35] Bluetooth: Shutdown controller after workqueues are flushed or cancelled Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 34/35] Bluetooth: btusb: fix bt fiwmare downloading failure issue for qca btsoc Sasha Levin
2021-07-06 11:28 ` [PATCH AUTOSEL 4.9 35/35] sctp: add size validation when walking chunks Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210706112848.2066036-24-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=huangpei@loongson.cn \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=tsbogend@alpha.franken.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox