From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B79A4C3DA6E for ; Wed, 10 Jan 2024 08:46:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4AAD06B007D; Wed, 10 Jan 2024 03:46:41 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 45A256B007E; Wed, 10 Jan 2024 03:46:41 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 347896B0080; Wed, 10 Jan 2024 03:46:41 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 256186B007D for ; Wed, 10 Jan 2024 03:46:41 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id F0B5C1A03D5 for ; Wed, 10 Jan 2024 08:46:40 +0000 (UTC) X-FDA: 81662770560.27.DF317E3 Received: from out-173.mta0.migadu.com (out-173.mta0.migadu.com [91.218.175.173]) by imf28.hostedemail.com (Postfix) with ESMTP id 43B18C0020 for ; Wed, 10 Jan 2024 08:46:38 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=QATBXoTT; spf=pass (imf28.hostedemail.com: domain of yajun.deng@linux.dev designates 91.218.175.173 as permitted sender) smtp.mailfrom=yajun.deng@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704876398; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=HORRhNn8cQhlCzoO7/tuR5hnshhn8S+KOZbQ0BIusdU=; b=I3oYaLVQVTHGJ1R3gVR/1x28zikLozICHlOOKJIyf6JGmMXqtReCtw7VMITX/lykQ3jJPq BF2lO2QimfFTl9FAGKKO4HsJ3BUHxipUnz1l3bq1pBK/r4tGd9pe4qrJSJcwfQL8ydCF4y NfV2Mor7NTyTl38t3AR8h85uTJ4thB0= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=QATBXoTT; spf=pass (imf28.hostedemail.com: domain of yajun.deng@linux.dev designates 91.218.175.173 as permitted sender) smtp.mailfrom=yajun.deng@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704876398; a=rsa-sha256; cv=none; b=sN9vIQagorQNoppJCaURirFsR4azkSu9s5Ka2dtxfIuVz1yMvpTPWZGmJA7WnGbHZQ7x4P gBhIeH5Sqfq9m8nI02FAxJ2/6mo+wJifxriUND9lG6SbYF6uvfUHOWIlnXIRtQjisor11l 9fDE8hClfAE4M2C/KU222rq5kre5Izg= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1704876396; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=HORRhNn8cQhlCzoO7/tuR5hnshhn8S+KOZbQ0BIusdU=; b=QATBXoTTJxGOORB8isMLBsltDJ0gIKHF/Qn2rl6uVul7pIKSixCFQYSo0rcgNV0arMm2Vv p4nfI6Y7vOFIZJGhBsDy6t3uFuZ+bWNOpM+3+LaP1C4Fm+5MvlL+lSeHvvTAmrXRp1JwO9 E8Fw4yUlgMQZfmTD38KQfXtwXh6URNc= From: Yajun Deng To: akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Yajun Deng Subject: [PATCH] mm/mmap: simplify vma link and unlink Date: Wed, 10 Jan 2024 16:46:22 +0800 Message-Id: <20240110084622.2425927-1-yajun.deng@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: 43B18C0020 X-Rspam-User: X-Stat-Signature: wt7wd5tccdcgd3ordwoedonjpbrzpc39 X-Rspamd-Server: rspam01 X-HE-Tag: 1704876398-148544 X-HE-Meta: U2FsdGVkX19r+Qrvg8IxH7oK190fiq2P5TRayZHSuWlhjDsGi5SHK1odiESuVWJZ58YsxpyZEY0MokdCrd6WYFr5VAUazKJ52sG8oHZA67vy/2mz+VvoSX/avG05MLNnhtmHhmOqIQS63vAyBZxAmoveCOSVmRmfShuZYc9D02DWw5IpvfmVMtpKqz3Zpe3Zv9NyjASSBpzdy9AOXfR6bSh4Kcf+E/81yB6kpN3qdpfrDE4vum2srdj704H6iscnIUeEWBNHjX9xWdGq0pWzsZBWtvGoX+slA65aU+0C/byTNTCCJuDeTPLTI22SfIc/IQHQgMKLAvJqNfaaprcxi+57MLrdMSPH4sepTPvW4A1li0eQ4WvGxdHf8VqmjgMVBz/7ywrpye0yzjsayydxoie5t22490cg0FOpZ9R7dITyo/onKCjZKzTAyczFnU2c8YGyIAXo5DM4oBXXhVsWDluKoCnu3Ifo/Qf7/w2lXCHUWKDJradW3jAlpS8Lg6Fm9dX2/AZgq4MIy5CjTTgQDVhI9M2RBeNR/Bbxb8mkiFSV+nA6/LIxFcDKUwgBxW+ehDuCaPGypobPCcmmV1XYvQLxkMt7U1z2sLvmrEDDB93VTz1wwt/q7Gvo6bwgSW3whZkyAwFLFEwptQ06GRS9kebRhilGL/Jqh3SXKvRZnZhhWCa2Bf0JPdHQqATg3d3/8I5v1Crl0hxHxvc+uMKjlzrta1IwGiDD40SujRIOBckFuuW1uykU+omnzQlkCVEZZwaB1vJ2LLRvpVCrwSjW0qZIjV6mZShEbaNOyMx3gWj8ID1sHexR8SYcwiEaEPP1ry+vlpEeXQ5dqv5AJwfDn33yjs9UKtVg6eh4n710v7Nps2BL0WAfNI4NqiR/Q6vrlrfnzvvKiEPnxWUj83fHDpwGKFSoeq5ubq83m0fp/b6rAIlDLgGiXU7zVS6sL0vBaIjQ3d2x8+cWlyTOzHP Nv1vto+2 am9CiMpzyR1vja5NwR1K/Lz6GKtG1PdqjH6ZAOSmAZjKbAZlcqATvEe7k+F1cgJy//6BO X-Bogosity: Ham, tests=bogofilter, spamicity=0.000709, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: The file parameter in the __remove_shared_vm_struct is no longer used, remove it. These functions vma_link() and mmap_region() have some of the same code, introduce vma_link_file() helper function to simplify the code. Signed-off-by: Yajun Deng --- mm/mmap.c | 44 +++++++++++++++++++------------------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index b78e83d351d2..06f1f3e88598 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -105,7 +105,7 @@ void vma_set_page_prot(struct vm_area_struct *vma) * Requires inode->i_mapping->i_mmap_rwsem */ static void __remove_shared_vm_struct(struct vm_area_struct *vma, - struct file *file, struct address_space *mapping) + struct address_space *mapping) { if (vma_is_shared_maywrite(vma)) mapping_unmap_writable(mapping); @@ -126,7 +126,7 @@ void unlink_file_vma(struct vm_area_struct *vma) if (file) { struct address_space *mapping = file->f_mapping; i_mmap_lock_write(mapping); - __remove_shared_vm_struct(vma, file, mapping); + __remove_shared_vm_struct(vma, mapping); i_mmap_unlock_write(mapping); } } @@ -392,26 +392,30 @@ static void __vma_link_file(struct vm_area_struct *vma, flush_dcache_mmap_unlock(mapping); } +static void vma_link_file(struct vm_area_struct *vma) +{ + struct file *file = vma->vm_file; + struct address_space *mapping; + + if (file) { + mapping = file->f_mapping; + i_mmap_lock_write(mapping); + __vma_link_file(vma, mapping); + i_mmap_unlock_write(mapping); + } +} + static int vma_link(struct mm_struct *mm, struct vm_area_struct *vma) { VMA_ITERATOR(vmi, mm, 0); - struct address_space *mapping = NULL; vma_iter_config(&vmi, vma->vm_start, vma->vm_end); if (vma_iter_prealloc(&vmi, vma)) return -ENOMEM; vma_start_write(vma); - vma_iter_store(&vmi, vma); - - if (vma->vm_file) { - mapping = vma->vm_file->f_mapping; - i_mmap_lock_write(mapping); - __vma_link_file(vma, mapping); - i_mmap_unlock_write(mapping); - } - + vma_link_file(vma); mm->map_count++; validate_mm(mm); return 0; @@ -519,10 +523,9 @@ static inline void vma_complete(struct vma_prepare *vp, } if (vp->remove && vp->file) { - __remove_shared_vm_struct(vp->remove, vp->file, vp->mapping); + __remove_shared_vm_struct(vp->remove, vp->mapping); if (vp->remove2) - __remove_shared_vm_struct(vp->remove2, vp->file, - vp->mapping); + __remove_shared_vm_struct(vp->remove2, vp->mapping); } else if (vp->insert) { /* * split_vma has split insert from vma, and needs @@ -2889,16 +2892,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, vma_start_write(vma); vma_iter_store(&vmi, vma); mm->map_count++; - if (vma->vm_file) { - i_mmap_lock_write(vma->vm_file->f_mapping); - if (vma_is_shared_maywrite(vma)) - mapping_allow_writable(vma->vm_file->f_mapping); - - flush_dcache_mmap_lock(vma->vm_file->f_mapping); - vma_interval_tree_insert(vma, &vma->vm_file->f_mapping->i_mmap); - flush_dcache_mmap_unlock(vma->vm_file->f_mapping); - i_mmap_unlock_write(vma->vm_file->f_mapping); - } + vma_link_file(vma); /* * vma_merge() calls khugepaged_enter_vma() either, the below -- 2.25.1