Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2862843pxv; Mon, 12 Jul 2021 03:52:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwDC4U3h3LVlsz3Jmv1UAPMgIl557+iBh9dSLsPhfI6GpEzqhJsPnDiRUGYxzwWEfl3tId3 X-Received: by 2002:a6b:b783:: with SMTP id h125mr29219221iof.71.1626087163003; Mon, 12 Jul 2021 03:52:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626087162; cv=none; d=google.com; s=arc-20160816; b=FKUhYV6iVLqZE/N8yQN5p5inlHv/vB0PFLevStqL0Zf9inoa82s2ofGJAzHp9Q8Ab8 E7Cq5yrkk84xFRqCeRxMKF3D3/6jo/nVJHsm0L010NP8BZaTiex67vaam+SMQngiQt87 y4j5nOVcYG0gFrrtj9M181Km8IDAc7fxMFChnyuk+ObZ8O9YoKXYJs61+TsmVNU+59Me tyuRwEONPf0Td0JFuKVgSC05LUlE7DdAwcmevSvcC0+qhEGgrCk0Z3amsYyupH0d8BrA 8Hv1CGcPYSRM/0pwQ8+zEoh0zrJK1Cc3OFNCI+vXOGW2LqyY11UwJti0UZxc/shC4aqr B1Dw== 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=qMQWiCEtQ5k4pkwrvr25/l/gyMiBVuw4zuUadWacuok=; b=o+trpupz0eV8MCa10y4NNr44aJNj24z2iOGWK5crxaxbExN+nvmDq9N0b3fnmDZ55Y efke4qOtAEhe4sJKCGsmzoRLT7kCGaUx7hturGia7VJ01Aa1mgHEPpCas2TItjMwBVT0 o2QMotnKPlo5JmnTcxDwUb78YTsk6tp8hNGg7u5YXq75hFeTe3VskIzK8t++WGyHmNh1 f18eqe+4XLOLcN6hlyypA/++CCPaWx4EopD631R8tEOpptQyB0rdl5flvU6Rl/PB81Rc NEEKoO8Z3vhyL9mtW11wLVjoTXIWBnuBlYoGvGglKBjjWOvKTBzXUjdzvss3xDWJ7/WK 1PhQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=1ETCjg8V; 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 q3si15896674iob.0.2021.07.12.03.52.31; Mon, 12 Jul 2021 03:52:42 -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=1ETCjg8V; 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 S1356417AbhGLIQ0 (ORCPT + 99 others); Mon, 12 Jul 2021 04:16:26 -0400 Received: from mail.kernel.org ([198.145.29.99]:51258 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344671AbhGLHcA (ORCPT ); Mon, 12 Jul 2021 03:32:00 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id F234260230; Mon, 12 Jul 2021 07:29:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626074951; bh=2Ur6X8inxXdWnyOjM9OdtGJE/OBuTDtyzGn5JiJ73ko=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=1ETCjg8VY1ShNyr8CggyIBPgEeb61/i7bPpr+YpxG0Hb0b617aBa/R5dElAkVl3tB EimVqM9vMIGxY3uCkNcAZJd6muQcmfWuQM5cynrBEF7thVkQ0EbkH3PxLDQaS72XTJ EPE/lRv/B9zEssdJnBwYiER94/UEy1izt+hRY7Wc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Al Viro Subject: [PATCH 5.13 036/800] copy_page_to_iter(): fix ITER_DISCARD case Date: Mon, 12 Jul 2021 08:00:59 +0200 Message-Id: <20210712060918.361451044@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060912.995381202@linuxfoundation.org> References: <20210712060912.995381202@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 @@ -967,9 +967,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);