Received: by 2002:a89:2c3:0:b0:1ed:23cc:44d1 with SMTP id d3csp963845lqs; Wed, 6 Mar 2024 02:03:04 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVpKq3NkWDsxcDKhbv4mU4ruKCmq9KMTPD0jgy7xQzvMhEEn6uZzZdZifsJ2EkQ/O+vhYaiX6xAWDQ4Auoi7cGNhlyjZMh5lw7SXDAhEg== X-Google-Smtp-Source: AGHT+IFVE0Q+8jeDgSr4wqOGsQA4ao98tQSNCFAbyMgDB784eBFn2ShZniIL1UOhDo4P1a9NfeZ7 X-Received: by 2002:a17:906:2e92:b0:a45:6b65:f6cb with SMTP id o18-20020a1709062e9200b00a456b65f6cbmr4995677eji.26.1709719384672; Wed, 06 Mar 2024 02:03:04 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709719384; cv=pass; d=google.com; s=arc-20160816; b=tATfkD9oKRTx5wmbLP3z8Zu/moxeAqT4F71uvylAtyNFw5ID4ccP6FIvGRvVlGS9RP 0CwBqleyBEGolwvgLVY7p+2vmmdFJs9Km/wQJLcG7tXJ9rnwUa155wGk0PPOsDYE8qZz tHzpgAo3eqxO7Mhb6PtqNuHTp9Qj/6rNY5BDMjk6i9I/qv/lMPvpeAXUWn4smVHhamjq Jb8NkZyZKSowM9rpZhlxDeehOotw28J7x9IzybB1uoSoTSrOjO0ZiroKo+/OXsslj0YF nkb/wJLeEtXffQH1ZBcz978QRs5kq7Dh83xGg6MVdxF5VaFtRal6iJp6yyOsBjm5bMcf BKCQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :dkim-signature; bh=xAdDe6dQomEORFaa1bExe/C2eZ99Z8ee6SsE1uK9ROM=; fh=zNHSBHyRbdH3FfDu3twBI4ZdoT1aqFagHdx5hskn3+w=; b=U4dtkMI/9EBGN/NrIYG+YBG3BpzqX7qCwnHNDVc5Ee7Ce5eXfOJubu7wGZVX/2aASQ 2OOPHmSN1W7Nd8S0o0iwy5kKnYC7IPalEt9vstV1xzx/CqF6V/Dg2zRO9ROXMEzhoD/e 5H+WVQ46B9NJhjkoW6lgMtGKOThdCW6g+D8Gnns7AvsD7IGuLrC4ITLp8o9uFO3ezmu8 0ryYOOOUui1v7xtMHUQhBhFyKBIxH9ixAo9XD5uNVW2lEGPpnsLe5QOqAVfgCaiceq3w IgGvtMzwEhe3N0KUGWlZ+i2gs9tb6tHH3eJ8s5UXLiQ9TUYHRX8QLO3Evn+ehCGZeOD7 7hXQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@szeredi.hu header.s=google header.b=dhawFkYi; arc=pass (i=1 spf=pass spfdomain=szeredi.hu dkim=pass dkdomain=szeredi.hu dmarc=pass fromdomain=szeredi.hu); spf=pass (google.com: domain of linux-kernel+bounces-93697-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-93697-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=szeredi.hu Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id gb34-20020a170907962200b00a44c86c4584si4339337ejc.116.2024.03.06.02.03.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Mar 2024 02:03:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-93697-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@szeredi.hu header.s=google header.b=dhawFkYi; arc=pass (i=1 spf=pass spfdomain=szeredi.hu dkim=pass dkdomain=szeredi.hu dmarc=pass fromdomain=szeredi.hu); spf=pass (google.com: domain of linux-kernel+bounces-93697-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-93697-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=szeredi.hu Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id E525A1F25DF7 for ; Wed, 6 Mar 2024 10:02:54 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7A2795FB84; Wed, 6 Mar 2024 10:01:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=szeredi.hu header.i=@szeredi.hu header.b="dhawFkYi" Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5DF845F861 for ; Wed, 6 Mar 2024 10:01:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709719292; cv=none; b=PQB6zHu/phZNo1z7w+edeNa5yGU/mSDp7vd6vG95mPnQwLLuHUOYtGgCG86SuodM6G711JotvpeHTaCFyvvV4Stmzo5upI/rUos6mSmRqrM24Fy4c3Zhx0JmvCBQmAyTvck7178/W5v69EbRyKk7b5OFtxxTDqJw3KnTtsx/BvA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709719292; c=relaxed/simple; bh=xAdDe6dQomEORFaa1bExe/C2eZ99Z8ee6SsE1uK9ROM=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=FCulipJfLbHt3KTP6bGM+lSP7RVH2txclsCJ4rrkdyTwqXI66CGVv4lw/MHv5m+AmmpAk5IJ/01xZiYURAJ5J/4j/X9ve9nVZiQBugxTdrYZR9Ug9+yXJ+mmzc8YRhzrdWGq/1Z8ZcbuSzuPTDlIGqQwyteNRmIlMw8t5zUdy7Y= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=szeredi.hu; spf=pass smtp.mailfrom=szeredi.hu; dkim=pass (1024-bit key) header.d=szeredi.hu header.i=@szeredi.hu header.b=dhawFkYi; arc=none smtp.client-ip=209.85.208.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=szeredi.hu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=szeredi.hu Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-5673b5a356eso1915529a12.0 for ; Wed, 06 Mar 2024 02:01:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=szeredi.hu; s=google; t=1709719289; x=1710324089; darn=vger.kernel.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=xAdDe6dQomEORFaa1bExe/C2eZ99Z8ee6SsE1uK9ROM=; b=dhawFkYit8n72LVYrSUXI2/0u0gkhrv+444CF8bVcYzsp1SaAS6mwHuFLDff9inxpu Gb9uysQGO3a6sjDH7jlZv4O11vvqp9CZpn6gYlbv5Wp5KGixKOhLk1oOjBaf4OLG0L1U mesva1RHhiMZ/C3jsU8h9zLCDylQ5V8HYFDNM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709719289; x=1710324089; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=xAdDe6dQomEORFaa1bExe/C2eZ99Z8ee6SsE1uK9ROM=; b=Qz/ZavbP5ZXL5uhdVaX7x+zJtHmt8+NrGlP/8tE53e8hlj033I5nCrB5nBssky6uKV 39KVm2vvtMcvNhLuqH6BzXjhyhOqOpUx74+NmbqmCLoavDXIGimb09oca2uLG1PL5Kwo SCfZMyTZSPoF+yNac8KUara43XCqDcUAyRRKzzIpUMnq6G1N1YnmmYm3lpYnP4Ru+FDz 4FdUlQxdyzqAd/ldmJoZ0rwk86LalILwglMMalUxD8eUi85WrrCris0ckrHpqPjo/vYn dLJ2jCEFeKZ6Vs1v8zqGm994e+4Jl1UEgNt1xRIBqRhODPh0TdsWkF0TNkx0WbuNWQ0W Hg5Q== X-Gm-Message-State: AOJu0Yw85W51Qq1qEg8iQpoigiPs5TG0PfXRdyVU6ztj3VRdPWM6l/Qe M3KaFtVOhPZcQwHUNqotJdQ1kGHg1XiOZ6d/20/FoKHNnJTjPxhacMOaJ7VC8bX9cdemQwexFDg /HCMuAAcbrzTKnCMlhY0ffLRFGQIUoKW1nAPPtUkCD0BOlAsbPOE= X-Received: by 2002:a17:906:fa87:b0:a44:8ea2:23fa with SMTP id lt7-20020a170906fa8700b00a448ea223famr10452807ejb.46.1709719288810; Wed, 06 Mar 2024 02:01:28 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <1693334193-7733-1-git-send-email-lei.huang@linux.intel.com> In-Reply-To: <1693334193-7733-1-git-send-email-lei.huang@linux.intel.com> From: Miklos Szeredi Date: Wed, 6 Mar 2024 11:01:17 +0100 Message-ID: Subject: Re: [PATCH v1] fs/fuse: Fix missing FOLL_PIN for direct-io To: Lei Huang Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" On Tue, 29 Aug 2023 at 20:37, Lei Huang wrote: > > Our user space filesystem relies on fuse to provide POSIX interface. > In our test, a known string is written into a file and the content > is read back later to verify correct data returned. We observed wrong > data returned in read buffer in rare cases although correct data are > stored in our filesystem. > > Fuse kernel module calls iov_iter_get_pages2() to get the physical > pages of the user-space read buffer passed in read(). The pages are > not pinned to avoid page migration. When page migration occurs, the > consequence are two-folds. > > 1) Applications do not receive correct data in read buffer. > 2) fuse kernel writes data into a wrong place. > > Using iov_iter_extract_pages() to pin pages fixes the issue in our > test. > > An auxiliary variable "struct page **pt_pages" is used in the patch > to prepare the 2nd parameter for iov_iter_extract_pages() since > iov_iter_get_pages2() uses a different type for the 2nd parameter. > > Signed-off-by: Lei Huang Applied, with a modification to only unpin if iov_iter_extract_will_pin() returns true. Thanks, Miklos