Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2833045pxv; Mon, 12 Jul 2021 03:04:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwANzhcNqE4MO7Am/i8xM16U7+Qu1Rfj6hyQ8OQz7s/IcY2gzMDe+R3jf1Z+bMRXGMVoJ1f X-Received: by 2002:a6b:7f09:: with SMTP id l9mr22952972ioq.39.1626084278599; Mon, 12 Jul 2021 03:04:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626084278; cv=none; d=google.com; s=arc-20160816; b=f+9iUE6Z9y2GkPnzZBmwcOe92TwNeOHmsgZUB+7h6O1uUnMwUp93Gvaj3a+9Ij1vZa tb+YwlcVN3m3GKTAQ74L3I+8P9uEHT9pSwUb0ymQTKwvPrGwomYIdKyo5T+NtvOeoOFP dKAsWnvu30K75IVKJSZnUQKgDdsdvbjMp7NTb5APnOw2lQzQwI4DyQA/0vLW6LcBJx4x zwq3FvFbKvwU0u5wN60y4l56YVAwVyQCGju5p7uITTkIxGfeZd97jbx7SIQ5OJxOvsT1 U7T5z15gQVVy88oyRxuhIMMZ9jbGXPqNO+NZxg+FXDcMXk5EdmcSd8VggtRi5kcHDlrT 3R/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=7kIuap08Z4ddogLWRRShaUiHwffkLLGnw3Kxnzsb30U=; b=VZf99T54iD7aAYGmE8kx50rzVwXvRpJOaKJqytZZo5JwPHNcK/QUfbRcOzsJb9Awsf eBZppft3DRxyX7uWZ8D2FLv0bhC2h+PjU0zbumx9aC7dzVW9Kji99ZOzpsqBwvXC13Pd 8uMYohqTclWO2ekUlBVd5BM+NOrVh2DcGbo1G6UXMdV1+ZPjr/USJoL9aXUbufRb5dhT OmGcBpzkr6fvK/TbIPQzmxK6ES/t6xEalQO8FgN1WWNxubTNSkFu1eG0IYARmFth0CNL YGhNYODhsZnlgnG2a4zsijFlbFF8+VonvuvCfcOwIQAfe3n1+dw1YeNwrQlxy3t/7Tph PU3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=UyZqqZoa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v17si19194336jat.19.2021.07.12.03.04.25; Mon, 12 Jul 2021 03:04:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=UyZqqZoa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345345AbhGLHZU (ORCPT + 99 others); Mon, 12 Jul 2021 03:25:20 -0400 Received: from mail.kernel.org ([198.145.29.99]:57648 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233473AbhGLG6m (ORCPT ); Mon, 12 Jul 2021 02:58:42 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 863F0613CA; Mon, 12 Jul 2021 06:55:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626072954; bh=Oy13UB0ME+Nb4/IQRgeCJ2zrfoqR/8cCRtL+p4W3lEo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UyZqqZoabB5VNCapgJdVhm122bb56GmgMVE6GttH+h55UsANXpf/fY3yCxAzZ7tDB 9xPudMLamTi/EAhPUV54Io3VG0JE786BC6vwJpfsMkyw7dXCv1h/kTBf7KKF55XplU X7rXNpcou/FhQsFsWNbV1A+a1/BSq3Eyl7bmOXK0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Al Viro Subject: [PATCH 5.12 034/700] copy_page_to_iter(): fix ITER_DISCARD case Date: Mon, 12 Jul 2021 08:01:57 +0200 Message-Id: <20210712060929.437420872@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060924.797321836@linuxfoundation.org> References: <20210712060924.797321836@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Al Viro commit a506abc7b644d71966a75337d5a534f531b3cdc4 upstream. we need to advance the iterator... Cc: stable@vger.kernel.org Signed-off-by: Al Viro Signed-off-by: Greg Kroah-Hartman --- lib/iov_iter.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -906,9 +906,12 @@ size_t copy_page_to_iter(struct page *pa size_t wanted = copy_to_iter(kaddr + offset, bytes, i); kunmap_atomic(kaddr); return wanted; - } else if (unlikely(iov_iter_is_discard(i))) + } else if (unlikely(iov_iter_is_discard(i))) { + if (unlikely(i->count < bytes)) + bytes = i->count; + i->count -= bytes; return bytes; - else if (likely(!iov_iter_is_pipe(i))) + } else if (likely(!iov_iter_is_pipe(i))) return copy_page_to_iter_iovec(page, offset, bytes, i); else return copy_page_to_iter_pipe(page, offset, bytes, i);