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 X-Spam-Level: X-Spam-Status: No, score=-6.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 547FBC433C1 for ; Mon, 29 Mar 2021 21:51:53 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D533061481 for ; Mon, 29 Mar 2021 21:51:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D533061481 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 3A3D96B007D; Mon, 29 Mar 2021 17:51:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 37ACD6B007E; Mon, 29 Mar 2021 17:51:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 21B436B0080; Mon, 29 Mar 2021 17:51:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0164.hostedemail.com [216.40.44.164]) by kanga.kvack.org (Postfix) with ESMTP id 07E936B007D for ; Mon, 29 Mar 2021 17:51:52 -0400 (EDT) Received: from smtpin03.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id B86B12C88 for ; Mon, 29 Mar 2021 21:51:51 +0000 (UTC) X-FDA: 77974259622.03.7B2C147 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by imf21.hostedemail.com (Postfix) with ESMTP id EDF0FE0011E1 for ; Mon, 29 Mar 2021 21:51:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1617054710; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=fXA20eIAi5LvcsVse5nWTOxsx9pyCiUtKEPvP36UGXE=; b=BpVyN35ybJv5IAA+hDLYWHtdvxN8BsvHGDuRNtv0UzDnxF9sUHUf6SCWCHs+WNRKZMxZuA cPUX6EEG/LDgE5z1TZeTgFTdcLJgcc26tYMjVTjb0ewLY0S+H8A6Cp/0NNQP8ylcV3m6Xv wmIEg/poa94dMdUSqV3VhqeNMoO/1Vs= Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-478-IChmCezRPpOGB_-sXiHboA-1; Mon, 29 Mar 2021 17:51:48 -0400 X-MC-Unique: IChmCezRPpOGB_-sXiHboA-1 Received: by mail-qk1-f197.google.com with SMTP id k188so13194164qkb.5 for ; Mon, 29 Mar 2021 14:51:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=fXA20eIAi5LvcsVse5nWTOxsx9pyCiUtKEPvP36UGXE=; b=JJQwvKX2GlKSAXhbxtpHMFyRPEqCYpHsBMieR7qWLzm/rDw+vg0xIiw1pv17HXnBf0 Nf7sgd1dBvsCNGgvv3xZwmYBuK8SutcXFaLzrCUnQepeKcULn6oCd15I7s3i+z4e+ZRI JRn+pt4RjEBeIVbRdVzQRWSWlXIJpcAb8lPW2HdOvuiNS3vIUnzev2LNK9qdulM25Sew s52FtpJmUVtvAhz+aYDfMBqHYylgfpdUBSsa0z5H93wXBWEYFxEbfpyhvxjMJ+a7OSb4 Erif6hNJy05GhJoZri36Vk8GDyGmkwFqIOiS2FdIXbUxqEGdi/bklphpm/8dgpNQZJok goxg== X-Gm-Message-State: AOAM5302IJL/w6o1T7zVOT7w4lnCiMzO8sMzHrQO9rvbZEhkr9eHdoBQ 4ZQeMPfXC5OVisKqqW8JadXqG0CCZtlqEaCXJUTbIWPX7dkucaguhLP9S8OvEeEFInNOhRpunOx Z7qPj0dP9gEc= X-Received: by 2002:ac8:72c5:: with SMTP id o5mr11257654qtp.279.1617054707746; Mon, 29 Mar 2021 14:51:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyYqUX7O065WJ20RVczGrXZkxbkD6gVD9ttPGilIKHPwaK9Q7WWKLF50gkedOIcUAW02b2IoA== X-Received: by 2002:ac8:72c5:: with SMTP id o5mr11257633qtp.279.1617054707409; Mon, 29 Mar 2021 14:51:47 -0700 (PDT) Received: from xz-x1 (bras-base-toroon474qw-grc-82-174-91-135-175.dsl.bell.ca. [174.91.135.175]) by smtp.gmail.com with ESMTPSA id d24sm13846143qkl.49.2021.03.29.14.51.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Mar 2021 14:51:46 -0700 (PDT) Date: Mon, 29 Mar 2021 17:51:45 -0400 From: Peter Xu To: "Alejandro Colomar (man-pages)" Cc: linux-man@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Mike Rapoport , Andrea Arcangeli , Axel Rasmussen , Michael Kerrisk , Nadav Amit , Andrew Morton Subject: Re: [PATCH v4 4/4] ioctl_userfaultfd.2: Add write-protect mode docs Message-ID: <20210329215145.GE429942@xz-x1> References: <20210322220848.52162-1-peterx@redhat.com> <20210322220848.52162-5-peterx@redhat.com> <20210323191618.GJ6486@xz-x1> MIME-Version: 1.0 In-Reply-To: Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=peterx@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: EDF0FE0011E1 X-Stat-Signature: s7bx8fam7rbn673fo4jgca4ofwf5gw11 Received-SPF: none (redhat.com>: No applicable sender policy available) receiver=imf21; identity=mailfrom; envelope-from=""; helo=us-smtp-delivery-124.mimecast.com; client-ip=63.128.21.124 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1617054708-709823 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: On Thu, Mar 25, 2021 at 10:32:20PM +0100, Alejandro Colomar (man-pages) wrote: > Hi Peter, > > On 3/23/21 8:16 PM, Peter Xu wrote: > > On Tue, Mar 23, 2021 at 07:11:04PM +0100, Alejandro Colomar (man-pages) wrote: > > > > +.TP > > > > +.B UFFDIO_COPY_MODE_WP > > > > +Copy the page with read-only permission. > > > > +This allows the user to trap the next write to the page, > > > > +which will block and generate another write-protect userfault message. > > > > > > s/write-protect/write-protected/ > > > ? > > > > I think here "write-protect" is the wording I wanted to use, it is the name of > > the type of the message in plain text. > > Okay. > > > > > [...] > > > > > > +.B EAGAIN > > > > +The process was interrupted and need to retry. > > > > > > Maybe: "The process was interrupted; retry this call."? > > > I don't know what other pager say about this kind of error. > > > > Frankly I see no difference between the two.. If you prefer the latter, I can > > switch. > > I understand yours, but technically it's a bit incorrect: The subject of > the sentence changes: in "The process was interrupted" it's the process, and > in "need to retry" it's [you]. By separating the sentence into two, it's > more natural. :) Sure, I'll change. > > > > > > > > > > +.TP > > > > +.B ENOENT > > > > +The range specified in > > > > +.I range > > > > +is not valid. > > > > > > I'm not sure how this is different from the wording above in EINVAL. An > > > "otherwise invalid range" was already giving EINVAL? > > > > This can be returned when vma is not found (mwriteprotect_range()): > > > > err = -ENOENT; > > dst_vma = find_dst_vma(dst_mm, start, len); > > > > if (!dst_vma) > > goto out_unlock; > > > > I think maybe I could simply remove this entry, because from an user app > > developer pov I'd only be interested in specific error that I'd be able to > > detect and (even better) recover from. For such error I'd say there's not much > > to do besides failing the app. > > If there's any possibility that the error can happen, it should be > documented, even if it's to say "Fatal error; abort!". Just try to explain > the causes and how to avoid causing them and/or possibly what to do when > they happen (abort?). Okay. Would you mind me keeping my original wording? Because IMHO that exactly does what you said as "trying to explain the causes" and so on: .B ENOENT The range specified in .I range is not valid. For example, the virtual address does not exist, or not registered with userfaultfd write-protect mode. It's indeed slightly duplicated with EINVAL, but if you don't agree with the wording meanwhile if you don't agree on overlapping of the errors, then what I need is not reworking this patchset, but proposing a kernel patch to change the error retval to make them match. I am not against proposing a kernel patch, but I just don't see it extremely necessary. For my own experience on working with the kernel, the return value sometimes is not that strict - say, it's hard to control every single bit of the possible return code of a syscall/ioctl to reflect everything matching the document. We should always try to do it accurate but it seems not easy to me. It's also hard to write up the document that 100% matching the kernel code, because at least that'll require a full-path workthrough of every single piece of kernel code that the syscall/ioctl has called, so as to collect all the errors, then summarize their meanings. That could be a lot of work. > > > > > > > > > > +For example, the virtual address does not exist, > > > > +or not registered with userfaultfd write-protect mode. > > > > +.TP > > > > +.B EFAULT > > > > +Encountered a generic fault during processing. > > > > > > What is a "generic fault"? > > > > For example when the user copy failed due to some reason. See > > userfaultfd_writeprotect(): > > > > if (copy_from_user(&uffdio_wp, user_uffdio_wp, > > sizeof(struct uffdio_writeprotect))) > > return -EFAULT; > > > > But I didn't check other places, generally I'd return -EFAULT if I can't find a > > proper other replacement which has a clearer meaning. > > > > I don't think this is really helpful to user app too because no user app would > > start to read this -EFAULT to do anything useful.. how about I drop it too if > > you think the description is confusing? > > Same as above. Above copy_from_user() is the only place that could trigger -EFAULT so far I can find. So either I can change above into: .TP .B EFAULT Failure on copying ioctl parameters into the kernel. Would you think it okay (before I repost)? I'd still prefer my original wording because I bet 90% user developer may not even know what does it mean when the kernel cannot copy the user parameter, and what he/she can do with it.. However if you think it's proper I'll use it. Thanks, -- Peter Xu