From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C22EEAE7 for ; Mon, 20 Jan 2025 01:26:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737336409; cv=none; b=XLN4gq/AL2oIo4SdF3vkM/hHLHcZu3HC5Iq5m0NjNMeQgidm70+b0edm+zTckYDFp5KB4T8ozKfmURUjI+WwhBuNhNIsFHQFQ8Dk/IgkBb3Nu3C4cv4z3DNeETUzjWS3XOo38vY/lQcrugd83BwJi7W4G2/QDtxX9RSKzGI6az8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737336409; c=relaxed/simple; bh=E1irRVMGPxQdfy9WADncHgUXETQ+lur9IqCs2HnBCQA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=KIHc4Ty1hsJUVlSTGA9OGP8BeWzwI+c4h4SwWRqrschgtTALFR56g/38xUCH8jIdQLpmsXZGU30LaKKnBvDQm1MAc2cX7UlLWCSzrtgHClLt2JzNA3TH5XPDJtp3x+OXFu69vNFIh/iF8udEmRJI+oAYNaLc3V0ODUh1aCt0APM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HCx4ietm; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HCx4ietm" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-2166f1e589cso96696245ad.3 for ; Sun, 19 Jan 2025 17:26:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737336406; x=1737941206; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=Q81NkvOoQ8P35FaklgAfy4wDKK4vLKNRPO/xOzb8nLE=; b=HCx4ietmoLx1vodxAkHpGNBBjefNdlho8QQw9t4ORq5us+nMMMiC05zZfNOrRYwSbQ OAyVt9z2XowZlQqtHvidKD16E3qH633YH39dvv2jKDgc4tBLuQ7WCn2oHjoYbm4T11N0 3rMBeD1h/ZM7XFRxtwQ4gZNBXlgukJ2fZafbOac4qUy2yv6t3gRXMuwGkeXTTztvt2vD NTgkEZRk/6TT4LFW8WSwYsYxsB3fRWbQ+D5nFScnSOS+W7A2CvRGhJX3AXfWHRlgRYgO DRHZ/hF5fyyQIKAKn8o3bmPtSm1JzZRx8OjMxMJVhroMFm5sVvUqHRM6dcxTpDtHmhJd JWww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737336406; x=1737941206; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Q81NkvOoQ8P35FaklgAfy4wDKK4vLKNRPO/xOzb8nLE=; b=JkILw0Z5ZX8TToYFSA0yMaKLxy9qjcQ4gKlhxo+69g2xAUwNrzVnGviKaGIkYixyv9 72gX2YtMHSMagaLptRPw6Tqy8ZD2FdlemeXoI9KNBKhFhibskP/YUbK3PbDPE1eNP6ge etqpn8l3eJIE6laevEdsyT1xbOvNYHXTnIXCtOHntS8iQN1xLlVAEBUZcgI+fODYxlKb HcAPlcWJZMm+gA8hLkGh55I3pWnBVmwvhR4TDXJMMAqbtLI6vPIDYxTQHXJlfOmmB4Nn +zznYAqo0aqZ8YkhXAgq4ssnJzRLDMr29kg04ov9A+MA2YMECrcbguMrpum+2BMgUdH9 +46w== X-Forwarded-Encrypted: i=1; AJvYcCVeM/HNtVILLN6MOmp14TbpGEYnFaZ/YFCsD6lewG9pK2Xt8JXbrgcgaorgxcuVA/VCJjEM0S5tAU88/rM=@vger.kernel.org X-Gm-Message-State: AOJu0YwVHk0viRjJn5se4RIzDnZ+inAACoP3M8RoLvlFUrGzjlXAe+h7 NzawF3+s3ntO2accfNgbq8b27JUFLAGPbXD2rKG+K+bsMiUoHSP8 X-Gm-Gg: ASbGncts/15ptKuJxNZ6z5usMRPO+F6eMSzo738/5pKLWMEN3etWNJrEW1HemNZgth2 XdflVcYoGIQkNazXA4rOwVUhWKjIsMTE7ouy2nb66kR5wIlcxRMilmLCUl5gb8VU8RNJDjCKJmM /DcGlSvRvbOS21pKrTwHDPUZU6idTiDmfVeiLZDXaA/T2P5uAEXiIvXIo7S4E0ISL8TCkrbCovG LjpUA9d710Hy0+j3N3koOLqd9xYCU2yFUasTMz8NmAlO32LWoOwATDpsffu+4GPvIkYvyw6I//p fg== X-Google-Smtp-Source: AGHT+IHiM+w1dyo9TAeX9QWuQMQKi6gfS+OsZwZ31Pcs2BMeLCcjRbLrryXgYZFUrlSGdCcVnMW37A== X-Received: by 2002:a05:6a00:3c8a:b0:727:3c37:d5fb with SMTP id d2e1a72fcca58-72dafb6fef4mr16227390b3a.16.1737336406234; Sun, 19 Jan 2025 17:26:46 -0800 (PST) Received: from EBJ9932692.tcent.cn ([43.134.20.116]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-72daba44453sm5742266b3a.127.2025.01.19.17.26.37 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 19 Jan 2025 17:26:45 -0800 (PST) From: Lance Yang To: akpm@linux-foundation.org Cc: 21cnbao@gmail.com, ryan.roberts@arm.com, dev.jain@arm.com, david@redhat.com, shy828301@gmail.com, ziy@nvidia.com, libang.li@antgroup.com, baolin.wang@linux.alibaba.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Liam.Howlett@oracle.com, lorenzo.stoakes@oracle.com, vbabka@suse.cz, jannh@google.com, Jason@zx2c4.com, Lance Yang , Mingzhe Yang Subject: [PATCH 1/1] mm/mmap: allow MAP_DROPPABLE | MAP_PRIVATE in mmap() Date: Mon, 20 Jan 2025 09:26:07 +0800 Message-ID: <20250120012607.4808-1-ioworker0@gmail.com> X-Mailer: git-send-email 2.45.2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Currently, mmap() fails with `-EINVAL` when both MAP_DROPPABLE and MAP_PRIVATE are specified. This behavior might be inconsistent, as the implementation of MAP_DROPPABLE under the hood already includes the semantics of MAP_PRIVATE. So, IMO, whether MAP_PRIVATE is explicitly specified or not, it should work as expected. For example, when mmap() is called with `MAP_DROPPABLE | MAP_ANONYMOUS`, it creates a private anonymous mapping. Users can verify this behavior via `/proc/self/smaps`, where the resulting VMA is marked with the `dp` (MAP_DROPPABLE) flag, and the `Private_*` fields confirm private memory semantics. The output for a 2MiB mapping with these flags might look like: ``` f433ace00000-f433ad000000 rw-p 00000000 00:00 0 Size: 2048 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 2048 kB Pss: 2048 kB Pss_Dirty: 2048 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 2048 kB Referenced: 2048 kB Anonymous: 2048 kB ... VmFlags: rd wr mr mw me nr wf dd dp ``` This patch changes mmap() to allow the combination of `MAP_DROPPABLE | MAP_PRIVATE`. For mmap(), at least one of MAP_PRIVATE or MAP_SHARED could be explicitly specified, regardless of the combination with other `MAP_*` flags. Fixes: 9651fcedf7b9 ("mm: add MAP_DROPPABLE for designating always lazily freeable mappings") Signed-off-by: Mingzhe Yang Signed-off-by: Lance Yang --- mm/mmap.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/mmap.c b/mm/mmap.c index cda01071c7b1..840889b5bfb2 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -504,6 +504,7 @@ unsigned long do_mmap(struct file *file, unsigned long addr, vm_flags |= VM_SHARED | VM_MAYSHARE; break; case MAP_DROPPABLE: + case MAP_DROPPABLE | MAP_PRIVATE: if (VM_DROPPABLE == VM_NONE) return -ENOTSUPP; /* -- 2.45.2