From patchwork Tue Oct 17 23:01:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Axel Rasmussen X-Patchwork-Id: 13426168 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 8C09DCDB474 for ; Tue, 17 Oct 2023 23:01:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2E8558D0114; Tue, 17 Oct 2023 19:01:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 221EA8D0002; Tue, 17 Oct 2023 19:01:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 04D908D0114; Tue, 17 Oct 2023 19:01:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id E60338D0002 for ; Tue, 17 Oct 2023 19:01:20 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B8F5B160E6E for ; Tue, 17 Oct 2023 23:01:20 +0000 (UTC) X-FDA: 81356476320.10.4E89464 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) by imf23.hostedemail.com (Postfix) with ESMTP id ECC7214002D for ; Tue, 17 Oct 2023 23:01:18 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=3P28VkVq; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf23.hostedemail.com: domain of 3PhIvZQ0KCE8rEv28r93B99v4x55x2v.t532z4BE-331Crt1.58x@flex--axelrasmussen.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3PhIvZQ0KCE8rEv28r93B99v4x55x2v.t532z4BE-331Crt1.58x@flex--axelrasmussen.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697583679; 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=JOKJf+aFkcLqb+vIwiVLl6niteK0lFsixSF6GjMiBCE=; b=zKI2Vur9DnvxBzsxK/0EaVin7OX0MvJWNmLbUZ8E/w5m6mtSD7r2PmbMVvMmzMUSl5ij7Y DBph6C/gkwV4cgFfTYxlANGWDdVYYWLaeR6VCyMIxLPf7dXNhWxsnBJiCGGKvNRkyEbdcn SZsj9RaEFfxtTGAaNnMa4xY2mI2l1I0= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=3P28VkVq; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf23.hostedemail.com: domain of 3PhIvZQ0KCE8rEv28r93B99v4x55x2v.t532z4BE-331Crt1.58x@flex--axelrasmussen.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3PhIvZQ0KCE8rEv28r93B99v4x55x2v.t532z4BE-331Crt1.58x@flex--axelrasmussen.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697583679; a=rsa-sha256; cv=none; b=qEAuSDtHhQQxvjXJtUhGBRm0LERuYNkz+uvHCUP9+R/pk9JQiqyk1/TdxNY82fdPdzkdWT cLF1EChG/Mgg++8ULa6CJ054bd7xVzmj680HaEqjpVbADe8vM+LYDkWeYsSIlKq4oXqXxw b3ZsHUBDddFcXTEoxLXWVTjdl82JH6Q= Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-5a7aa161b2fso95697427b3.2 for ; Tue, 17 Oct 2023 16:01:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1697583678; x=1698188478; 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=JOKJf+aFkcLqb+vIwiVLl6niteK0lFsixSF6GjMiBCE=; b=3P28VkVqnKFXLfR7Th15y2knCHE6oH+m9uUYMUSip5mgIj1NCl+xKet9K4JrRcd+uX Rh6SSSOAwQG460wDJblxkQu9IK0Z4lkN7ijRngLFtSkX3OYH1iIsWrxL1t/IPPI1ybI3 Ob5vy9UDcOYBk2ALVC2zPWy6b3senFMH39m596QLa64UovWiSY8rydeHsFOXizJcTqFK 3mah+6J9maWgdPw6RiNXBbY8z2erZvmftI30JW0Fhe5kKU+u3NWW947IcYUbjeGo1FIn 0O7U4WdeLxMQHtTWDO66/5qgy9Pw6n62fbHwrp6iLBWr2CSakhApzDSYsusN042tCORS uKxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697583678; x=1698188478; 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=JOKJf+aFkcLqb+vIwiVLl6niteK0lFsixSF6GjMiBCE=; b=wqKiFq8F1/ezzQFlyyBHzofVRzxindlGCqoldpLhM+JEuwvjegzbHhGwycBri8VF63 G2lWSrtrEcs+NFi6udMRGaxBr0qEkWLCEXAGoNXcYVxH7hk2hkvEqK/57bpq4N/sUN6j 1HF8ECLnFmOX5rHql2MMTC2l1FfekNRii/UdsJrBf18OUO8QD3H0pzRvWHO+CQ760BKT U812phQTB7In8wONrEwdx4qBHP/My4QeW04tnqg8DwK5csD01y3LnPaW+gqD3avyFj4K M5PHBF/6iBdj+bBQXdgLfWw/OhgqwBQthCNvP7v2paQ0oWp4haoP8BymfEliCVHjNilz jhvQ== X-Gm-Message-State: AOJu0YwzQkJD/EfIOhOjyT6BCcs6ho7mgb1r34URIG5J4gyU/4EC2IhC 1xC5YPak9hzSRXRQQZkhmI6DzJW+FBdpQd+UubK5 X-Google-Smtp-Source: AGHT+IGAw1OQNPEiWHUiooH43d5H85P1JTg3yn4uwHQG4ATI0Ap1hSLGIMAXTD6Z8FLwajxXq0T/etVDjId1uCwOy+fP X-Received: from axel.svl.corp.google.com ([2620:15c:2a3:200:cd04:35d6:a586:5c86]) (user=axelrasmussen job=sendgmr) by 2002:a0d:d848:0:b0:59b:ec33:ec6d with SMTP id a69-20020a0dd848000000b0059bec33ec6dmr90025ywe.5.1697583678192; Tue, 17 Oct 2023 16:01:18 -0700 (PDT) Date: Tue, 17 Oct 2023 16:01:08 -0700 In-Reply-To: <20231017230110.3170850-1-axelrasmussen@google.com> Mime-Version: 1.0 References: <20231017230110.3170850-1-axelrasmussen@google.com> X-Mailer: git-send-email 2.42.0.655.g421f12c284-goog Message-ID: <20231017230110.3170850-2-axelrasmussen@google.com> Subject: [PATCH v3 1/3] ioctl_userfaultfd.2: clarify the state of the uffdio_api structure on error From: Axel Rasmussen To: Alejandro Colomar , Mike Rapoport , Peter Xu Cc: linux-man@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Axel Rasmussen X-Rspamd-Queue-Id: ECC7214002D X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: o9g1gbo7gzer8mmkt6egshna7reoqhgo X-HE-Tag: 1697583678-239124 X-HE-Meta: U2FsdGVkX1/PvM4ZLfEeE3zFKY6dG1RutXGuobSG+16ZIiOckM3+g5t0hIpZPuXnD4dW01RlemF76YP2JsPJLpmCg2aT4ymOOeG62wqtV+r5pp/BWR5ZAd3ZpD7G9CL+Q1ENt0rUlzciZ7p2O6XffXGM/qffw20vWLxBVNhQL4KffwYfI7Pe8BYJZhBwuMhcFuE7HCOlnG94U2+v35tknPwAuCv6+htc/01GM8bn4jOTH4TthpJlgQZ9PIpAWr0sAWXRcw65wegh/q25aCMkr34SVAfpgACfFDXOdjIPC8K3RK1Yj3C/jOsLbFFpfsByyz3i1IsJ2C7T5lSAFD4J8pMz+CChzlK2xARDuqK0wbBaXVaxGCwp2iS7RRz8b729Qq9oPRQgeBWHm4CjVM75BT00pUhURu6nmG6RuHeV5WlhRj03A44DpztS+L+97LAUFLMm49ovkvoWr97k2obzPp8suhSd0Jqs8vVQm8AZA9Gg5KXdDHw+br8dbeSj2zkLly/uJ4tb84qPWMuhdj/A/Tv/cvpaCsfK9E3aQ8stlnEaJY4v41ZF1UCNleKMB2rOhWDinXA6RzWRYmp+MtAo7I8WgaP2rHqnUf1e0qI6TZh36PnerUl8INxK51xuxJqwRPsb6AjUagmlYAbIBw+tew9Eh5ZCNEjxq5Ki4DrKATSRdqsp0NUN6X9hlY+pzwpNeHN5gahElIAAzfj1QjFgE0PaNJADv2Ld4eUwK4Vj6c3fLZ7ZMGUehP+ih4N1rkiO3NneDk8dC9p+YdJR/cG6smvoUMIDoZzhEvgkHrEqXcXOyH5K7XdoRW2A5QMgnng/nX/JZcqtYjRAOYe6mw7Q0evxaKCL/nd/I+hCTl/Z4lJ5uaefF++6ZAkC3FWuK6F1UkzB67dvFxrbW4hR6fxM9ZGMgDidCaFkvyOI9UOBPOstVQrSAU3gnqM9nr8SfPdrKYN6SYQXdawOXJ58IN/ /O2o3570 KnX9tfzDKd104zIUDy3oTbWc3wi/WD4cynmwI5fpsznxJBNSDQKCSZxUo5QB7VJATGLvqYu0jbwfrJ3skMzNiHJpfb6CJ77MXjXtDh2vl2x3drY6jjM0HRqhesbgaFCkelJU0Ns1810YBvltjWy/d81dz2giV+OCHaYPz8BeYjCTIYlAGYKRpWQ5TW4fUAPf3f3Ct/rHyY+vnrLtRS5+SoZaXnrgeFroumI+w5vzOfcHxFwwwjpj2lcjirBTXSqNs/vA9ZpAYMLzeBKEWLBxvyw8USnXvHUP5p6u/ucDf4Sp/ryYHzfvToFb0+IJed9PIxPgIc59jy3DuEoILrN0xDwLUGzry4YWlUZ+P4wIFuPnHBx66ZYWJlxvctB269u8rnJYXgFXFTonw5+7ACPJUKU6ChktvzVQElqX4ZibQQA2R3E7X1rCizJN+lqjcej60Da86dTGg74qnfOYXvkiUVLyWHuT9qyl0jiPqA5zGyIEHo+gGaoG4volwn5kNZjysQe+MxX5/ypsJT5YSQy6F0Kp+Nx11FQVsP7NTbS8ydNTi4/SL1od8RatWt90brOqvP/SnMO7SvKdCRZ3i85X5BNo+/tCXGhGNIlv4bMH9q1wSQbqmpxrmSlJXmCOlojx+ue+l6y47wyC2kza0sC+BPGMremVtT1iK5Mnk33ArsehmHGkO8nQtteqwtYufbc3tg8mhRIESuHcE22lnTn5cjVCZk4m1sEIlqOfSi1yKbwNfXcORD2V3ZQBRl4JjgqIRMjg0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.002121, 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. Reviewed-by: Mike Rapoport (IBM) 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 e68085262..82aee667c 100644 --- a/man2/ioctl_userfaultfd.2 +++ b/man2/ioctl_userfaultfd.2 @@ -272,6 +272,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 @@ -305,14 +313,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. From patchwork Tue Oct 17 23:01:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Axel Rasmussen X-Patchwork-Id: 13426169 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 A2072CDB484 for ; Tue, 17 Oct 2023 23:01:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2F1298D0115; Tue, 17 Oct 2023 19:01:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2707F8D0002; Tue, 17 Oct 2023 19:01:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 04D958D0115; Tue, 17 Oct 2023 19:01:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id D6EE88D0002 for ; Tue, 17 Oct 2023 19:01:22 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id AF70780F83 for ; Tue, 17 Oct 2023 23:01:22 +0000 (UTC) X-FDA: 81356476404.02.2ED9287 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) by imf20.hostedemail.com (Postfix) with ESMTP id 038B41C000F for ; Tue, 17 Oct 2023 23:01:20 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="wI1v/9eT"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf20.hostedemail.com: domain of 3QBIvZQ0KCFEtGx4AtB5DBBx6z77z4x.v75416DG-553Etv3.7Az@flex--axelrasmussen.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3QBIvZQ0KCFEtGx4AtB5DBBx6z77z4x.v75416DG-553Etv3.7Az@flex--axelrasmussen.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697583681; 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=zhGJS9TSuAOI7ph8IS5R88r99qDdTpF/uHgtYeaRs+U=; b=YJyD2yqQk1Tbq5db8XQ6qqVL/sqPmt12PUIKDrj63itFiXL1PnWL3Ph984GZ9ga5rvkFAy lwfM2+BCYUOYHmA61K26V7O52agH/Vd2N9ONblfMIVZoVujwzhXtUGOxhT2QyQBI5lU3Gc iD4GUqhFhhmGFs+0YHY6dt1YG21blvQ= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="wI1v/9eT"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf20.hostedemail.com: domain of 3QBIvZQ0KCFEtGx4AtB5DBBx6z77z4x.v75416DG-553Etv3.7Az@flex--axelrasmussen.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3QBIvZQ0KCFEtGx4AtB5DBBx6z77z4x.v75416DG-553Etv3.7Az@flex--axelrasmussen.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697583681; a=rsa-sha256; cv=none; b=rmag/onolugssx5+XYmf0UKSZdNsoZszNh7xFTQE35tWT6MHy1Pwt6kb7eM+FjnY30l0yX 4K+R7qy0X3QZS9Jp8Tww8n8+vvvA0EXJCak4RwkL/OW7ZghHePKltxp0od16qW3HsdxBy7 SVBUPwBhpT5eKZJfiq1HS88XsbmfBpw= Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-5a7a6fd18abso95610657b3.1 for ; Tue, 17 Oct 2023 16:01:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1697583680; x=1698188480; 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=zhGJS9TSuAOI7ph8IS5R88r99qDdTpF/uHgtYeaRs+U=; b=wI1v/9eTFE8lbAKex6OyMPEoDbKFybyoXVtOCZcZWwa2n1lVLc+GFyMA4T+GOZUgu+ 50fX1oMi1IWyJs0jT2vyYga28g/txDLNMZnpd4u1c9iEB/YhjJ64hQ/OmwQNwiFZX2nj CzCmxjbC+XGKfwlv13tz6J5RUWz/ql3tNoXGiDML1xoWujlO6VyEzYQknovtTRHUROVg OiQYXMjfST/lqaw7ptfGj0t33KT8JRIsuM77zgTYxL6iTy2VTSdbgX7xcE/yU6k9qoXE 3KhcJvr7R6oa05U+cMr+IKXH1FD7Zf+p6BYHV1auKdZ5lwE8QEyvt3jSIINqHajz1PpI S/oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697583680; x=1698188480; 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=zhGJS9TSuAOI7ph8IS5R88r99qDdTpF/uHgtYeaRs+U=; b=nwrOWic7VcXZ5VgC5LcEysyrfYs56oqS3uBKUE/PTe4sy0fBIU6qo9/twOK6HIuBzL oHtIwvyiZGQz1cYJtoA1cDAEyB/CNIQRtLjROgNAF/WnMJ2hwtaySBh+oVEV1ZMBkhCH zXqoNdM/Q12NPsD/am73hnUi7oRBMlpx5M3OJe/4Te+veNZyJm25uphJVYICVtIOQt8C rkA8H4Vq7G1Q4/g/UbGfOwv7xDPKQZu/sWEvcEF2yy1g/0cnNUMECdKIjUekavNTrS4p bBqSR2z2KIHOkUIBtHJOCOxCa3iTx0QsUycqrp7u9XCEQfQWOev/NLkjYKrS4S9ExUri HqMw== X-Gm-Message-State: AOJu0YzrWnWSHRBs5QDrANUCN4pXuylVgSBDADNKrMy1CCKxUqGkfwjj mT2iqG7vqEJPXsBgixiJ53jXuSC0uI9wZUIoucsV X-Google-Smtp-Source: AGHT+IGUIIMYcfHcAX/EFWTsWCSWt3CWSp3wyfZIjOY21JWpjm5WYGNByO8zTW1z94HmtGuIWpM6167CUq/2ldotqPAL X-Received: from axel.svl.corp.google.com ([2620:15c:2a3:200:cd04:35d6:a586:5c86]) (user=axelrasmussen job=sendgmr) by 2002:a25:8c86:0:b0:d81:7617:a397 with SMTP id m6-20020a258c86000000b00d817617a397mr80370ybl.9.1697583680159; Tue, 17 Oct 2023 16:01:20 -0700 (PDT) Date: Tue, 17 Oct 2023 16:01:09 -0700 In-Reply-To: <20231017230110.3170850-1-axelrasmussen@google.com> Mime-Version: 1.0 References: <20231017230110.3170850-1-axelrasmussen@google.com> X-Mailer: git-send-email 2.42.0.655.g421f12c284-goog Message-ID: <20231017230110.3170850-3-axelrasmussen@google.com> Subject: [PATCH v3 2/3] ioctl_userfaultfd.2: fix / update UFFDIO_REGISTER error code list From: Axel Rasmussen To: Alejandro Colomar , Mike Rapoport , Peter Xu Cc: linux-man@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Axel Rasmussen X-Rspamd-Queue-Id: 038B41C000F X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: z1mx9ob7b66ozdsgrjccuxqxa5i366q7 X-HE-Tag: 1697583680-940874 X-HE-Meta: U2FsdGVkX184LmxfThxByPl88Oeb990i0BGYhaL/r5On8zxssYfNVVNymXNNT6WX0gFog+Ht3wGp5xQrR5TXwJ5/KRO0NSD4F/LtUwzxPUUwLkh8AmdHwcZHZTbPvlnvPzntmlgwaI0eQ/zyp+BDT+O9NqoMWt8TdxtdsgwqPepXQOpXVxidLsdHbc+DLXv1CwvzygxFqSPDp7FENpII485nVd3FXTtP0P00+nhxnCOuxf1naLqzXJK3YNzZ3TbINYQQyA26syPokj0j/SyvNJCIO53zkaxn48NNQ5L41kuO1OMq65acI/ZbhxyOngrM7O6qHOdgSYLyRXPTF57fSwMuwwfDACW5CLDFZYVYanhc/ZRudJYGn/LCyDI8NHUN+XGgrTAIbTOOWsN91RctIOTKEvG0wQeiPAyTvVEHTP6obBZ/Kvc3yYd+LxOirBZJZ4WfBf6/bzztz19SdpN+Wx0psoB7oUJdoNFfj/NyV4FkbIpF5PEv9Zh2ifYABWPXYISsI0UsY31xiIw4CoKoXjJBXGgvotB5BFWADxu8Bz+8EEI6Hy7zqktKj8HONitCYwUTNqDsdpHQ+OWyx57BjOOKs4JbtbkR+DqdZEX435iz7Gq6qeE1jQI9DAlDuMn8zhyqGp60XNqFd8vLAJC8CuiJxruu+nBmWAj0OdlXc8vVqkUuK/OQ5dvZHDGaLEwAbw+Q6pPi+JMMC6rypUUUUQZmBhMTLYNyDSHL+gdoQb/cgw8kxSqPQOAAyfgZRC99pcf5TMOgq6YyGOWREF8lVePRqRwnoCaDb1eF/mk6LglhlAL6AV5wmiwZD5M2wQc+6bqZBsAAxZJ+g2wcF0CaSbr2VApKyXqbFpRdUFXxp2d9yn1c4E7ZJ/xJ4o/Ck/hmbgbjYUfiwWVXFMNhuBL1PmPWm4NtrPM/Tj/m056zI9FXbcrSpUu6boTj2a+rglvLOxYV5gbJGwyE8I7zJb7 O09G3n+G 86NMTfLpC95VPazNJaF99YmOlETWRMquV6SEyaWqWWfEzFU0f1o2kTXG6IjPPdlm+CDWsLMHNLjG7ztvdcdjEcAls2NTkipbcuUusk3jEBvwzxYwu+yux7b8TuCJN/Jaib5aQmjPCT79CIIUc+YYJG4OuSmRqqiIBdu5Di7G92Wnl/nsLz7AP4HLNaaGhvsXm6FfqkuWOvba4leB8c0zNtug/xrs0p6nHGzkQy8s6skcjLXOwqxYscdasbnL3QEQQGXlYyiAkSSZ7UqV7dakrLf1s/bByxwZ1F8smRBeBiVFiC0VemLPujhOz7pDZ3lQUeqeLCYx4/FXDfynX3fF4X7sKG1dsdz6PcCNO2eFPiEdfJDkfLUHOMXEtPZ4frZeibTNO5d2iDZxyeCuCbY7BVVmGAPOrjG0A0lldePbdBpt+XFEoCccGvY6yw9GefUEjZ/UqPJp1xibLw711FeHpiEfo0m7460DBf9b55R794Ml92UkjTcOq6jU+x5rzz1C+5Rh2lJxKmoKtLBtyVHAnDeBPmLA+MyjpA20SPzGbS/anxEIjivfBw8pJIPfP/dlNw+LEQ05OVFFf6ksfmx0ezOk/PlrZfZLVcEXhKAB2uJvv6qtll0JPrd9NJ7f9L6/NWyU3XE6f1BZcMXR/EfTEJ0tM1kNVFw03Mn86lj4m7s6//TbfGd/s/xXZJxzVQmiEkEV+euxAvaC4LlA= X-Bogosity: Ham, tests=bogofilter, spamicity=0.112480, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: The list of error codes in the man page was out of date with respect to the current state of the kernel. Some errors were partially / incorrectly described. Update the error code listing, so it matches the current state of the kernel, and correctly describes all the errors. Signed-off-by: Axel Rasmussen --- man2/ioctl_userfaultfd.2 | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/man2/ioctl_userfaultfd.2 b/man2/ioctl_userfaultfd.2 index 82aee667c..40528001e 100644 --- a/man2/ioctl_userfaultfd.2 +++ b/man2/ioctl_userfaultfd.2 @@ -413,8 +413,6 @@ On error, \-1 is returned and .I errno is set to indicate the error. Possible errors include: -.\" FIXME Is the following error list correct? -.\" .TP .B EBUSY A mapping in the specified range is registered with another @@ -433,21 +431,28 @@ field; or the field was zero. .TP .B EINVAL -There is no mapping in the specified address range. -.TP -.B EINVAL -.I range.start +The specified address range was invalid. +More specifically, +no mapping exists in the given range, +or the mapping that exists there is invalid +(e.g. unsupported type of memory), +or the range values +.RI ( range.start +or +.IR range.len ) +are not multiples of the relevant page size, or .I range.len -is not a multiple of the system page size; or, -.I range.len -is zero; or these fields are otherwise invalid. +is zero. .TP -.B EINVAL -There as an incompatible mapping in the specified address range. -.\" Mike Rapoport: -.\" ENOMEM if the process is exiting and the -.\" mm_struct has gone by the time userfault grabs it. +.B ENOMEM +The process is exiting, +and its address space has already been torn down +when userfaultfd attempts to reference it. +.TP +.B EPERM +The userfaultfd would allow writing to a file backing the mapping, +but the calling process lacks such write permissions. .SS UFFDIO_UNREGISTER (Since Linux 4.3.) Unregister a memory address range from userfaultfd. From patchwork Tue Oct 17 23:01:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Axel Rasmussen X-Patchwork-Id: 13426170 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 6B795CDB474 for ; Tue, 17 Oct 2023 23:01:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B4B7D8D0116; Tue, 17 Oct 2023 19:01:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A86618D0002; Tue, 17 Oct 2023 19:01:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8D8558D0116; Tue, 17 Oct 2023 19:01:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 6AA7A8D0002 for ; Tue, 17 Oct 2023 19:01:24 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 43591A0ECB for ; Tue, 17 Oct 2023 23:01:24 +0000 (UTC) X-FDA: 81356476488.28.C87E96B Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.201]) by imf14.hostedemail.com (Postfix) with ESMTP id 7A3EB10003B for ; Tue, 17 Oct 2023 23:01:22 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=PLddYDzq; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf14.hostedemail.com: domain of 3QRIvZQ0KCFIuHy5BuC6ECCy708805y.w86527EH-664Fuw4.8B0@flex--axelrasmussen.bounces.google.com designates 209.85.128.201 as permitted sender) smtp.mailfrom=3QRIvZQ0KCFIuHy5BuC6ECCy708805y.w86527EH-664Fuw4.8B0@flex--axelrasmussen.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697583682; 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=zotUshyT9JxTsldtXKWoET48qiWRumjzDVZqgqNWkYo=; b=yOOMkjJsTzRgNFFgiNTopAE9+priqbRhcUhbSotmJlS3ZUPcTRLAZmTq0wbsVE4l3vRAS7 7nWYQm1u+vZrmiwazNYIi4P4AxLX/cz5PbrF4rHPpaKp4VKru1ByQHTGBuuOQUkIS/z+jy 1pP07wmJEBLh+XdaxEKXafcIfJRgW7E= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=PLddYDzq; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf14.hostedemail.com: domain of 3QRIvZQ0KCFIuHy5BuC6ECCy708805y.w86527EH-664Fuw4.8B0@flex--axelrasmussen.bounces.google.com designates 209.85.128.201 as permitted sender) smtp.mailfrom=3QRIvZQ0KCFIuHy5BuC6ECCy708805y.w86527EH-664Fuw4.8B0@flex--axelrasmussen.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697583682; a=rsa-sha256; cv=none; b=vJnwXCVfBa/5AvKST/r4q8+8ftfF0QHmB3oVBMcidOBWH37TMLe5zbyl2D5+Kwd/mHtUQU JoQDFKIb3n/SCoON5XKCrhokb6y/vOTF/0v01TJZ6XRdzEuU98WFuiOqppwsh7Hya02Emj Sgf+4zSj/hloV+RC1m8smTLM6WXfNsA= Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-5a7af69a4baso95188537b3.0 for ; Tue, 17 Oct 2023 16:01:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1697583681; x=1698188481; 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=zotUshyT9JxTsldtXKWoET48qiWRumjzDVZqgqNWkYo=; b=PLddYDzqyG3Be8PKeY3xbbIB9k6FDUYI/Jteq4w+AOlqa6+qGJjhvatkW6bE9IWFCW Y+X/wN5+xEYrl4zDVn/8lQ0HXbbECqB8QhOsvUHYBd4/i41Xl5Ywk6eSbZEXOfUyzkjT VWBQ+rme/9LU1SKG3f+U8VhdBoUwdRvCFp1AI3X6lTFkbVCez+F39bkM8wyCUoW/dGmB nU2nTi9X16jWgRhpZJ0CrOuavmUNZKLBp9Yc7OVLfWQYj5yqUxb//lmSytkxqdHUBfz1 gZS6EBJjNoxHkdXYjr9mzqN6JWWXU/wUU8pvB/MmpuT9Z8+s91O8NYxhrNp8yxISw4Je 8Bkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697583681; x=1698188481; 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=zotUshyT9JxTsldtXKWoET48qiWRumjzDVZqgqNWkYo=; b=o93hZMbuGAsHEx6BgG0+rciaGUqk0qii85zt5+GjVxhq4WcuGT07+CknIGCBXCMw91 got94ug5DpIhg6OhSWqAbFCVprs13gyjG2uguBeRe8C8afGWK1xIQ7Aox9JX64+5syHt 6phxZB4p0h3GpJIsiiwkl0YDE1GMSfxSmDM2hMP6RcLChN98kX6tL0OAPX/oHk3AJ1vE 0zDOtVZPTL4NOJunZOxurnm+63PR22NhQTpyRBkwhw570UBdrRizg4kamAvJsUKPYmnh Xj8k5WEK+SVcQrUB1Sp7fPOYY0G76TRp8fu4k2wZS7h9FpN1jmfQ62NxuUSiNeHckakE s/5A== X-Gm-Message-State: AOJu0YwlhKcxgZWdO+4DIFgrd9T7p3TEnQpVZ/2n6WH625bHa7BXgRjS OhFkqYq/fK9NsfIB906rtXwlLUfRwiGwhwXVB4TL X-Google-Smtp-Source: AGHT+IG33rPX+YBy/IxDNh0Hn8HuEPXvaiympTSyyMMX5HQVRWBVdttcufnoKeE06bjlWpxR13bX53lvCE4ue3giXDWV X-Received: from axel.svl.corp.google.com ([2620:15c:2a3:200:cd04:35d6:a586:5c86]) (user=axelrasmussen job=sendgmr) by 2002:a81:4f92:0:b0:57a:118a:f31 with SMTP id d140-20020a814f92000000b0057a118a0f31mr84700ywb.7.1697583681778; Tue, 17 Oct 2023 16:01:21 -0700 (PDT) Date: Tue, 17 Oct 2023 16:01:10 -0700 In-Reply-To: <20231017230110.3170850-1-axelrasmussen@google.com> Mime-Version: 1.0 References: <20231017230110.3170850-1-axelrasmussen@google.com> X-Mailer: git-send-email 2.42.0.655.g421f12c284-goog Message-ID: <20231017230110.3170850-4-axelrasmussen@google.com> Subject: [PATCH v3 3/3] ioctl_userfaultfd.2: document new UFFDIO_POISON ioctl From: Axel Rasmussen To: Alejandro Colomar , Mike Rapoport , Peter Xu Cc: linux-man@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Axel Rasmussen X-Rspam-User: X-Stat-Signature: k1jnyna1jqjbn1ukam5i3tj774edmanq X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 7A3EB10003B X-HE-Tag: 1697583682-573699 X-HE-Meta: U2FsdGVkX18T3Qaf8fhs/szvBvLUfOqRcpKge3g+mVwDa0UDicxJEPWFyq39maiLbZPCfb/2aKm4PMKyaw3u79xmcZdPm2dqNksWNQd+62tX6XmzU/FnyACFLJwL9M10i5Dm0QaMS3fBeXtIIoEorlTXrzZQt5CSeB/kxYPJku2rhghIv1R5m2nNRE82zEaGe8piEI70rXjbIpvJWrX+k92Z36Q030IrVBfE/LXPT30nxVRQdNpzjkHIBPmIwkUWe8EC4rGSGKXi80WawpzQEj0RpFNL7oG2fEekK96mSc5Rcm4w82/cse53HCnRrF44QKyiJChfcx+2rrGUVsxxkLebEQoG7ScHYBq28c+om3vCQ6GLMxmy4QVY4uHKV+Rb24rHjaB0ZFiS2t667zEBKeU15gugvqbEQp86gsO8aTDbEUSkiufoMVo4ij2AsXzJR6ubVmNEC3fINvaeknUjUj6odWIfemsGwKeHcBVViylV6FXLaItGajJP+KXW8xv3q9MdnIsaaQkm4JyYNxEh2Pv4K+tYD9ryvyeq6EsbPUzVKvyNaoUhpsGlbro3UN+z6hSM4sbPC2Q73z4zM3ld13NwCLMUJtmdGmkFqoqMj8m8zd4Kni4I2Xm3Tz0c8PMTxA+xslAyWVlkd3seRgCTWQOnZkZnb7dj1yRrf52oNlp1s4CTGLGocXqLLG0QP4B77XUkwPmW4UvfCl7b5JnecAyXPWVW6hB8vBUoqTdrxNIrAwt8vw/AS9HfDRAjxsYtpYfc1KzaeNtE9g028duoGkTZYvNffBTFaSmIuW3TGS1kI/aEZ3lzODod+FnXy/QEQA2as7nAM7uFBNnHqk9D2ll1dyym1mWpSYQbVDe8/jki9zLgyF7+Mr95tEotG5dKM40+3qDsg9kDPj1h7PAh6kTIuA1dRpv5sp6A8SxdV76eCbKCrysgwPbhU7MMbGusWz+wJvgmr00IRrwTxWa fDlNRKeC j1bhVVBmY+5y6R679d+ZNHdkZNZQR2sGqcnkPopwgU7qP+kH6MYZjW97QP40yvT9O4msqGMxM1i7KuX/6UxbTqkIoa/aQgnfk2vkLLsAt/6qmnGWgHhOxCvVzL4zIlyK+ue7+sknzLi3krytb7AbdpjQNM0h05EM85BVJ11w6QND1rhrF7ZPUpvc/fZy7ifjo3yn6WY/gybpl0PnvMkmAqsF6U2wyKOecjXrZgtzFg2y43dUUD8oft+6Cg77XvN9kCoTYczOCGITuCB/LMxHnov2k4Yl4Bx5p3/s00z5uMGsKbV3owd7FhGtjoNopDU9U78KDzidcVP9/VJkXMhwDdglDFEiBGp++c5k7W40wSVpP3m8ZbTp0bxDMJ7n8rlzGUiXLVmJXhIAJPb3FerOj+mDE/7U2gSulhF+LXASggdKngtSDiaAIPdjqbdpeIfxv9bbATQniUnkhhJX+DMV6WPUBhtTnfP7ygadk0nf1arnsQ0y6Z2W4oGIsAa6cM/CG4kTx1ZzwmjeDu+6hiVtMvZIuiOTQIuOKiXLvBNYCNVy3f9rln4lv02xf6Gx6aCUniEtWUvxPyfN9M9CeFEl9uickOHOqGJzQDT99neO4MHj1F2EMaGDRHFkEUY1JzqH6FYJrYVpLuaUvQTmazX4OKQuirQhI4sR82mfExo6L1ls/yhGCx741500KcTCBkPn87j1aZERpCQ6+ihHPl1CfNJCcM+wzcNO7P88oLph56h/5oPtZDcVWpZIAm9oMg6HmEN9Y X-Bogosity: Ham, tests=bogofilter, spamicity=0.015303, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: This is a new feature recently added to the kernel. So, document the new ioctl the same way we do other UFFDIO_* ioctls. Also note the corresponding new ioctl flag we can return in response to a UFFDIO_REGISTER call. Reviewed-by: Mike Rapoport (IBM) Signed-off-by: Axel Rasmussen --- man2/ioctl_userfaultfd.2 | 124 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 118 insertions(+), 6 deletions(-) diff --git a/man2/ioctl_userfaultfd.2 b/man2/ioctl_userfaultfd.2 index 40528001e..a9131515c 100644 --- a/man2/ioctl_userfaultfd.2 +++ b/man2/ioctl_userfaultfd.2 @@ -405,6 +405,11 @@ operation is supported. The .B UFFDIO_CONTINUE operation is supported. +.TP +.B 1 << _UFFDIO_POISON +The +.B UFFDIO_POISON +operation is supported. .PP This .BR ioctl (2) @@ -886,6 +891,12 @@ does not equal the value that was specified in the .I range.len field. .TP +.B EEXIST +One or more pages were already mapped in the given range. +.TP +.B EFAULT +No existing page could be found in the page cache for the given range. +.TP .B EINVAL Either .I range.start @@ -900,9 +911,6 @@ An invalid bit was specified in the .I mode field. .TP -.B EEXIST -One or more pages were already mapped in the given range. -.TP .B ENOENT The faulting process has changed its virtual memory layout simultaneously with an outstanding @@ -912,14 +920,118 @@ operation. .B ENOMEM Allocating memory needed to setup the page table mappings failed. .TP -.B EFAULT -No existing page could be found in the page cache for the given range. -.TP .B ESRCH The faulting process has exited at the time of a .B UFFDIO_CONTINUE operation. .\" +.SS UFFDIO_POISON +(Since Linux 6.6.) +Mark an address range as "poisoned". +Future accesses to these addresses will raise a +.B SIGBUS +signal. +Unlike +.B MADV_HWPOISON +this works by installing page table entries, +rather than "really" poisoning the underlying physical pages. +This means it only affects this particular address space. +.PP +The +.I argp +argument is a pointer to a +.I uffdio_poison +structure as shown below: +.PP +.in +4n +.EX +struct uffdio_poison { + struct uffdio_range range; + /* Range to install poison PTE markers in */ + __u64 mode; /* Flags controlling the behavior of poison */ + __s64 updated; /* Number of bytes poisoned, or negated error */ +}; +.EE +.in +.PP +The following value may be bitwise ORed in +.I mode +to change the behavior of the +.B UFFDIO_POISON +operation: +.TP +.B UFFDIO_POISON_MODE_DONTWAKE +Do not wake up the thread that waits for page-fault resolution. +.PP +The +.I updated +field is used by the kernel +to return the number of bytes that were actually poisoned, +or an error in the same manner as +.BR UFFDIO_COPY . +If the value returned in the +.I updated +field doesn't match the value that was specified in +.IR range.len , +the operation fails with the error +.BR EAGAIN . +The +.I updated +field is output-only; +it is not read by the +.B UFFDIO_POISON +operation. +.PP +This +.BR ioctl (2) +operation returns 0 on success. +In this case, +the entire area was poisoned. +On error, \-1 is returned and +.I errno +is set to indicate the error. +Possible errors include: +.TP +.B EAGAIN +The number of bytes mapped +(i.e., the value returned in the +.I updated +field) +does not equal the value that was specified in the +.I range.len +field. +.TP +.B EINVAL +Either +.I range.start +or +.I range.len +was not a multiple of the system page size; or +.I range.len +was zero; or the range specified was invalid. +.TP +.B EINVAL +An invalid bit was specified in the +.I mode +field. +.TP +.B EEXIST +One or more pages were already mapped in the given range. +.TP +.B ENOENT +The faulting process has changed its virtual memory layout simultaneously with +an outstanding +.B UFFDIO_POISON +operation. +.TP +.B ENOMEM +Allocating memory for page table entries failed. +.TP +.B ESRCH +The faulting process has exited at the time of a +.B UFFDIO_POISON +operation. +.\" .SH RETURN VALUE See descriptions of the individual operations, above. .SH ERRORS