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 5ECE8EEB562 for ; Fri, 8 Sep 2023 17:58:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AC3FB6B00F0; Fri, 8 Sep 2023 13:58:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A73876B00F1; Fri, 8 Sep 2023 13:58:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 962D26B00F2; Fri, 8 Sep 2023 13:58:03 -0400 (EDT) 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 87F2B6B00F0 for ; Fri, 8 Sep 2023 13:58:03 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 5F18CB3CFD for ; Fri, 8 Sep 2023 17:58:03 +0000 (UTC) X-FDA: 81214188846.22.5713725 Received: from mail-lf1-f73.google.com (mail-lf1-f73.google.com [209.85.167.73]) by imf04.hostedemail.com (Postfix) with ESMTP id 88A8040025 for ; Fri, 8 Sep 2023 17:58:01 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=kG92ozTq; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf04.hostedemail.com: domain of 3p2D7ZAoKCIQuktixqv0sqowwotm.kwutqv25-uus3iks.wzo@flex--mclapinski.bounces.google.com designates 209.85.167.73 as permitted sender) smtp.mailfrom=3p2D7ZAoKCIQuktixqv0sqowwotm.kwutqv25-uus3iks.wzo@flex--mclapinski.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694195881; a=rsa-sha256; cv=none; b=y4NSsUWZqNdoyOpdjjqcraQJVIhgAJvUPBenAbLRe26ikIGuyGYvQXUn8CT8LXh4KJGNWE Nhom8iJ2i9BmHLVzpvRe+HiGlIDxH0Ajy0lsMCHtD4DzFgwNr+3NUf2HLvZ3grPJQIZAeU tQq8Z44zTOHQn9F+nXanh/Y8x+JFcNY= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=kG92ozTq; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf04.hostedemail.com: domain of 3p2D7ZAoKCIQuktixqv0sqowwotm.kwutqv25-uus3iks.wzo@flex--mclapinski.bounces.google.com designates 209.85.167.73 as permitted sender) smtp.mailfrom=3p2D7ZAoKCIQuktixqv0sqowwotm.kwutqv25-uus3iks.wzo@flex--mclapinski.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694195881; 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-type:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=ErZ/9dohV3kfQDHS+ABptN0u7+XrtGJQodsGEJaInJ0=; b=g2O7yTX11FgRcdMJskTyZe/bNEvLnqHAvpUPaW7SJsgU231tJmeEOS2MaPgS5sBTGTFKEe LouL/eTmJAWoENUkX1xk3AqfASubfCXWMHQnwipX2LCDN8rLqah9jsOdym/ZgNcOUl9r7/ Gb/Fo7cm7kpzUiPd18moLl7rO5D/UKk= Received: by mail-lf1-f73.google.com with SMTP id 2adb3069b0e04-501ce5902faso1710032e87.0 for ; Fri, 08 Sep 2023 10:58:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1694195880; x=1694800680; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=ErZ/9dohV3kfQDHS+ABptN0u7+XrtGJQodsGEJaInJ0=; b=kG92ozTqAh3T7cBvIFSz7ZwSfT6Dvxz1rmh57I7YTD0Aob8nQUtzNpUcF86wrEft4q 6t3LMwqhfcOBchP3EPYw/GvM/v0bPKUmngOim7Hs/tCKLfAY8rG3gzH7XQ0bGDRdb6Fl y4nZ1jm8baCVBDSlyAySf+4KCuBBtvj1onRfFHKOyrYqxRqcOv1ZsVh3Lhru+4ZfQeE1 MamEaRBShCyWbG4Jg+PkPIo4/C9JYqVEm9h1kcjJWRNOrBujJIXiPeZLErfpUhipvvB0 pmWZvkypLkPUA8oM0KCEP08v9uFXrE0smC9NV6++VJ4qQeSipzU3xN3szJAhE3VmgY/m 3qeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694195880; x=1694800680; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ErZ/9dohV3kfQDHS+ABptN0u7+XrtGJQodsGEJaInJ0=; b=ndc8/smF9sQCvHgfw0NU5+nY+s50jctMzfvBtj1CliyddSrBuEfWlPNbJULgaHblyu b0R/7ZOi63VFUIYE2+pogQ2GrbqslnunHRMY+J2ZorpoH/UBcXhVegpNfGYzI98oKTc+ ZgYKgAM0CNCQn9O6H2/lw7Xre4jjZbN14v3Yj8ww/yVn8UurE/E9PJHkemK/yXJ1WNQo GocsYX0qTIPHZqverXqCwBTjGnWtEw0ure8bJdxTtpVhLMBDhXwcWuNpQe4tsRsuuKAP sTp+/6IPeVBaSeBs245ZSSOp7vn417KdQQ6k7jTDppe1hST7S9T0Wi4Ua/Irff8dKil/ IPuw== X-Gm-Message-State: AOJu0YwIpg50cqvtm4leikgJyijKrJpFhqs68FXiN7yoAUiBpXrjAKBP Qyy8QUi7wgKmAZk5M45UZXjqbweZQs1YZRc3 X-Google-Smtp-Source: AGHT+IHIoFphFVujlKv0bW17vR3YnKxwcj2a41Lvx91RQMP11PbBJoLPxgodACZwwAjv+ntEO+ya/BHoHYpyXdwz X-Received: from mclapinski.waw.corp.google.com ([2a00:79e0:9b:0:aa82:a90b:b76f:32b0]) (user=mclapinski job=sendgmr) by 2002:ac2:5321:0:b0:502:9360:ca50 with SMTP id f1-20020ac25321000000b005029360ca50mr51728lfh.1.1694195879603; Fri, 08 Sep 2023 10:57:59 -0700 (PDT) Date: Fri, 8 Sep 2023 19:57:36 +0200 Mime-Version: 1.0 X-Mailer: git-send-email 2.42.0.283.g2d96d420d3-goog Message-ID: <20230908175738.41895-1-mclapinski@google.com> Subject: [PATCH v2 0/2] mm/memfd: add ioctl(MEMFD_CHECK_IF_ORIGINAL) From: Michal Clapinski To: Jonathan Corbet , Mike Kravetz , Muchun Song , Andrew Morton , Hugh Dickins , Shuah Khan , Greg Kroah-Hartman , Arnd Bergmann , Yi Liu , Dominik Brodowski , Hans Verkuil , Steve French , Simon Ser , Jason Gunthorpe , Marc Dionne , Jiri Slaby , David Howells , Luca Vizzarro , Jeff Xu , Aleksa Sarai , Kees Cook , Daniel Verkamp , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org Cc: Michal Clapinski Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 88A8040025 X-Stat-Signature: nsqjpdrad7pe5qs6zpnwkyoxyuymga6u X-HE-Tag: 1694195881-393894 X-HE-Meta: U2FsdGVkX1+z+WIWeX1VyWaP0pv6vqwfFQZ2Sl03x9cuVOijcXOZD+dwq2pNOErEtxHv1QQjnXma2FWTssx+pb6yP9TTFq0LTVQBR1SSW8/SyvSH9K+mAzB0fkxHpIKe4RzmGpdItrzsl++WGS0qpGiYJuLbp3P2chv71d7g1AKUR3oC9Nh+rmjZfj+yumCNMMnLWFFVzX5VbbEs0OzlxAsSarw5sOgO3/ffZapQ8/b8FU4IsPNEVjoKVoQS2ACk7NVNXMeghfoNrx3sRXwDz7sWJNHukdk8p7BeNgxEJsY1zqpuiBw9/YYnqR3sQg+F/p0WBqaEcLUpAK/PdRhUYUJNPkXMPtRshYXc/n7mvh7LjBcayCl+oMvcDxz38GfqRk/Z7W0wq3zA+x9BOCL/BvedcjFOY0Faj7DBXRLJIUdpLbnWjIJ5UiuELokbucuDzwUNFf/FLhzc2yVJXPmpakDfLQUHD6ijG8vl8MJa8GJbKwIJ/sosWQ7zmX9EcIriWFX+6wUIMtd6sAXfNZVFDycQTgm0pFknNNR67cil/3nYCecwgt0gQeB+IioVv4D/3cPZ4okDWJedYelipGyi8JfLu5ZMQJLD+x8SanqIa8PseGQpvzjaFf0XvFCd3OviRM1yZPpib0fHcTqgSQsfY3IpfzLSv24NkiQXFhOKyXWCgVHJD2vewDhJsxH5tZNGm76KKJYSMk7yu/UgjZIQVAksni5vIA07ME2Jb3TZR8FcyNhu6JY6ZpEMYhd7MJc9UC/mbvogJ91wD2ynpbjAZUSSKY8TPjp+t6w67Dc7TnSzg8UEM06Vsp2z5AlDHXCrhGc3pExgqBj+6CfsTqBUNUS6tKzNz88ZaS17959Mg74dc38HLSrdFHgNYEue8z21nziD4vhD9mEimuOtFuKCCG0Bmc/XpK0uXYvc71bh14zQKiCj6MuWOOyHEXpco/5zAcRjeKi15D/AT7Dd11h dg7Djgz3 cWpu3OgO8S+GxGSPIEc+MgwflIHpmWnXhkE+LwUw2Yrz2mKC2KmRcPquHP7FdkoxT5eUk9S8UFbqaYh1rMmenDeMMuub+UUjhPeb0yaUXH85QgDFQqvHTOq00QyZwMXjreNJvr2nGl4o6S8w41H4bLQhJ6q2+g21+fXhsTvU6DGAPgXH8wDThSol5aMj9Lu467Hs32PmR+kMM6CpnL6wMb07HmcC3hPJ3awPyAEJx+uGE/9GOSRkxH+PjBot+RZFhnGO4TFbALBT1jarV1dfQFbNqW/axltHZzc6cD1VTX7DXgKHZDcreZ7vn5nJerPxxrbUnnCoih0o7wqnDw+c71zM7U0A9+qF44cFFWvPZhdHWEtVCeRYrgn5tJlfLtFjFyVYNyDnAd0keexbXzq9zQ1ca2eRZJOPfHQcQy9as70Bmm9dfvS1h7ZSjjU55+T0zIpj2YWzKg4Rz5TDiM7NYp8Acj8jBDLUy42uVJq4/ou6SgDDrfPlbzw/A4Y41eyfEu9TRDzb17L2qBcPaycVemxtUMe+04cOPTdbVXkYG2Xr2ZhpmEMr7hKaS8LIqHU6RofR26naoDwhAw6CsoWWAt5OWW94HQJeLgstOTJZ2wws3jMIwnXj3fgId273gK0JeemhT0xnJgI+n4O82HYuNdEde3A== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: This change introduces a way to check if an fd points to a memfd's original open fd (the one created by memfd_create). We encountered an issue with migrating memfds in CRIU (checkpoint restore in userspace - it migrates running processes between machines). Imagine a scenario: 1. Create a memfd. By default it's open with O_RDWR and yet one can exec() to it (unlike with regular files, where one would get ETXTBSY). 2. Reopen that memfd with O_RDWR via /proc/self/fd/. Now those 2 fds are indistinguishable from userspace. You can't exec() to either of them (since the reopen incremented inode->i_writecount) and their /proc/self/fdinfo/ are exactly the same. Unfortunately they are not the same. If you close the second one, the first one becomes exec()able again. If you close the first one, the other doesn't become exec()able. Therefore during migration it does matter which is recreated first and which is reopened but there is no way for CRIU to tell which was first. --- Changes since v1 at [1]: - Rewrote it from fcntl to ioctl. This was requested by filesystems maintainer. Links: [1] https://lore.kernel.org/all/20230831203647.558079-1-mclapinski@google.com/ Michal Clapinski (2): mm/memfd: add ioctl(MEMFD_CHECK_IF_ORIGINAL) selftests: test ioctl(MEMFD_CHECK_IF_ORIGINAL) .../userspace-api/ioctl/ioctl-number.rst | 1 + fs/hugetlbfs/inode.c | 9 ++++++ include/linux/memfd.h | 12 +++++++ mm/memfd.c | 9 ++++++ mm/shmem.c | 9 ++++++ tools/testing/selftests/memfd/memfd_test.c | 32 +++++++++++++++++++ 6 files changed, 72 insertions(+) -- 2.42.0.283.g2d96d420d3-goog