Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp2716807pxv; Sun, 11 Jul 2021 23:39:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxmRftbpcuuUvN//yz9mxfgEbLD6LU75kfw3TExP+B+2fZPkR0INYm52pM5ETwX89U26jB/ X-Received: by 2002:a17:906:131a:: with SMTP id w26mr27093152ejb.46.1626071985270; Sun, 11 Jul 2021 23:39:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626071985; cv=none; d=google.com; s=arc-20160816; b=JCLpWmT8HYOf1/YceVkvKDQ0OoktmAK1xL4Fpgr2n5OBcZuKDlaWbKdkriKBFAlfye Xr7EmiLKaek7pnKIQmtx5Fef14WRKggrZWnO0iEisIIz7kp1Ns2f5udlFznQI5CA29aw NaRHGg35V/4Q2EWIbzhlIarkzLg70Y44Ci3Ac1aHpNrx21z3OmYi8Bf1XavJVpmlad2g wX0QvnOi/wKV7w9yeXTeZHd8KPB31lbYZIF7mtGjMu+PCR+o3wmISuuvwUR2RhWHocAb /3VQn4LozzCK5ee6Xcc/Nis3hSuyM97rdg2P3AOIc0VagDY4lS+aNMkJt5YXeJvwDR/I vdUQ== 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=nsWrfsZsoeMBJ5O4qQkRD9TZgKekVqllc67NN5iDfHM=; b=YiglIpoa2lAKtgXdTpFRN2s57yG1yTGaRdPSzz0Lajh3GyASGaKoyTnBh28J/vMOq6 GnK62NfkLjtN8lCULKebCqrLrXwf6olZ+RKLN7Y3J4g00KRjwCi0KNpoJmUbUm1t02mP tLjxfzVh8RsZXNnh+bZ2VNC0OWa/8pDhKypNhqTvwElT4to8zfLGx2KbPBSQBK26cLhN 8rMO1btvDE5VMiLTXMoG5skAlHqPUoacEFTv9Rm11Y3a+eAvDHDt2v2iuHQjNjeMpVe7 DFoZMePajWFSmKWXmxovI+r2IHxafp6X9U4kcPSZN4ikyMl3yoqfH8D7rolyeL7xzg6K nnrw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=FjmSfHLC; 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 m4si17234926eja.301.2021.07.11.23.39.22; Sun, 11 Jul 2021 23:39:45 -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=FjmSfHLC; 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 S237622AbhGLGjd (ORCPT + 99 others); Mon, 12 Jul 2021 02:39:33 -0400 Received: from mail.kernel.org ([198.145.29.99]:54054 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236312AbhGLGbx (ORCPT ); Mon, 12 Jul 2021 02:31:53 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id D884F61004; Mon, 12 Jul 2021 06:29:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626071345; bh=OR2XskNzRS1r0W3+UmIOCCEc3g9y1/invy1dN9pxn2Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FjmSfHLCJxikzZTDzvpMQpGwSIDZKqdSMzXx7pioP658yfBCejYBvKo2IevZ8ssO7 U/mke0nuL0c8mD+KwZjBEVjsIzeNhaZI9MJYZ9BHGPhxigZAVGFGFvFkbGV1GsZdsC DENriMT2MI2r0a+6jE9yX5v2op8ilQQtXVI2PjqE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Al Viro Subject: [PATCH 5.10 031/593] copy_page_to_iter(): fix ITER_DISCARD case Date: Mon, 12 Jul 2021 08:03:11 +0200 Message-Id: <20210712060846.609256441@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712060843.180606720@linuxfoundation.org> References: <20210712060843.180606720@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 @@ -922,9 +922,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);