Re: [PATCH v4 48/66] fork: Use VMA iterator

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

 



On 12/1/21 15:30, Liam Howlett wrote:
> From: "Liam R. Howlett" <Liam.Howlett@xxxxxxxxxx>
> 
> The VMA iterator is faster than the linked list and removing the linked
> list will shrink the vm_area_struct.
> 
> Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx>
> Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx>

Acked-by: Vlastimil Babka <vbabka@xxxxxxx>

> ---
>  kernel/fork.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/kernel/fork.c b/kernel/fork.c
> index 3493117c8d35..6de302e93519 100644
> --- a/kernel/fork.c
> +++ b/kernel/fork.c
> @@ -1228,13 +1228,16 @@ int replace_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file)
>  	/* Forbid mm->exe_file change if old file still mapped. */
>  	old_exe_file = get_mm_exe_file(mm);
>  	if (old_exe_file) {
> +		VMA_ITERATOR(vmi, mm, 0);
>  		mmap_read_lock(mm);
> -		for (vma = mm->mmap; vma && !ret; vma = vma->vm_next) {
> +		for_each_vma(vmi, vma) {
>  			if (!vma->vm_file)
>  				continue;
>  			if (path_equal(&vma->vm_file->f_path,
> -				       &old_exe_file->f_path))
> +				       &old_exe_file->f_path)) {
>  				ret = -EBUSY;
> +				break;
> +			}
>  		}
>  		mmap_read_unlock(mm);
>  		fput(old_exe_file);





[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