Commit 4ff8a142 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull arm64 fix from Will Deacon:
 "Just one small fix here, preventing a VM_WARN_ON when a !present
  PMD/PUD is "freed" as part of a huge ioremap() operation.

  The correct behaviour is to skip the free silently in this case, which
  is a little weird (the function is a bit of a misnomer), but it
  follows the x86 implementation"

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  arm64: fix erroneous warnings in page freeing functions
parents 53937340 fac880c7
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -985,8 +985,9 @@ int pmd_free_pte_page(pmd_t *pmdp, unsigned long addr)

	pmd = READ_ONCE(*pmdp);

	/* No-op for empty entry and WARN_ON for valid entry */
	if (!pmd_present(pmd) || !pmd_table(pmd)) {
	if (!pmd_present(pmd))
		return 1;
	if (!pmd_table(pmd)) {
		VM_WARN_ON(!pmd_table(pmd));
		return 1;
	}
@@ -1007,8 +1008,9 @@ int pud_free_pmd_page(pud_t *pudp, unsigned long addr)

	pud = READ_ONCE(*pudp);

	/* No-op for empty entry and WARN_ON for valid entry */
	if (!pud_present(pud) || !pud_table(pud)) {
	if (!pud_present(pud))
		return 1;
	if (!pud_table(pud)) {
		VM_WARN_ON(!pud_table(pud));
		return 1;
	}