From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: Re: [PATCH RFC v2 3/4] mm/ptshare: Create new mm struct for page table sharing
Date: Sun, 7 May 2023 22:13:35 +0800 [thread overview]
Message-ID: <202305072226.KGlQeenj-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <1fd52581f4e4960a4d07cb9784d56659ec139d3c.1682453344.git.khalid.aziz@oracle.com>
References: <1fd52581f4e4960a4d07cb9784d56659ec139d3c.1682453344.git.khalid.aziz@oracle.com>
TO: Khalid Aziz <khalid.aziz@oracle.com>
Hi Khalid,
[This is a private test report for your RFC patch.]
kernel test robot noticed the following build warnings:
[auto build test WARNING on arnd-asm-generic/master]
[also build test WARNING on vfs-idmapping/for-next linus/master v6.3 next-20230505]
[cannot apply to akpm-mm/mm-everything]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Khalid-Aziz/mm-ptshare-Add-vm-flag-for-shared-PTE/20230427-005143
base: https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git master
patch link: https://lore.kernel.org/r/1fd52581f4e4960a4d07cb9784d56659ec139d3c.1682453344.git.khalid.aziz%40oracle.com
patch subject: [PATCH RFC v2 3/4] mm/ptshare: Create new mm struct for page table sharing
:::::: branch date: 11 days ago
:::::: commit date: 11 days ago
config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20230507/202305072226.KGlQeenj-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Link: https://lore.kernel.org/r/202305072226.KGlQeenj-lkp@intel.com/
smatch warnings:
mm/mmap.c:2699 mmap_region() warn: bitwise AND condition is false here
vim +2699 mm/mmap.c
dd2283f2605e3b Yang Shi 2018-10-26 2554
e99668a56430a2 Liam R. Howlett 2022-09-06 2555 unsigned long mmap_region(struct file *file, unsigned long addr,
e99668a56430a2 Liam R. Howlett 2022-09-06 2556 unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,
e99668a56430a2 Liam R. Howlett 2022-09-06 2557 struct list_head *uf)
e99668a56430a2 Liam R. Howlett 2022-09-06 2558 {
e99668a56430a2 Liam R. Howlett 2022-09-06 2559 struct mm_struct *mm = current->mm;
e99668a56430a2 Liam R. Howlett 2022-09-06 2560 struct vm_area_struct *vma = NULL;
e99668a56430a2 Liam R. Howlett 2022-09-06 2561 struct vm_area_struct *next, *prev, *merge;
e99668a56430a2 Liam R. Howlett 2022-09-06 2562 pgoff_t pglen = len >> PAGE_SHIFT;
e99668a56430a2 Liam R. Howlett 2022-09-06 2563 unsigned long charged = 0;
e99668a56430a2 Liam R. Howlett 2022-09-06 2564 unsigned long end = addr + len;
e99668a56430a2 Liam R. Howlett 2022-09-06 2565 unsigned long merge_start = addr, merge_end = end;
e99668a56430a2 Liam R. Howlett 2022-09-06 2566 pgoff_t vm_pgoff;
e99668a56430a2 Liam R. Howlett 2022-09-06 2567 int error;
183654ce26a5d5 Liam R. Howlett 2023-01-20 2568 VMA_ITERATOR(vmi, mm, addr);
e99668a56430a2 Liam R. Howlett 2022-09-06 2569
e99668a56430a2 Liam R. Howlett 2022-09-06 2570 /* Check against address space limit. */
e99668a56430a2 Liam R. Howlett 2022-09-06 2571 if (!may_expand_vm(mm, vm_flags, len >> PAGE_SHIFT)) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2572 unsigned long nr_pages;
e99668a56430a2 Liam R. Howlett 2022-09-06 2573
e99668a56430a2 Liam R. Howlett 2022-09-06 2574 /*
e99668a56430a2 Liam R. Howlett 2022-09-06 2575 * MAP_FIXED may remove pages of mappings that intersects with
e99668a56430a2 Liam R. Howlett 2022-09-06 2576 * requested mapping. Account for the pages it would unmap.
e99668a56430a2 Liam R. Howlett 2022-09-06 2577 */
e99668a56430a2 Liam R. Howlett 2022-09-06 2578 nr_pages = count_vma_pages_range(mm, addr, end);
e99668a56430a2 Liam R. Howlett 2022-09-06 2579
e99668a56430a2 Liam R. Howlett 2022-09-06 2580 if (!may_expand_vm(mm, vm_flags,
e99668a56430a2 Liam R. Howlett 2022-09-06 2581 (len >> PAGE_SHIFT) - nr_pages))
e99668a56430a2 Liam R. Howlett 2022-09-06 2582 return -ENOMEM;
e99668a56430a2 Liam R. Howlett 2022-09-06 2583 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2584
e99668a56430a2 Liam R. Howlett 2022-09-06 2585 /* Unmap any existing mapping in the area */
183654ce26a5d5 Liam R. Howlett 2023-01-20 2586 if (do_vmi_munmap(&vmi, mm, addr, len, uf, false))
e99668a56430a2 Liam R. Howlett 2022-09-06 2587 return -ENOMEM;
e99668a56430a2 Liam R. Howlett 2022-09-06 2588
e99668a56430a2 Liam R. Howlett 2022-09-06 2589 /*
e99668a56430a2 Liam R. Howlett 2022-09-06 2590 * Private writable mapping: check memory availability
e99668a56430a2 Liam R. Howlett 2022-09-06 2591 */
e99668a56430a2 Liam R. Howlett 2022-09-06 2592 if (accountable_mapping(file, vm_flags)) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2593 charged = len >> PAGE_SHIFT;
e99668a56430a2 Liam R. Howlett 2022-09-06 2594 if (security_vm_enough_memory_mm(mm, charged))
e99668a56430a2 Liam R. Howlett 2022-09-06 2595 return -ENOMEM;
e99668a56430a2 Liam R. Howlett 2022-09-06 2596 vm_flags |= VM_ACCOUNT;
e99668a56430a2 Liam R. Howlett 2022-09-06 2597 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2598
183654ce26a5d5 Liam R. Howlett 2023-01-20 2599 next = vma_next(&vmi);
183654ce26a5d5 Liam R. Howlett 2023-01-20 2600 prev = vma_prev(&vmi);
e99668a56430a2 Liam R. Howlett 2022-09-06 2601 if (vm_flags & VM_SPECIAL)
e99668a56430a2 Liam R. Howlett 2022-09-06 2602 goto cannot_expand;
e99668a56430a2 Liam R. Howlett 2022-09-06 2603
e99668a56430a2 Liam R. Howlett 2022-09-06 2604 /* Attempt to expand an old mapping */
e99668a56430a2 Liam R. Howlett 2022-09-06 2605 /* Check next */
e99668a56430a2 Liam R. Howlett 2022-09-06 2606 if (next && next->vm_start == end && !vma_policy(next) &&
e99668a56430a2 Liam R. Howlett 2022-09-06 2607 can_vma_merge_before(next, vm_flags, NULL, file, pgoff+pglen,
e99668a56430a2 Liam R. Howlett 2022-09-06 2608 NULL_VM_UFFD_CTX, NULL)) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2609 merge_end = next->vm_end;
e99668a56430a2 Liam R. Howlett 2022-09-06 2610 vma = next;
e99668a56430a2 Liam R. Howlett 2022-09-06 2611 vm_pgoff = next->vm_pgoff - pglen;
e99668a56430a2 Liam R. Howlett 2022-09-06 2612 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2613
e99668a56430a2 Liam R. Howlett 2022-09-06 2614 /* Check prev */
e99668a56430a2 Liam R. Howlett 2022-09-06 2615 if (prev && prev->vm_end == addr && !vma_policy(prev) &&
e99668a56430a2 Liam R. Howlett 2022-09-06 2616 (vma ? can_vma_merge_after(prev, vm_flags, vma->anon_vma, file,
e99668a56430a2 Liam R. Howlett 2022-09-06 2617 pgoff, vma->vm_userfaultfd_ctx, NULL) :
e99668a56430a2 Liam R. Howlett 2022-09-06 2618 can_vma_merge_after(prev, vm_flags, NULL, file, pgoff,
e99668a56430a2 Liam R. Howlett 2022-09-06 2619 NULL_VM_UFFD_CTX, NULL))) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2620 merge_start = prev->vm_start;
e99668a56430a2 Liam R. Howlett 2022-09-06 2621 vma = prev;
e99668a56430a2 Liam R. Howlett 2022-09-06 2622 vm_pgoff = prev->vm_pgoff;
e99668a56430a2 Liam R. Howlett 2022-09-06 2623 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2624
e99668a56430a2 Liam R. Howlett 2022-09-06 2625
e99668a56430a2 Liam R. Howlett 2022-09-06 2626 /* Actually expand, if possible */
e99668a56430a2 Liam R. Howlett 2022-09-06 2627 if (vma &&
3c441ab7d059eb Liam R. Howlett 2023-01-20 2628 !vma_expand(&vmi, vma, merge_start, merge_end, vm_pgoff, next)) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2629 khugepaged_enter_vma(vma, vm_flags);
e99668a56430a2 Liam R. Howlett 2022-09-06 2630 goto expanded;
e99668a56430a2 Liam R. Howlett 2022-09-06 2631 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2632
e99668a56430a2 Liam R. Howlett 2022-09-06 2633 cannot_expand:
e99668a56430a2 Liam R. Howlett 2022-09-06 2634 /*
e99668a56430a2 Liam R. Howlett 2022-09-06 2635 * Determine the object being mapped and call the appropriate
e99668a56430a2 Liam R. Howlett 2022-09-06 2636 * specific mapper. the address has already been validated, but
e99668a56430a2 Liam R. Howlett 2022-09-06 2637 * not unmapped, but the maps are removed from the list.
e99668a56430a2 Liam R. Howlett 2022-09-06 2638 */
e99668a56430a2 Liam R. Howlett 2022-09-06 2639 vma = vm_area_alloc(mm);
e99668a56430a2 Liam R. Howlett 2022-09-06 2640 if (!vma) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2641 error = -ENOMEM;
e99668a56430a2 Liam R. Howlett 2022-09-06 2642 goto unacct_error;
e99668a56430a2 Liam R. Howlett 2022-09-06 2643 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2644
0fd5a9e2b09ff5 Liam R. Howlett 2023-01-20 2645 vma_iter_set(&vmi, addr);
e99668a56430a2 Liam R. Howlett 2022-09-06 2646 vma->vm_start = addr;
e99668a56430a2 Liam R. Howlett 2022-09-06 2647 vma->vm_end = end;
1c71222e5f2393 Suren Baghdasaryan 2023-01-26 2648 vm_flags_init(vma, vm_flags);
e99668a56430a2 Liam R. Howlett 2022-09-06 2649 vma->vm_page_prot = vm_get_page_prot(vm_flags);
e99668a56430a2 Liam R. Howlett 2022-09-06 2650 vma->vm_pgoff = pgoff;
e99668a56430a2 Liam R. Howlett 2022-09-06 2651
e99668a56430a2 Liam R. Howlett 2022-09-06 2652 if (file) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2653 if (vm_flags & VM_SHARED) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2654 error = mapping_map_writable(file->f_mapping);
e99668a56430a2 Liam R. Howlett 2022-09-06 2655 if (error)
e99668a56430a2 Liam R. Howlett 2022-09-06 2656 goto free_vma;
e99668a56430a2 Liam R. Howlett 2022-09-06 2657 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2658
e99668a56430a2 Liam R. Howlett 2022-09-06 2659 vma->vm_file = get_file(file);
e99668a56430a2 Liam R. Howlett 2022-09-06 2660 error = call_mmap(file, vma);
e99668a56430a2 Liam R. Howlett 2022-09-06 2661 if (error)
e99668a56430a2 Liam R. Howlett 2022-09-06 2662 goto unmap_and_free_vma;
e99668a56430a2 Liam R. Howlett 2022-09-06 2663
a57b70519d1f7c Liam Howlett 2022-10-18 2664 /*
a57b70519d1f7c Liam Howlett 2022-10-18 2665 * Expansion is handled above, merging is handled below.
a57b70519d1f7c Liam Howlett 2022-10-18 2666 * Drivers should not alter the address of the VMA.
e99668a56430a2 Liam R. Howlett 2022-09-06 2667 */
a57b70519d1f7c Liam Howlett 2022-10-18 2668 error = -EINVAL;
cc8d1b097de78b Liam R. Howlett 2023-01-20 2669 if (WARN_ON((addr != vma->vm_start)))
a57b70519d1f7c Liam Howlett 2022-10-18 2670 goto close_and_free_vma;
e99668a56430a2 Liam R. Howlett 2022-09-06 2671
cc8d1b097de78b Liam R. Howlett 2023-01-20 2672 vma_iter_set(&vmi, addr);
e99668a56430a2 Liam R. Howlett 2022-09-06 2673 /*
e99668a56430a2 Liam R. Howlett 2022-09-06 2674 * If vm_flags changed after call_mmap(), we should try merge
e99668a56430a2 Liam R. Howlett 2022-09-06 2675 * vma again as we may succeed this time.
e99668a56430a2 Liam R. Howlett 2022-09-06 2676 */
e99668a56430a2 Liam R. Howlett 2022-09-06 2677 if (unlikely(vm_flags != vma->vm_flags && prev)) {
9760ebffbf5507 Liam R. Howlett 2023-01-20 2678 merge = vma_merge(&vmi, mm, prev, vma->vm_start,
9760ebffbf5507 Liam R. Howlett 2023-01-20 2679 vma->vm_end, vma->vm_flags, NULL,
9760ebffbf5507 Liam R. Howlett 2023-01-20 2680 vma->vm_file, vma->vm_pgoff, NULL,
9760ebffbf5507 Liam R. Howlett 2023-01-20 2681 NULL_VM_UFFD_CTX, NULL);
e99668a56430a2 Liam R. Howlett 2022-09-06 2682 if (merge) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2683 /*
e99668a56430a2 Liam R. Howlett 2022-09-06 2684 * ->mmap() can change vma->vm_file and fput
e99668a56430a2 Liam R. Howlett 2022-09-06 2685 * the original file. So fput the vma->vm_file
e99668a56430a2 Liam R. Howlett 2022-09-06 2686 * here or we would add an extra fput for file
e99668a56430a2 Liam R. Howlett 2022-09-06 2687 * and cause general protection fault
e99668a56430a2 Liam R. Howlett 2022-09-06 2688 * ultimately.
e99668a56430a2 Liam R. Howlett 2022-09-06 2689 */
e99668a56430a2 Liam R. Howlett 2022-09-06 2690 fput(vma->vm_file);
e99668a56430a2 Liam R. Howlett 2022-09-06 2691 vm_area_free(vma);
e99668a56430a2 Liam R. Howlett 2022-09-06 2692 vma = merge;
e99668a56430a2 Liam R. Howlett 2022-09-06 2693 /* Update vm_flags to pick up the change. */
e99668a56430a2 Liam R. Howlett 2022-09-06 2694 vm_flags = vma->vm_flags;
e99668a56430a2 Liam R. Howlett 2022-09-06 2695 goto unmap_writable;
e99668a56430a2 Liam R. Howlett 2022-09-06 2696 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2697 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2698
263f767f45a14d Khalid Aziz 2023-04-26 @2699 if (vm_flags & VM_SHARED_PT)
263f767f45a14d Khalid Aziz 2023-04-26 2700 vm_flags_set(vma, VM_SHARED_PT);
e99668a56430a2 Liam R. Howlett 2022-09-06 2701 vm_flags = vma->vm_flags;
e99668a56430a2 Liam R. Howlett 2022-09-06 2702 } else if (vm_flags & VM_SHARED) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2703 error = shmem_zero_setup(vma);
e99668a56430a2 Liam R. Howlett 2022-09-06 2704 if (error)
e99668a56430a2 Liam R. Howlett 2022-09-06 2705 goto free_vma;
e99668a56430a2 Liam R. Howlett 2022-09-06 2706 } else {
e99668a56430a2 Liam R. Howlett 2022-09-06 2707 vma_set_anonymous(vma);
e99668a56430a2 Liam R. Howlett 2022-09-06 2708 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2709
b507808ebce235 Joey Gouly 2023-01-19 2710 if (map_deny_write_exec(vma, vma->vm_flags)) {
b507808ebce235 Joey Gouly 2023-01-19 2711 error = -EACCES;
b507808ebce235 Joey Gouly 2023-01-19 2712 if (file)
b507808ebce235 Joey Gouly 2023-01-19 2713 goto close_and_free_vma;
b507808ebce235 Joey Gouly 2023-01-19 2714 else if (vma->vm_file)
b507808ebce235 Joey Gouly 2023-01-19 2715 goto unmap_and_free_vma;
b507808ebce235 Joey Gouly 2023-01-19 2716 else
b507808ebce235 Joey Gouly 2023-01-19 2717 goto free_vma;
b507808ebce235 Joey Gouly 2023-01-19 2718 }
b507808ebce235 Joey Gouly 2023-01-19 2719
e99668a56430a2 Liam R. Howlett 2022-09-06 2720 /* Allow architectures to sanity-check the vm_flags */
e99668a56430a2 Liam R. Howlett 2022-09-06 2721 error = -EINVAL;
cc8d1b097de78b Liam R. Howlett 2023-01-20 2722 if (!arch_validate_flags(vma->vm_flags))
deb0f6562884b5 Carlos Llamas 2022-09-30 2723 goto close_and_free_vma;
e99668a56430a2 Liam R. Howlett 2022-09-06 2724
e99668a56430a2 Liam R. Howlett 2022-09-06 2725 error = -ENOMEM;
cc8d1b097de78b Liam R. Howlett 2023-01-20 2726 if (vma_iter_prealloc(&vmi))
5789151e48acc3 Mike Kravetz 2022-10-17 2727 goto close_and_free_vma;
e99668a56430a2 Liam R. Howlett 2022-09-06 2728
e99668a56430a2 Liam R. Howlett 2022-09-06 2729 if (vma->vm_file)
e99668a56430a2 Liam R. Howlett 2022-09-06 2730 i_mmap_lock_write(vma->vm_file->f_mapping);
e99668a56430a2 Liam R. Howlett 2022-09-06 2731
183654ce26a5d5 Liam R. Howlett 2023-01-20 2732 vma_iter_store(&vmi, vma);
e99668a56430a2 Liam R. Howlett 2022-09-06 2733 mm->map_count++;
e99668a56430a2 Liam R. Howlett 2022-09-06 2734 if (vma->vm_file) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2735 if (vma->vm_flags & VM_SHARED)
e99668a56430a2 Liam R. Howlett 2022-09-06 2736 mapping_allow_writable(vma->vm_file->f_mapping);
e99668a56430a2 Liam R. Howlett 2022-09-06 2737
e99668a56430a2 Liam R. Howlett 2022-09-06 2738 flush_dcache_mmap_lock(vma->vm_file->f_mapping);
e99668a56430a2 Liam R. Howlett 2022-09-06 2739 vma_interval_tree_insert(vma, &vma->vm_file->f_mapping->i_mmap);
e99668a56430a2 Liam R. Howlett 2022-09-06 2740 flush_dcache_mmap_unlock(vma->vm_file->f_mapping);
e99668a56430a2 Liam R. Howlett 2022-09-06 2741 i_mmap_unlock_write(vma->vm_file->f_mapping);
e99668a56430a2 Liam R. Howlett 2022-09-06 2742 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2743
e99668a56430a2 Liam R. Howlett 2022-09-06 2744 /*
e99668a56430a2 Liam R. Howlett 2022-09-06 2745 * vma_merge() calls khugepaged_enter_vma() either, the below
e99668a56430a2 Liam R. Howlett 2022-09-06 2746 * call covers the non-merge case.
e99668a56430a2 Liam R. Howlett 2022-09-06 2747 */
e99668a56430a2 Liam R. Howlett 2022-09-06 2748 khugepaged_enter_vma(vma, vma->vm_flags);
e99668a56430a2 Liam R. Howlett 2022-09-06 2749
e99668a56430a2 Liam R. Howlett 2022-09-06 2750 /* Once vma denies write, undo our temporary denial count */
e99668a56430a2 Liam R. Howlett 2022-09-06 2751 unmap_writable:
e99668a56430a2 Liam R. Howlett 2022-09-06 2752 if (file && vm_flags & VM_SHARED)
e99668a56430a2 Liam R. Howlett 2022-09-06 2753 mapping_unmap_writable(file->f_mapping);
e99668a56430a2 Liam R. Howlett 2022-09-06 2754 file = vma->vm_file;
e99668a56430a2 Liam R. Howlett 2022-09-06 2755 expanded:
e99668a56430a2 Liam R. Howlett 2022-09-06 2756 perf_event_mmap(vma);
e99668a56430a2 Liam R. Howlett 2022-09-06 2757
e99668a56430a2 Liam R. Howlett 2022-09-06 2758 vm_stat_account(mm, vm_flags, len >> PAGE_SHIFT);
e99668a56430a2 Liam R. Howlett 2022-09-06 2759 if (vm_flags & VM_LOCKED) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2760 if ((vm_flags & VM_SPECIAL) || vma_is_dax(vma) ||
e99668a56430a2 Liam R. Howlett 2022-09-06 2761 is_vm_hugetlb_page(vma) ||
e99668a56430a2 Liam R. Howlett 2022-09-06 2762 vma == get_gate_vma(current->mm))
e430a95a04efc5 Suren Baghdasaryan 2023-01-26 2763 vm_flags_clear(vma, VM_LOCKED_MASK);
e99668a56430a2 Liam R. Howlett 2022-09-06 2764 else
e99668a56430a2 Liam R. Howlett 2022-09-06 2765 mm->locked_vm += (len >> PAGE_SHIFT);
e99668a56430a2 Liam R. Howlett 2022-09-06 2766 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2767
e99668a56430a2 Liam R. Howlett 2022-09-06 2768 if (file)
e99668a56430a2 Liam R. Howlett 2022-09-06 2769 uprobe_mmap(vma);
e99668a56430a2 Liam R. Howlett 2022-09-06 2770
e99668a56430a2 Liam R. Howlett 2022-09-06 2771 /*
e99668a56430a2 Liam R. Howlett 2022-09-06 2772 * New (or expanded) vma always get soft dirty status.
e99668a56430a2 Liam R. Howlett 2022-09-06 2773 * Otherwise user-space soft-dirty page tracker won't
e99668a56430a2 Liam R. Howlett 2022-09-06 2774 * be able to distinguish situation when vma area unmapped,
e99668a56430a2 Liam R. Howlett 2022-09-06 2775 * then new mapped in-place (which must be aimed as
e99668a56430a2 Liam R. Howlett 2022-09-06 2776 * a completely new data area).
e99668a56430a2 Liam R. Howlett 2022-09-06 2777 */
1c71222e5f2393 Suren Baghdasaryan 2023-01-26 2778 vm_flags_set(vma, VM_SOFTDIRTY);
e99668a56430a2 Liam R. Howlett 2022-09-06 2779
e99668a56430a2 Liam R. Howlett 2022-09-06 2780 vma_set_page_prot(vma);
e99668a56430a2 Liam R. Howlett 2022-09-06 2781
e99668a56430a2 Liam R. Howlett 2022-09-06 2782 validate_mm(mm);
e99668a56430a2 Liam R. Howlett 2022-09-06 2783 return addr;
e99668a56430a2 Liam R. Howlett 2022-09-06 2784
deb0f6562884b5 Carlos Llamas 2022-09-30 2785 close_and_free_vma:
cc8d1b097de78b Liam R. Howlett 2023-01-20 2786 if (file && vma->vm_ops && vma->vm_ops->close)
deb0f6562884b5 Carlos Llamas 2022-09-30 2787 vma->vm_ops->close(vma);
cc8d1b097de78b Liam R. Howlett 2023-01-20 2788
cc8d1b097de78b Liam R. Howlett 2023-01-20 2789 if (file || vma->vm_file) {
e99668a56430a2 Liam R. Howlett 2022-09-06 2790 unmap_and_free_vma:
e99668a56430a2 Liam R. Howlett 2022-09-06 2791 fput(vma->vm_file);
e99668a56430a2 Liam R. Howlett 2022-09-06 2792 vma->vm_file = NULL;
e99668a56430a2 Liam R. Howlett 2022-09-06 2793
e99668a56430a2 Liam R. Howlett 2022-09-06 2794 /* Undo any partial mapping done by a device driver. */
cc8d1b097de78b Liam R. Howlett 2023-01-20 2795 unmap_region(mm, &mm->mm_mt, vma, prev, next, vma->vm_start,
68f48381d7fdd1 Suren Baghdasaryan 2023-01-26 2796 vma->vm_end, true);
cc8d1b097de78b Liam R. Howlett 2023-01-20 2797 }
cc674ab3c01880 Li Zetao 2022-10-28 2798 if (file && (vm_flags & VM_SHARED))
e99668a56430a2 Liam R. Howlett 2022-09-06 2799 mapping_unmap_writable(file->f_mapping);
e99668a56430a2 Liam R. Howlett 2022-09-06 2800 free_vma:
e99668a56430a2 Liam R. Howlett 2022-09-06 2801 vm_area_free(vma);
e99668a56430a2 Liam R. Howlett 2022-09-06 2802 unacct_error:
e99668a56430a2 Liam R. Howlett 2022-09-06 2803 if (charged)
e99668a56430a2 Liam R. Howlett 2022-09-06 2804 vm_unacct_memory(charged);
e99668a56430a2 Liam R. Howlett 2022-09-06 2805 validate_mm(mm);
e99668a56430a2 Liam R. Howlett 2022-09-06 2806 return error;
e99668a56430a2 Liam R. Howlett 2022-09-06 2807 }
e99668a56430a2 Liam R. Howlett 2022-09-06 2808
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
next reply other threads:[~2023-05-07 14:14 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-07 14:13 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2023-04-26 16:49 [PATCH RFC v2 0/4] Add support for sharing page tables across processes (Previously mshare) Khalid Aziz
2023-04-26 16:49 ` [PATCH RFC v2 3/4] mm/ptshare: Create new mm struct for page table sharing Khalid Aziz
2023-06-26 8:08 ` Karim Manaouil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202305072226.KGlQeenj-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.