diff options
| author | Jakub Kicinski <kuba@kernel.org> | 2024-12-05 11:48:58 -0800 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2024-12-12 14:19:05 -0800 |
| commit | 5098462fbac60cbec76171a8b4998a36b85891a1 (patch) | |
| tree | e9d6b62251ba4a670216f12390cc1ccad8148569 /mm/debug.c | |
| parent | f3674384709b69c5cd8c4597b8bd73ea7bd0236f (diff) | |
| parent | 150b567e0d572342ef08bace7ee7aff80fd75327 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Cross-merge networking fixes after downstream PR (net-6.13-rc3).
No conflicts or adjacent changes.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'mm/debug.c')
| -rw-r--r-- | mm/debug.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/mm/debug.c b/mm/debug.c index aa57d3ffd4ed..95b6ab809c0e 100644 --- a/mm/debug.c +++ b/mm/debug.c @@ -124,19 +124,22 @@ static void __dump_page(const struct page *page) { struct folio *foliop, folio; struct page precise; + unsigned long head; unsigned long pfn = page_to_pfn(page); unsigned long idx, nr_pages = 1; int loops = 5; again: memcpy(&precise, page, sizeof(*page)); - foliop = page_folio(&precise); - if (foliop == (struct folio *)&precise) { + head = precise.compound_head; + if ((head & 1) == 0) { + foliop = (struct folio *)&precise; idx = 0; if (!folio_test_large(foliop)) goto dump; foliop = (struct folio *)page; } else { + foliop = (struct folio *)(head - 1); idx = folio_page_idx(foliop, page); } |
