Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
authorHerbert Xu <herbert@gondor.apana.org.au>
Wed, 23 Apr 2025 01:36:39 +0000 (09:36 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 23 Apr 2025 01:36:39 +0000 (09:36 +0800)
Merge crypto tree to pick up scompress off-by-one patch.  The
merge resolution is non-trivial as the dst handling code has been
moved in front of the src.

1  2 
crypto/scompress.c

index f7ce29b4cdb8d59a855fc4dece0089964d393f7c,36934c78d1277ddf77c1f4d02b9874a5e1d1f763..8db4613150e05dd9fa17eecd28681b12dc7ac0af
@@@ -190,32 -198,15 +190,32 @@@ static int scomp_acomp_comp_decomp(stru
        if (!req->dst || !dlen)
                return -EINVAL;
  
 -      if (acomp_request_src_isvirt(req))
 +      if (dst_isvirt)
 +              dst = req->dvirt;
 +      else {
 +              if (dlen <= req->dst->length) {
 +                      dpage = sg_page(req->dst);
 +                      doff = req->dst->offset;
 +              } else
 +                      return -ENOSYS;
 +
 +              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;
++              n = (dlen - 1) / PAGE_SIZE;
++              n += (offset_in_page(dlen - 1) + doff) / PAGE_SIZE;
 +              if (PageHighMem(dpage + n) &&
 +                  size_add(doff, dlen) > PAGE_SIZE)
 +                      return -ENOSYS;
 +              dst = kmap_local_page(dpage) + doff;
 +      }
 +
 +      if (src_isvirt)
                src = req->svirt;
        else {
 -              src = scratch->src;
 +              src = NULL;
                do {
 -                      if (acomp_request_src_isfolio(req)) {
 -                              spage = folio_page(req->sfolio, 0);
 -                              soff = req->soff;
 -                      } else if (slen <= req->src->length) {
 +                      if (slen <= req->src->length) {
                                spage = sg_page(req->src);
                                soff = req->src->offset;
                        } else