Re: [PATCH 17/31] mm/various: give up if pte_offset_map[_lock]() fails

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 2023/5/22 20:24, Qi Zheng wrote:


On 2023/5/22 13:10, Hugh Dickins wrote:
Following the examples of nearby code, various functions can just give
up if pte_offset_map() or pte_offset_map_lock() fails.  And there's no
need for a preliminary pmd_trans_unstable() or other such check, since
such cases are now safely handled inside.

Signed-off-by: Hugh Dickins <hughd@xxxxxxxxxx>
---
  mm/gup.c            | 9 ++++++---
  mm/ksm.c            | 7 ++++---
  mm/memcontrol.c     | 8 ++++----
  mm/memory-failure.c | 8 +++++---
  mm/migrate.c        | 3 +++
  mm/swap_state.c     | 3 +++
  6 files changed, 25 insertions(+), 13 deletions(-)


[...]

diff --git a/mm/migrate.c b/mm/migrate.c
index 3ecb7a40075f..308a56f0b156 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -305,6 +305,9 @@ void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd,
      swp_entry_t entry;
      ptep = pte_offset_map_lock(mm, pmd, address, &ptl);
+    if (!ptep)
+        return;

Maybe we should return false and let the caller handle the failure.

+
      pte = *ptep;
      pte_unmap(ptep);
diff --git a/mm/swap_state.c b/mm/swap_state.c
index b76a65ac28b3..db2ec85ef332 100644
--- a/mm/swap_state.c
+++ b/mm/swap_state.c
@@ -734,6 +734,9 @@ static void swap_ra_info(struct vm_fault *vmf,
      /* Copy the PTEs because the page table may be unmapped */
      orig_pte = pte = pte_offset_map(vmf->pmd, faddr);
+    if (!pte)
+        return;

Ditto?

Oh, I see that you handle it in the PATCH[22/31].


+
      if (fpfn == pfn + 1) {
          lpfn = fpfn;
          rpfn = fpfn + win;


--
Thanks,
Qi




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux