Andy Lutomirski <luto@xxxxxxxxxx> wrote: > - skcipher_request_set_crypt(req, &sg[1], &sg[0], sizeof(tmpbuf), iv.x); > + skcipher_request_set_crypt(req, &sg, &sg, sizeof(tmpbuf), iv.x); Don't the sg's have to be different? Aren't they both altered by the process of reading/writing from them? > struct rxrpc_skb_priv *sp; > ... > + swap(tmpbuf.xl, *(__be64 *)sp); > + > + sg_init_one(&sg, sp, sizeof(tmpbuf)); ???? I assume you're assuming that the rxrpc_skb_priv struct contents can arbitrarily replaced temporarily... And using an XCHG-equivalent instruction? This won't work on a 32-bit arch (apart from one that sports CMPXCHG8 or similar). > /* > - * load a scatterlist with a potentially split-page buffer > + * load a scatterlist > */ > -static void rxkad_sg_set_buf2(struct scatterlist sg[2], > +static void rxkad_sg_set_buf2(struct scatterlist sg[1], > void *buf, size_t buflen) > { > - int nsg = 1; > - > - sg_init_table(sg, 2); > - > + sg_init_table(sg, 1); > sg_set_buf(&sg[0], buf, buflen); > - if (sg[0].offset + buflen > PAGE_SIZE) { > - /* the buffer was split over two pages */ > - sg[0].length = PAGE_SIZE - sg[0].offset; > - sg_set_buf(&sg[1], buf + sg[0].length, buflen - sg[0].length); > - nsg++; > - } > - > - sg_mark_end(&sg[nsg - 1]); > - > - ASSERTCMP(sg[0].length + sg[1].length, ==, buflen); > } This should be a separate patch. David -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html