Re: [PATCH 19/22] mm: always return EBUSY for invalid ranges in hmm_range_{fault,snapshot}

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

 




On 6/30/19 11:20 PM, Christoph Hellwig wrote:
We should not have two different error codes for the same condition.  In
addition this really complicates the code due to the special handling of
EAGAIN that drops the mmap_sem due to the FAULT_FLAG_ALLOW_RETRY logic
in the core vm.

Signed-off-by: Christoph Hellwig <hch@xxxxxx>

Reviewed-by: Ralph Campbell <rcampbell@xxxxxxxxxx>

Probably should update the "Return:" comment above
hmm_range_snapshot() too.

---
  mm/hmm.c | 8 +++-----
  1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/mm/hmm.c b/mm/hmm.c
index c85ed7d4e2ce..d125df698e2b 100644
--- a/mm/hmm.c
+++ b/mm/hmm.c
@@ -974,7 +974,7 @@ long hmm_range_snapshot(struct hmm_range *range)
  	do {
  		/* If range is no longer valid force retry. */
  		if (!range->valid)
-			return -EAGAIN;
+			return -EBUSY;
vma = find_vma(hmm->mm, start);
  		if (vma == NULL || (vma->vm_flags & device_vma))
@@ -1069,10 +1069,8 @@ long hmm_range_fault(struct hmm_range *range, bool block)
do {
  		/* If range is no longer valid force retry. */
-		if (!range->valid) {
-			up_read(&hmm->mm->mmap_sem);
-			return -EAGAIN;
-		}
+		if (!range->valid)
+			return -EBUSY;
vma = find_vma(hmm->mm, start);
  		if (vma == NULL || (vma->vm_flags & device_vma))




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux