Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp266549ybt; Thu, 25 Jun 2020 21:55:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwarRayEsMxSnw7b4ovhRZdKO5WoEogogMoj7Ogacw0mOMr4767CEHdBdQ61crgMw4C+to4 X-Received: by 2002:a05:6402:741:: with SMTP id p1mr1527711edy.222.1593147318122; Thu, 25 Jun 2020 21:55:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593147318; cv=none; d=google.com; s=arc-20160816; b=iBZQJCyEARAyovWefcyZg0QPPzSUVb3FoxcHqfKbNc2m++ywK8ecQWGPYqdmwsS67X WuXm35fFKt3BsZv+zaqb4qcmzKG44psm3Bh2K6MIluKfsM9ch7KpLQyWpgAF6hEE48Cx oUAe5QCWWH7MEcE8GrA7GXhmHnh3I6zuGqLb0nrJoBUSWziEPWVoJQng50omJhcV/+qh UnoFfdi77Ejl79vRowMSn+mFAv9i/guknulY4iNTKL9GGwOAcKWCBxrzdruzJ/7c71wr 7vmdEUXoWy0Q3shwrN59duxD/SSktsFQ6PvcuNppRXyPObr8wKselF6/0E/uedScvSpv WTWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=ZvrieoobIXFCd1Tpq6ShIJaXgqeN7M7GDyWD2qXpJX0=; b=b+OkUjB1jNQnxbxNcxbj/BUdjEF6a+dW4rGDz6svxkvjETw+nXdjjbUXMZW+fUAS37 ppQp8toZzdZBboFE6UoCavLGf6PBl9QygFxpNPTOVwSP3SEstPNPjs3RVXyTiu8JTeRn Wjl6nxZ9geUS3t3mQRYopWUeMVlRV5cUs0xz2uJhBLHhRvOmlayrZ1Bp5FCVF4cMbwYI p2bPIpxhzzNuH3w+3X/T9VgZrZSAKuTTDWDxPaelUj7JnToXTDAbDr7x8rceZXJnFwTY TOvI+S1BhfiRA6y4/TUqHDi02aG4jHm8ZDktii8dIEOWczrf5mohVTUCAeFKveEZjLYQ xG5w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f15si7383906edt.552.2020.06.25.21.54.46; Thu, 25 Jun 2020 21:55:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726643AbgFZEcT (ORCPT + 99 others); Fri, 26 Jun 2020 00:32:19 -0400 Received: from helcar.hmeau.com ([216.24.177.18]:51738 "EHLO fornost.hmeau.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726607AbgFZEcT (ORCPT ); Fri, 26 Jun 2020 00:32:19 -0400 Received: from gwarestrin.arnor.me.apana.org.au ([192.168.0.7]) by fornost.hmeau.com with smtp (Exim 4.92 #5 (Debian)) id 1jog1s-0003Vg-39; Fri, 26 Jun 2020 14:31:57 +1000 Received: by gwarestrin.arnor.me.apana.org.au (sSMTP sendmail emulation); Fri, 26 Jun 2020 14:31:56 +1000 Date: Fri, 26 Jun 2020 14:31:56 +1000 From: Herbert Xu To: Tero Kristo Cc: davem@davemloft.net, linux-crypto@vger.kernel.org, linux-arm-kernel@lists.infradead.org, j-keerthy@ti.com Subject: Re: [PATCHv4 3/7] crypto: sa2ul: add sha1/sha256/sha512 support Message-ID: <20200626043155.GA2683@gondor.apana.org.au> References: <20200615071452.25141-1-t-kristo@ti.com> <20200615071452.25141-4-t-kristo@ti.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200615071452.25141-4-t-kristo@ti.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org On Mon, Jun 15, 2020 at 10:14:48AM +0300, Tero Kristo wrote: > > +static int sa_sha_update(struct ahash_request *req) > +{ > + struct sa_sha_req_ctx *rctx = ahash_request_ctx(req); > + struct scatterlist *sg; > + void *buf; > + int pages; > + struct page *pg; > + > + if (!req->nbytes) > + return 0; > + > + if (rctx->buf_free >= req->nbytes) { > + pg = sg_page(rctx->sg_next); > + buf = kmap_atomic(pg); > + scatterwalk_map_and_copy(buf + rctx->offset, req->src, 0, > + req->nbytes, 0); > + kunmap_atomic(buf); > + rctx->buf_free -= req->nbytes; > + rctx->sg_next->length += req->nbytes; > + rctx->offset += req->nbytes; > + } else { > + pages = get_order(req->nbytes); > + buf = (void *)__get_free_pages(GFP_ATOMIC, pages); > + if (!buf) > + return -ENOMEM; > + > + sg = kzalloc(sizeof(*sg) * 2, GFP_KERNEL); > + if (!sg) > + return -ENOMEM; > + > + sg_init_table(sg, 1); > + sg_set_buf(sg, buf, req->nbytes); > + scatterwalk_map_and_copy(buf, req->src, 0, req->nbytes, 0); > + > + rctx->buf_free = (PAGE_SIZE << pages) - req->nbytes; > + > + if (rctx->sg_next) { > + sg_unmark_end(rctx->sg_next); > + sg_chain(rctx->sg_next, 2, sg); > + } else { > + rctx->src = sg; > + } > + > + rctx->sg_next = sg; > + rctx->src_nents++; > + > + rctx->offset = req->nbytes; > + } > + > + rctx->len += req->nbytes; > + > + return 0; > +} This is not how it's supposed to work. To support the partial hashing interface, you must actually hash the data and not just save it in your context. Otherwise your export is completely meaningless. If your hardware cannot export partially hashed state, then you should use a software fallback for everything but digest. Cheers, -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt