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 D1AF4ECE57B for ; Mon, 9 Sep 2024 08:50:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5CB2F6B00B2; Mon, 9 Sep 2024 04:50:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 57AD66B013F; Mon, 9 Sep 2024 04:50:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4429A6B0140; Mon, 9 Sep 2024 04:50:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 27D2D6B00B2 for ; Mon, 9 Sep 2024 04:50:12 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id C838F81EEB for ; Mon, 9 Sep 2024 08:50:11 +0000 (UTC) X-FDA: 82544577822.01.0EB6822 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf06.hostedemail.com (Postfix) with ESMTP id 4F788180019 for ; Mon, 9 Sep 2024 08:50:10 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=QpltrMX7; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf06.hostedemail.com: domain of brauner@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=brauner@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725871783; a=rsa-sha256; cv=none; b=vRGwOnRxfNmrAwl0gqyOORGDEwtDqO9SdoqoB8EfgJsQ668OBhnr/3J2Th5Ba5CSw6IDGM UAC/AMErStYiHobcl/Xtz/3OVLsKEeUbVtvsoz4KMC5pGKnzWks96+Dx7TodZdO3HMzIDW OiEaSTJKnwjFu3jMcBtUeQrWTQk/7Uk= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=QpltrMX7; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf06.hostedemail.com: domain of brauner@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=brauner@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725871783; 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=GbSzCxJCbJMFDl5rUHdvmex1Jg8USAutPcaxRfls/kU=; b=q1BEyQfzOWD4aDAN363JIqTAqBoaBhf8XhBaTLrC/tKvZRuBr1dVaqR5WXPY02X/4xPRku DT30CKYE4d7RlKLsjc/gY+8ccQd6PNdpkI1ZyEMxORTBNmunI5qslLyenKKKrXBFIKaFmI yCvdaXgW8XvF3qbdfQn0YOG2GrISgpU= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 3D1F7A42901; Mon, 9 Sep 2024 08:50:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2701AC4CEC5; Mon, 9 Sep 2024 08:50:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1725871809; bh=GbSzCxJCbJMFDl5rUHdvmex1Jg8USAutPcaxRfls/kU=; h=Date:From:To:Cc:Subject:From; b=QpltrMX7TNaKUNzt/sFx4JeMN4HLR9AafXtCwKERDLq8HkC/XwnWLjrZ/csJPTWDW MKAkgQ84Qq5qnzHpcYRtcu5J+QAqNUNtGWZRkeS3rXZkrUrF0gr+PAawnxc8vkVAAs HZp1vybynQmfhsUaaEdwiIAGoH+Xcgmp4xvjqXGcoskYESouLpgnS3OlcKsA6J5ywT LjXy0ZFt71ohjLQAGAYL3y3lTLMWxbP7GOKvSxTQMnVeI0huiKDSrvfdYqT1PFFt7s eCZwwotRhKDPGdLLZXShLn0fYhCGflaSH+agZTiKhJHOb9H+tubHXTzcPJbfyoyyYk n1AJXbTlhGDBw== Date: Mon, 9 Sep 2024 10:50:04 +0200 From: Christian Brauner To: Jan Kara , Linus Torvalds , Amir Goldstein , Aleksa Sarai , Mike Rapoport , Vlastimil Babka , Matthew Wilcox Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org Subject: copying from/to user question Message-ID: <4psosyj7qxdadmcrt7dpnk4xi2uj2ndhciimqnhzamwwijyxpi@feuo6jqg5y7u> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Rspam-User: X-Rspamd-Queue-Id: 4F788180019 X-Rspamd-Server: rspam01 X-Stat-Signature: 4yza8pcghg1u4ry51t6xd416m8irxgkd X-HE-Tag: 1725871810-764639 X-HE-Meta: U2FsdGVkX18uyrMhDirJ0P4NUGS5+x8T1JDrgnfbNm3MWem1FKh6pB8UREqROLfUA6aOdx+rVCOxgwlLQ5wbeuuaKb8uH9nUQflRoeBCOaWEmK9Ix+qTx/oiue0KMZbHu3RHVOEMZiXWo9B5SaHlP+eLDh5toZwaE68Pzzic5K5TFa/KTCw68AqcsGSVHe8G350QmpuVQITlY3JQj4nxaIgWKfLgHGj/d1IElC8mvWi0/UItJsCFY/aYUdny7g41isgKFxs43H2MU1WX1xv5wDTwR1mm3Dpq5x9EVTcZppCLlmpy/MnQIdZeQ/cUEADzeRFv+3DnoaUDj3HSDeB7rkTc13aPmLnDtnWWQ9adJivjLzkbm71pnFYSITdULQjc4L0R/9ynlmRAFhaKCeJxko/aLRY1EJY+awUQ2r9k2miR/pR14CAPXaof0zRCsz0Xk63BL9crN0XJk2TMr+ceXICKitu9+hm+9Axtnt+0IhP0nmP+hBPAzlz01XEHruMQpqDQ414kqKOqxUpS43B2h8UuBcw6jVIu7VKtWTTxbo/idsQqu4zVzMwcmlNS+Up7vv6z5tPyqwW4aGMEcfKgY93ZM/IiwAopjoNpEXW3hf9OX7S/Mf6tOLvlO4kKAzX6nKPXif10dAXQ9m3LoB8idUfHsFHIEM5SX54Fd67ywdZWOSzJdzwpGsLUYSMwXXaj4Sl5P7KgNcIsS9HJZpCejIhhTtnP9NRBKosLRCrsPcS3gENfOB38MItUdbX+xyvdXI4eOxK2qFG1LMrEqoX8ZNeiGT2/VdG4WoVnFPwMVPz+zSClMKRJGc34LwIXijQMeCX58mKoscjvTfb5Rjy2VNgVLcSg9eDXSig3mTk0/lUStqx78RidRbKEiHM4YDwcvlrT6tm0N0axXAYeLm/iR7IcfAvskTFWzQf9D6qQdCU5u7gaBaDeLBfVEp7QglSRBF2cwPvZ9OAIRJfSO97 yMricYoi LYdmQOz0V4IH8X5PuCDpJoVUpKDQX/iJ8JOe7y/Fq4pCtcpLWRrImiuNEAQiDLf7G0Ip/IlkxYWyehb+oXIACnJ++77EnEDgQ3X903T9tnUQHlvnOFvOzog+w3iAM60ouyEvXMJQQ3hToVS1SO22nA6ofdVJAnmSwFHOLpfHk+hJw2kJp3zeGBvb5AFDqHvaUAjiUaidWdrOdKWajKGjyUNVC8HP1E7fPwJ+0Cf9drgtiDyPpw7JAg1m/fg== 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: List-Subscribe: List-Unsubscribe: Hey, This is another round of Christian's asking sus questions about kernel apis. I asked them a few people and generally the answers I got was "Good question, I don't know." or the reasoning varied a lot. So I take it I'm not the only one with that question. I was looking at a potential epoll() bug and it got me thinking about dos & don'ts for put_user()/copy_from_user() and related helpers as epoll does acquire the epoll mutex and then goes on to loop over a list of ready items and calls __put_user() for each item. Granted, it only puts a __u64 and an integer but still that seems adventurous to me and I wondered why. Generally, new vfs apis always try hard to call helpers that copy to or from userspace without any locks held as my understanding has been that this is best practice as to avoid risking taking page faults while holding a mutex or semaphore even though that's supposedly safe. Is this understanding correct? And aside from best practice is it in principle safe to copy to or from userspace with sleeping locks held?