mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
synced 2025-09-15 09:07:11 +10:00
crypto: scomp - Fix off-by-one bug when calculating last page
Fix off-by-one bug in the last page calculation for src and dst.
Reported-by: Nhat Pham <nphamcs@gmail.com>
Fixes: 2d3553ecb4
("crypto: scomp - Remove support for some non-trivial SG lists")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
aece1cf146
commit
002ba346e3
@ -215,8 +215,8 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir)
|
||||
spage = nth_page(spage, soff / PAGE_SIZE);
|
||||
soff = offset_in_page(soff);
|
||||
|
||||
n = slen / PAGE_SIZE;
|
||||
n += (offset_in_page(slen) + soff - 1) / PAGE_SIZE;
|
||||
n = (slen - 1) / PAGE_SIZE;
|
||||
n += (offset_in_page(slen - 1) + soff) / PAGE_SIZE;
|
||||
if (PageHighMem(nth_page(spage, n)) &&
|
||||
size_add(soff, slen) > PAGE_SIZE)
|
||||
break;
|
||||
@ -243,9 +243,9 @@ static int scomp_acomp_comp_decomp(struct acomp_req *req, int dir)
|
||||
dpage = nth_page(dpage, doff / PAGE_SIZE);
|
||||
doff = offset_in_page(doff);
|
||||
|
||||
n = dlen / PAGE_SIZE;
|
||||
n += (offset_in_page(dlen) + doff - 1) / PAGE_SIZE;
|
||||
if (PageHighMem(dpage + n) &&
|
||||
n = (dlen - 1) / PAGE_SIZE;
|
||||
n += (offset_in_page(dlen - 1) + doff) / PAGE_SIZE;
|
||||
if (PageHighMem(nth_page(dpage, n)) &&
|
||||
size_add(doff, dlen) > PAGE_SIZE)
|
||||
break;
|
||||
dst = kmap_local_page(dpage) + doff;
|
||||
|
Loading…
Reference in New Issue
Block a user