Am Dienstag, 21. März 2017, 14:23:31 CET schrieb Harsh Jain: Hi Harsh, > Yes, Driver can figure out when to discard dst SGL but for that Driver > has to put checks before accessing dst SGL. Isn't better if AF_ALG > sends NULL for dst SGL. With the code in [1], the first longer patch is planned to be merged after the memory management changes are agreed upon. That patch contains: + /* chain the areq TX SGL holding the tag with RX SGL */ + if (!last_rsgl) { + /* no RX SGL present (e.g. only authentication) */ + sg_init_table(areq->first_rsgl.sgl.sg, 2); + sg_chain(areq->first_rsgl.sgl.sg, 2, areq->tsgl); + } else { + /* RX SGL present */ + struct af_alg_sgl *sgl_prev = &last_rsgl->sgl; + + sg_unmark_end(sgl_prev->sg + sgl_prev->npages - 1); + sg_chain(sgl_prev->sg, sgl_prev->npages + 1, areq- >tsgl); + } This code snipped would exactly do what you want: the SGL is always initialized. Besides, the code will do an in-place cipher operation. https://www.spinics.net/lists/linux-crypto/msg24343.html Ciao Stephan