Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'execve-v6.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux

Pull execve fix from Kees Cook:

- Replace remaining kmap() uses with kmap_local_page() (Fabio M. De
Francesco)

* tag 'execve-v6.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
exec: Replace kmap{,_atomic}() with kmap_local_page()

+7 -7
+7 -7
fs/exec.c
··· 584 584 585 585 if (kmapped_page) { 586 586 flush_dcache_page(kmapped_page); 587 - kunmap(kmapped_page); 587 + kunmap_local(kaddr); 588 588 put_arg_page(kmapped_page); 589 589 } 590 590 kmapped_page = page; 591 - kaddr = kmap(kmapped_page); 591 + kaddr = kmap_local_page(kmapped_page); 592 592 kpos = pos & PAGE_MASK; 593 593 flush_arg_page(bprm, kpos, kmapped_page); 594 594 } ··· 602 602 out: 603 603 if (kmapped_page) { 604 604 flush_dcache_page(kmapped_page); 605 - kunmap(kmapped_page); 605 + kunmap_local(kaddr); 606 606 put_arg_page(kmapped_page); 607 607 } 608 608 return ret; ··· 880 880 881 881 for (index = MAX_ARG_PAGES - 1; index >= stop; index--) { 882 882 unsigned int offset = index == stop ? bprm->p & ~PAGE_MASK : 0; 883 - char *src = kmap(bprm->page[index]) + offset; 883 + char *src = kmap_local_page(bprm->page[index]) + offset; 884 884 sp -= PAGE_SIZE - offset; 885 885 if (copy_to_user((void *) sp, src, PAGE_SIZE - offset) != 0) 886 886 ret = -EFAULT; 887 - kunmap(bprm->page[index]); 887 + kunmap_local(src); 888 888 if (ret) 889 889 goto out; 890 890 } ··· 1686 1686 ret = -EFAULT; 1687 1687 goto out; 1688 1688 } 1689 - kaddr = kmap_atomic(page); 1689 + kaddr = kmap_local_page(page); 1690 1690 1691 1691 for (; offset < PAGE_SIZE && kaddr[offset]; 1692 1692 offset++, bprm->p++) 1693 1693 ; 1694 1694 1695 - kunmap_atomic(kaddr); 1695 + kunmap_local(kaddr); 1696 1696 put_arg_page(page); 1697 1697 } while (offset == PAGE_SIZE); 1698 1698