]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
lib/scatterlist: Fix mapping iterator when sg->offset is greater than PAGE_SIZE
authorChristophe Leroy <christophe.leroy@c-s.fr>
Mon, 24 Jun 2019 07:20:14 +0000 (07:20 +0000)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Wed, 14 Aug 2019 09:18:49 +0000 (11:18 +0200)
commit3e0cf479f4d29dffbceb20cb57286a742afb1cc0
treeb930dbc9be8c26651b97e823ec888f0188167ead
parentf0e32a214618d5f0e9ca742c54795e96b5f5f154
lib/scatterlist: Fix mapping iterator when sg->offset is greater than PAGE_SIZE

BugLink: https://bugs.launchpad.net/bugs/1839036
commit aeb87246537a83c2aff482f3f34a2e0991e02cbc upstream.

All mapping iterator logic is based on the assumption that sg->offset
is always lower than PAGE_SIZE.

But there are situations where sg->offset is such that the SG item
is on the second page. In that case sg_copy_to_buffer() fails
properly copying the data into the buffer. One of the reason is
that the data will be outside the kmapped area used to access that
data.

This patch fixes the issue by adjusting the mapping iterator
offset and pgoffset fields such that offset is always lower than
PAGE_SIZE.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Fixes: 4225fc8555a9 ("lib/scatterlist: use page iterator in the mapping iterator")
Cc: stable@vger.kernel.org
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
lib/scatterlist.c