diff options
| author | Mark Brown <broonie@kernel.org> | 2020-12-11 17:49:01 +0000 | 
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2020-12-11 17:49:01 +0000 | 
| commit | 3e98a021cc85e7d52acdd1eae8a988e975ec5bf9 (patch) | |
| tree | cecfac58b9550a602555a02a9d583ed0f3378b38 /mm/gup.c | |
| parent | 58f7553fa424fd0fd74e8b796d50c66014cebebe (diff) | |
| parent | 2fee9583198eb97b5351feda7bd825e0f778385c (diff) | |
Merge remote-tracking branch 'spi/for-5.11' into spi-next
Diffstat (limited to 'mm/gup.c')
| -rw-r--r-- | mm/gup.c | 14 | 
1 files changed, 10 insertions, 4 deletions
| @@ -1647,8 +1647,11 @@ check_again:  		/*  		 * drop the above get_user_pages reference.  		 */ -		for (i = 0; i < nr_pages; i++) -			put_page(pages[i]); +		if (gup_flags & FOLL_PIN) +			unpin_user_pages(pages, nr_pages); +		else +			for (i = 0; i < nr_pages; i++) +				put_page(pages[i]);  		if (migrate_pages(&cma_page_list, alloc_migration_target, NULL,  			(unsigned long)&mtc, MIGRATE_SYNC, MR_CONTIG_RANGE)) { @@ -1728,8 +1731,11 @@ static long __gup_longterm_locked(struct mm_struct *mm,  			goto out;  		if (check_dax_vmas(vmas_tmp, rc)) { -			for (i = 0; i < rc; i++) -				put_page(pages[i]); +			if (gup_flags & FOLL_PIN) +				unpin_user_pages(pages, rc); +			else +				for (i = 0; i < rc; i++) +					put_page(pages[i]);  			rc = -EOPNOTSUPP;  			goto out;  		} | 
