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 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?

+
  	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