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 3BFD0E8FDB4 for ; Tue, 3 Oct 2023 19:46:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B4C3A8D0089; Tue, 3 Oct 2023 15:46:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AD3B78D0003; Tue, 3 Oct 2023 15:46:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8B0C88D0089; Tue, 3 Oct 2023 15:46:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 704D28D0003 for ; Tue, 3 Oct 2023 15:46:03 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 422C41CA3EA for ; Tue, 3 Oct 2023 19:46:03 +0000 (UTC) X-FDA: 81305181006.16.E27F578 Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.201]) by imf01.hostedemail.com (Postfix) with ESMTP id 8244E40014 for ; Tue, 3 Oct 2023 19:46:01 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=lRCJuJ6i; spf=pass (imf01.hostedemail.com: domain of 3eG8cZQ0KCPcZwdkqZrltrrdmfnnfkd.bnlkhmtw-lljuZbj.nqf@flex--axelrasmussen.bounces.google.com designates 209.85.128.201 as permitted sender) smtp.mailfrom=3eG8cZQ0KCPcZwdkqZrltrrdmfnnfkd.bnlkhmtw-lljuZbj.nqf@flex--axelrasmussen.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696362361; a=rsa-sha256; cv=none; b=BRFHlLmlywa53hIxsqn4u0TMj6Eu7ZyjX4ZKecBbb1Kf+JMs210IMEfRfHFrOMvuKi++ZB qp1fAwToeOwyzTIN3BH9hLw9jKfZ5oYJHRUk28Gii4HFJoBBapx7rqpJeS+UtgQeBDeoz+ dZgRPSd0Q2jP9lGwHL8eGZyyt00p2s4= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=lRCJuJ6i; spf=pass (imf01.hostedemail.com: domain of 3eG8cZQ0KCPcZwdkqZrltrrdmfnnfkd.bnlkhmtw-lljuZbj.nqf@flex--axelrasmussen.bounces.google.com designates 209.85.128.201 as permitted sender) smtp.mailfrom=3eG8cZQ0KCPcZwdkqZrltrrdmfnnfkd.bnlkhmtw-lljuZbj.nqf@flex--axelrasmussen.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696362361; 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:in-reply-to:references:references:dkim-signature; bh=nSwsPxGjU1Rb9Mh5qgmhu8siiN6wKhSBap+YrmkGvmo=; b=RZg8SqsjXt9SazsL0JfazCbnKLx/AoB6R0JlCK6i6Yse6HIcI3mwVjiJ9E/c/6HSnvZxOL nK7sUXTPsje3f+dfhlDGFeyJYnN0KCpd7P0PaYVtzfwv4ZEcGm8GEopsEIp6dxD2hxQw9U AN7G1/QjczuU7YqhAeUKPKmqFEtD3XI= Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-59f6902dc8bso19974837b3.0 for ; Tue, 03 Oct 2023 12:46:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1696362360; x=1696967160; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=nSwsPxGjU1Rb9Mh5qgmhu8siiN6wKhSBap+YrmkGvmo=; b=lRCJuJ6i93cWrkVuBgfEiPHvalwL5Tm4tFbLJt2I3AUUrk9w8oZnSb5bCE16wC3HCJ dYo/bV1i/eycMM6VlzzH/ROR8qtsGkyQfwVUioKdUKEzNXp2cuGs4GHsyB4YmTScwL3T SMmsvZbWdZLJl3JtFWQ6vrfKPz2JgrSut9V2pMEkotIisKOm+Yy3TMItTa4T2GFrMNXi WaKNEC7BOHHE9RoLt+s1pwVOKe41VKjlogKSsso2IELbZ9gtoQezsIog8LK2NetSOfB2 pfOvwgIn8I6gXW0kk4QU/cIayHoan+RTR9ndDaxR3V0BN8xbeHM+fHuGVUBcr+2oo2T3 IVEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696362360; x=1696967160; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=nSwsPxGjU1Rb9Mh5qgmhu8siiN6wKhSBap+YrmkGvmo=; b=cMyFi0KZg154FCTFkbddLDzuYlkFpA6zoDd9GzrrgrGvHB9CnXbXkFiPFNvq44pekx KqoX+GIybc5YSlPeYWPxaz9+SGhpMBpyGXdYAkttXENa5VVT//LAB2wUfeprWya13ZlL IMc2lCd5k32uPBn9GISsnko35mvs2fFt9mNblUZmRLStQOhzRnBh4+Z5gZ2+FGZrSwmh uapqzPpwFBVjDVUtNewUQXPxjPhI9plsPw9R6lNUzj5EKdH9kgbqDbCGYD2IBah3IW1/ ER+oTgMNkypmIBVONXP/MBA/FnElKY0H3VeGIf+Ex/4qIv0ntuTwil91L2eNp+wejVv7 czuQ== X-Gm-Message-State: AOJu0YxM2pWV7fntjifAKfCt0CVWCyxr04v3WCyjuQ7AGDoI8zsJgr+k gwvBxh4ETZmPfXa6a0JKzljs9ldqX5fPUUZ0qp5i X-Google-Smtp-Source: AGHT+IG3ycgZ1ANRvhM0b8aR3O2JnbWKMJw5/2E7Y5Hu+lkyPvKs0PdaMQEwpxKlWPfeoGQhQE8730YP86ImtOIxI0CZ X-Received: from axel.svl.corp.google.com ([2620:15c:2a3:200:6577:b8c1:dd2d:1c93]) (user=axelrasmussen job=sendgmr) by 2002:a81:ae53:0:b0:59b:f138:c843 with SMTP id g19-20020a81ae53000000b0059bf138c843mr9811ywk.3.1696362360670; Tue, 03 Oct 2023 12:46:00 -0700 (PDT) Date: Tue, 3 Oct 2023 12:45:45 -0700 In-Reply-To: <20231003194547.2237424-1-axelrasmussen@google.com> Mime-Version: 1.0 References: <20231003194547.2237424-1-axelrasmussen@google.com> X-Mailer: git-send-email 2.42.0.609.gbb76f46606-goog Message-ID: <20231003194547.2237424-4-axelrasmussen@google.com> Subject: [PATCH v2 3/5] ioctl_userfaultfd.2: clarify the state of the uffdio_api structure on error From: Axel Rasmussen To: Alejandro Colomar , Peter Xu Cc: linux-man@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Axel Rasmussen Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 8244E40014 X-Stat-Signature: xtop378i936ugbo5fw6fn5p1r6sazidi X-Rspam-User: X-HE-Tag: 1696362361-969752 X-HE-Meta: U2FsdGVkX1+1bRBSBSoz71E+LRoJuR4Bpy4eUPofz8zdhV0Z1Mnb9ZkYx/4M5Uvu4tzKCd7QsvFFva+c0ItcO7JLUWr7G/KpxeX4lOZoWc5zZxURujqriOV6Awr2lzUFR1N8l8VTvDbO6vMure7vbxvyyPtye3Y1Q0TW0Dgc0+4lXriQ8/7Aeg9DF7RAc8PQZHf0SCw5MSILJRltf5o8xF9yb1s5s60Yc+cJoepUB4xqfFZykUzn/5nfzyW3S1/SMP+kGPymW6cNe9pUc/CksnTknooW+Q0TKCzvL9mBC+KAiDmEdZ5WjHCXdGMjwp3h0lBmdhqw83LxzZpmIf4FjCMlfDhC+LkZZfndObAQbGO49rz82ApRkZkV48FOBO0K+rAkhWqg/UKopsziNMJzuVgm9DjB1QFPhWw1T+K5e42vJg+qmlnv5WK1snTN74Sl4xi2wQTYhGrpcnVPDiZ2TPDVrMmHcfP5hTbFNbmTvtK9ZsvE3lhHXJY1tQW/RRK+DCQZWNh6FmMjO2n0FZ9oXV2v8jqBPMVDbSZGdAE9ys0didkHMGxV133BK4plMJ/6fByp5XQE7BfeHGoGMMZkFQ0QPG4T68NsFYxFD4CRlkRDV2LKrUldI0fzNuhYBhOKVaJ7bFyVxz/ZpUfCRdvuA25B4g0AauHIvAvGs1/t//0DZNyocaRS1yaoIfIK0S5I63yc3N7svMZSfLgddeRDGegzShwaWEYmQN9wCePqOip5dSKw7OiOuYw2CmFv2JNeN8+nNFvgUVM9yyAS3GmwW0TuqGwGWkvgyMpIXadcq6oly0Xv4XPBImXZPoErZRdc08frJCVppLWMWPevz+G62pcUz3/VbIjwOOYPPn9eBi8CKu+3uOxATMFHOfIUcWiSUX0UG6fArrgzBanuAK/tFT3YRnInKTao5C9dnwZ/kxpuKYHkEcx4PP8VOsPaaYskvpxiZpYIKrl5ojPoeOJ Rj3p1vJI C0AbfFxIZqFe9zzhRGmxJsGb9N7F0bw49TbRiavYJxO6ld70nLu3GC8jwpg9hqUsKA8zpKOBuwKLU/gyiVa72mrWLSY8Q7cTQfEclPxRGvgGBy23v4BM0Pqdyft1OfyhV1A0UvPXPyvy46qlKyrcQcC+FBI6yMCSlIFV2DIjUg5jHAbDG8hOAvx4sgRta3sa/tJy79pHQLvFb8F3xi4PXCHiHro6ouCNVBjYvJBonnH3dTodlTWwhLqFDeICjqAmagBkvBiMlqBp8UbMXoFaY8vqcctilRvYFEXVmQfMixqqhKbbwkggQU3hfUHOeLjzlueTvDaWjVtrAvzmnyNS7y2spS3tg/noNxM/cYWQQvIYsWKNgeBteVJOoGpY4VfpSmn+NI5O4jHMOsUehWpUEB+cwpR2RBWKrIay3aTpk72pI5ixbTIe8z0HMG4hOJ2m36QR8UT7RgNF/c/k/U2Ca0JKpELYnHrlxAyakd8qxptpMZyWdMxdMbIHHOBv8PbRcGwAK3SYLGBkv9Z6mHEG681jlKFtz2LqUIou/Jl8gykJqdmYikkpIaf/uiv1aR/4ydzh31jfXaxqbHhB74k8taAbnAEphyepHc/FnQtB1CtF3ON2NjKwiYIZvAIyTQgAVLBFKOKVx0ZSdJTBLCtiYtM5LitQtJVafgtSoNb+uVh1eT/ukak0Lqy3DjQwpCzAIDAhVCg8gnznyvao= X-Bogosity: Ham, tests=bogofilter, spamicity=0.116676, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: The old FIXME noted that the zeroing was done to differentiate the two EINVAL cases. It's possible something like this was true historically, but in current Linux we zero it in *both* EINVAL cases, so this is at least no longer true. After reading the code, I can't determine any clear reason why we zero it in some cases but not in others. So, some simple advice we can give userspace is: if an error occurs, treat the contents of the structure as unspecified. Just re-initialize it before retrying UFFDIO_API again. Signed-off-by: Axel Rasmussen --- man2/ioctl_userfaultfd.2 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/man2/ioctl_userfaultfd.2 b/man2/ioctl_userfaultfd.2 index 28dd2fcdd..2ee6a0532 100644 --- a/man2/ioctl_userfaultfd.2 +++ b/man2/ioctl_userfaultfd.2 @@ -248,6 +248,14 @@ operation returns 0 on success. On error, \-1 is returned and .I errno is set to indicate the error. +If an error occurs, +the kernel may zero the provided +.I uffdio_api +structure. +The caller should treat its contents as unspecified, +and reinitialize it before re-attempting another +.B UFFDIO_API +call. Possible errors include: .TP .B EFAULT @@ -281,14 +289,6 @@ feature was enabled, but the calling process doesn't have the .B CAP_SYS_PTRACE capability. -.\" FIXME In the above error case, the returned 'uffdio_api' structure is -.\" zeroed out. Why is this done? This should be explained in the manual page. -.\" -.\" Mike Rapoport: -.\" In my understanding the uffdio_api -.\" structure is zeroed to allow the caller -.\" to distinguish the reasons for -EINVAL. -.\" .SS UFFDIO_REGISTER (Since Linux 4.3.) Register a memory address range with the userfaultfd object. -- 2.42.0.609.gbb76f46606-goog