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 4C519C48BF6 for ; Thu, 29 Feb 2024 17:32:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AD7886B009B; Thu, 29 Feb 2024 12:32:54 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A606D6B009C; Thu, 29 Feb 2024 12:32:54 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 900B46B009D; Thu, 29 Feb 2024 12:32:54 -0500 (EST) 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 7CCCF6B009B for ; Thu, 29 Feb 2024 12:32:54 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id CDC76160367 for ; Thu, 29 Feb 2024 17:32:53 +0000 (UTC) X-FDA: 81845536626.21.3B22BCC Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) by imf02.hostedemail.com (Postfix) with ESMTP id 630B88000D for ; Thu, 29 Feb 2024 17:32:51 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=hHfnMZlo; dmarc=none; spf=pass (imf02.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.52 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709227971; 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=JQrqXSOy2jKpIC5hjgybMDfk5pI8gvMKo0UOhxnaCp0=; b=E9e5GWjnkN5sv6Z7tieF1GNuykQjqQLRQWgRZWV8GRKRUUQq3IJiYTc2j0sPNxkcUSrbyP ToycqiW2FVLvm0+LrFFAVyt/YBiaPwvtyPtfNwIXvAR/l4j9vPGn0mumjZ4ZOyg4TXvaVo Y+bKbMVZohWe55SQz3NVkEdsbXEx9SE= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=hHfnMZlo; dmarc=none; spf=pass (imf02.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.52 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709227971; a=rsa-sha256; cv=none; b=QiUWjh45McIV/I8zQpywnp4dGiGzEYfjcIwZXCR90tVJwgDFGcSJ80S4HT9be9Q6rIJrVD 3kV0t41vkxAhNXGUpdoCXw1XqI5OfH7FZQ/FN2sTZehSzzYf8oyaERkZUTAOnW1ITRswOJ jdfRoEpcFdtil08kFBdE8VonjpiFKNQ= Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-563c403719cso1846593a12.2 for ; Thu, 29 Feb 2024 09:32:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; t=1709227969; x=1709832769; darn=kvack.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=JQrqXSOy2jKpIC5hjgybMDfk5pI8gvMKo0UOhxnaCp0=; b=hHfnMZlo1tPX5MfiOnn1DC6JaxD1zNcehPijEBUcIADCXCe/12PfSI71vDsS8F7+CC 9KISjDCFntIN/DvvwNv+cx9aJVMP9Yr5Y+ZF0X1PdrQ6kflG3F0WGNrTffMUjOBhaeXD itZ/ecSxSJBkg262cx2KkNLPbPFbTf4/5HIwA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709227969; x=1709832769; 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=JQrqXSOy2jKpIC5hjgybMDfk5pI8gvMKo0UOhxnaCp0=; b=X7D0a/jF9n5mZIRi48VQTtGTrKG9mzqO/F2rAb+dOMPL0KzAj3HbjK0yAD2SyaGdZ6 Z5tW/Q/F59akaiIDDPt2rd89PHBtj5lXdy0ix600Zus2pZM8yrBUhrubnTMug0SYY2kI IWnQhLX787DvZY2Ie4vVPJ/PryPYeslCLkpH4YJx0idzhTNosDBBiUhnQWPIuDBFWkte 3VJYjKkB9BDzoQFh+YYhFZsq6rHRuRvLmlDS7TAefSczzOujgmH4+MWjLIXWQvTV8a+p 8a6rkmVIWiaPCBY7aRbZMd6pVD1EJ7euKZeQLVExb89zFxXO2YDgW7HxiwhG5k+u0BzH gn6A== X-Forwarded-Encrypted: i=1; AJvYcCUvm9Owhq+pLoVsAMMPv3DZBGlfL1U3tGFx1X/uLiOpeUziUBiCXCB9KCavc+13XobwlDQR5Fowxw6oqZuBuxYTuxY= X-Gm-Message-State: AOJu0YxTnCm5S/fxaBNhxWRjT59SJGYB1zOlQt/2LmADnUUlDbwTcqC6 NRmHk+jxsWPMhFf0umEhjor+GKdtRiaD3IVufCn/1TKrQh3KkCofpykgLdO+8Z6FF8YuATkG+hV RxETylQ== X-Google-Smtp-Source: AGHT+IH3wr81IBKzt4iGaOf2qYLd8RKDYsmyeSvBl0oSYIau6pPBcLvXPBiFJW55+dzY2vWIbJvhmA== X-Received: by 2002:a50:cac7:0:b0:566:9fef:1ee9 with SMTP id f7-20020a50cac7000000b005669fef1ee9mr1729984edi.22.1709227969495; Thu, 29 Feb 2024 09:32:49 -0800 (PST) Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com. [209.85.208.44]) by smtp.gmail.com with ESMTPSA id c11-20020a0564021f8b00b0056633e91addsm801369edc.23.2024.02.29.09.32.48 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 29 Feb 2024 09:32:48 -0800 (PST) Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-563c403719cso1846456a12.2 for ; Thu, 29 Feb 2024 09:32:48 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUrQnPl9+erbULvMfKt1rEcSZFsyvqjMGwDEZwihqAIOHnf6oxe+rhrqcFsjiFqUZx87GYkFNlQKaUDd4PmqqLZ30g= X-Received: by 2002:a17:906:b78e:b0:a44:176e:410c with SMTP id dt14-20020a170906b78e00b00a44176e410cmr2046490ejb.5.1709227968058; Thu, 29 Feb 2024 09:32:48 -0800 (PST) MIME-Version: 1.0 References: <20230925120309.1731676-1-dhowells@redhat.com> <20230925120309.1731676-8-dhowells@redhat.com> <4e80924d-9c85-f13a-722a-6a5d2b1c225a@huawei.com> In-Reply-To: From: Linus Torvalds Date: Thu, 29 Feb 2024 09:32:31 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [bug report] dead loop in generic_perform_write() //Re: [PATCH v7 07/12] iov_iter: Convert iterate*() to inline funcs To: Tong Tiangen , Al Viro Cc: David Howells , Jens Axboe , Christoph Hellwig , Christian Brauner , David Laight , Matthew Wilcox , Jeff Layton , linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, linux-mm@kvack.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Kefeng Wang Content-Type: multipart/mixed; boundary="000000000000e07d49061288a5ca" X-Rspamd-Queue-Id: 630B88000D X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: pjxz99shpycx5u1bo9qfow8j7ihxth18 X-HE-Tag: 1709227971-466452 X-HE-Meta: U2FsdGVkX19YtWfJkebXBo3GaC9Y5tPbnQEwUtQliX7lXOFx9pYN6uFF88ZYGmReSDnfIUu+9ii/XfpC3R7n1QgsH55MwJ2WuA22oyyF0AcwPoRixsPnELCDsd6WVyEDS42fYOH74Y9eg9Riu+dXHVlGJRB+tAP7dbapC1uGJye3F5fUjA2e0zG7S9erUjDYAxGqOfNl601yy2pyQ63+fuW3S+j9Ykx57IyWfUWR7B3YpwnyIiHwUM8ughpDIzHOqKo61ZGuqJt/LoV+8AhtnZHE8J7LAhhb4jSb1JVhUBAiz7b2og3ifbKR23xXg+fE9ToZImYEmIdYKpijSfuIEdy5rZQrP9FMrYEUirDUsKCtVIoOd4no7WRDDP1Y63Pju8poVLSKzGNWarUFAGuB2Bu++5V9c3dICMMRZPpnOtH+3nQbIYw61SSfvsRtzU0zq7JkfFWNQYehXKKDh8xvSUqQ3mU8yjAFuC30mBlNL2pPR7UXI7s1t9vLjYRLo9/atnbG7UXImO4AgOg1N0QnkZtZFUR79jy1hDTqBSdvM7EwnPJwFBq/Z1KhqrOV6U9SIbWYIQbYDx6ZwSdQwwa1jyvr/6CaGh/2ap3kXUI0x5ugs0yPw8qDoWpgJ8GfufBZqKLb6DYU2dc8tSXy3LwDy4C/4ppf0dCcn8VU1YuTp+KTDz0e8mu28U8X7WzQH+0c3SZu9hx9XyV/w3r12bT+jRnQwVJ64Da9elf28E6cABi+L8y3f8B/9A0qUoALS8XJ+fphC0uPyZN1LpJJwRGc1TnU5I68EX/ryhDrJb/qWFN0XbA63edWWckiuMjgQUPzhBm4JGEgX7p87h35F8EhcaIYXvjvb3q0GSRAqauZxx+MXPyr9u10GeEJ7LjXgn5QzapdCgJG7bFRKqbkJdcVlvpPkdOfajL3dMd2Mp/K7hRU0tQxLh+P5yo7R/wR3eg6CsfuXmLt5o+KXr9o7JR 3Y2+7fh8 ORRViAbnycsL+oN4f9OiwknyspYciGOL7o/QROTvQdiztf42jbhqCby1yMNdbFcp9+4X1L0f6i3cKxGLbI2gJPEniWe2xBN+hCd3MJrrKFhO6A2Y8VcCWRwsBE1fubF20TxTVM3v8kym54Tupy5HdAaTlD24xgu2mDqVVTKgIpF/sJ6XBYhPjkG5Ue8qvQw+ASgzN2vQ8wAbEFCKFcRbR3D3kF+XR3awt8jIuhZaYAfIsUMwKckglIX76iUNa9l7lH3HP8eKQjEEvh2/VlMHQAPQff+hCd0u3Vy1zdTxawDC9eJjqUbjQDqdl8bGGmzMn3Nnaic93Zz8f2vmddG8zvoCCeCXl902qQqlMFY3alCTfl3mPUFIYPhDOowH5Q7v2YPnJ8yXGugOKRH9cxchWXMA9uEbWTHR6G5xJwi2u+Eb14oeV6L4neXpT0SEIXJ1ZfFkjsNi8Witqr9gsNP8sRIV+TmeeCsIKK19FEen80tYhI+zsHX48d+OKTRlV0QSCvk8JovExynXzD/SWfTQRNBKT1QEMieMOXnmVyRxl6HTmpEUYs/99BnccduFR3HDjMOlr4o2Qulr9xHM/Tnj+oxwDMmLTMwngBcQKfGA/gSNAPLOgbSNIJ/twAs+FgFh3/WjE5WbIeGzY7wgacrm7U8lZG/hhouTUHCAOI5nbA4Js25hcVOzRIJJhJXOWi0t2aFKdvVR3pj2kkrnZ9QbsBZTRg/fJri+Xls+jjZt+WqUMWqc42op75Dv8nFrq9e8X4BJTUC9T3gOFYbI= 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: --000000000000e07d49061288a5ca Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, 29 Feb 2024 at 00:13, Tong Tiangen wrote: > > See the logic before this patch, always success (((void)(K),0)) is > returned for three types: ITER_BVEC, ITER_KVEC and ITER_XARRAY. No, look closer. Yes, the iterate_and_advance() macro does that "((void)(K),0)" to make the compiler generate better code for those cases (because then the compiler can see that the return value is a compile-time zero), but notice how _copy_mc_to_iter() didn't use that macro back then. It used the unvarnished __iterate_and_advance() exactly so that the MC copy case would *not* get that "always return zero" behavior. That goes back to (in a different form) at least commit 1b4fb5ffd79b ("iov_iter: teach iterate_{bvec,xarray}() about possible short copies"). But hardly anybody ever tests this machine-check special case code, so who knows when it broke again. I'm just looking at the source code, and with all the macro games it's *really* hard to follow, so I may well be missing something. > Maybe we're all gonna fix it back? as follows=EF=BC=9A No. We could do it for the kvec and xarray case, just to get better code generation again (not that I looked at it, so who knows), but the one case that actually uses memcpy_from_iter_mc() needs to react to a short write. One option might be to make a failed memcpy_from_iter_mc() set another flag in the iter, and then make fault_in_iov_iter_readable() test that flag and return 'len' if that flag is set. Something like that (wild handwaving) should get the right error handling. The simpler alternative is maybe something like the attached. COMPLETELY UNTESTED. Maybe I've confused myself with all the different indiraction mazes in the iov_iter code. Linus --000000000000e07d49061288a5ca Content-Type: text/x-patch; charset="US-ASCII"; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lt7i5gtw0 IGxpYi9pb3ZfaXRlci5jIHwgNSArKysrLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2xpYi9pb3ZfaXRlci5jIGIvbGliL2lvdl9p dGVyLmMKaW5kZXggZTBhYTZiNDQwY2E1Li41MjM2YzE2NzM0ZTAgMTAwNjQ0Ci0tLSBhL2xpYi9p b3ZfaXRlci5jCisrKyBiL2xpYi9pb3ZfaXRlci5jCkBAIC0yNDgsNyArMjQ4LDEwIEBAIHN0YXRp YyBfX2Fsd2F5c19pbmxpbmUKIHNpemVfdCBtZW1jcHlfZnJvbV9pdGVyX21jKHZvaWQgKml0ZXJf ZnJvbSwgc2l6ZV90IHByb2dyZXNzLAogCQkJICAgc2l6ZV90IGxlbiwgdm9pZCAqdG8sIHZvaWQg KnByaXYyKQogewotCXJldHVybiBjb3B5X21jX3RvX2tlcm5lbCh0byArIHByb2dyZXNzLCBpdGVy X2Zyb20sIGxlbik7CisJc2l6ZV90IG4gPSBjb3B5X21jX3RvX2tlcm5lbCh0byArIHByb2dyZXNz LCBpdGVyX2Zyb20sIGxlbik7CisJaWYgKG4pCisJCW1lbXNldCh0byArIHByb2dyZXNzIC0gbiwg MCwgbik7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBzaXplX3QgX19jb3B5X2Zyb21faXRlcl9t Yyh2b2lkICphZGRyLCBzaXplX3QgYnl0ZXMsIHN0cnVjdCBpb3ZfaXRlciAqaSkK --000000000000e07d49061288a5ca--