crypto: scatterwalk - Inline start/map/done
authorHerbert Xu <herbert@gondor.apana.org.au>
Tue, 12 Jul 2016 05:18:00 +0000 (13:18 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 18 Jul 2016 09:35:50 +0000 (17:35 +0800)
This patch inlines the functions scatterwalk_start, scatterwalk_map
and scatterwalk_done as they're all tiny and mostly used by the block
cipher walker.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/scatterwalk.c
include/crypto/scatterwalk.h

index ddffbb3..52ce17a 100644 (file)
@@ -18,8 +18,6 @@
 #include <linux/kernel.h>
 #include <linux/mm.h>
 #include <linux/module.h>
-#include <linux/pagemap.h>
-#include <linux/highmem.h>
 #include <linux/scatterlist.h>
 
 static inline void memcpy_dir(void *buf, void *sgdata, size_t nbytes, int out)
@@ -30,47 +28,6 @@ static inline void memcpy_dir(void *buf, void *sgdata, size_t nbytes, int out)
        memcpy(dst, src, nbytes);
 }
 
-void scatterwalk_start(struct scatter_walk *walk, struct scatterlist *sg)
-{
-       walk->sg = sg;
-       walk->offset = sg->offset;
-}
-EXPORT_SYMBOL_GPL(scatterwalk_start);
-
-void *scatterwalk_map(struct scatter_walk *walk)
-{
-       return kmap_atomic(scatterwalk_page(walk)) +
-              offset_in_page(walk->offset);
-}
-EXPORT_SYMBOL_GPL(scatterwalk_map);
-
-static void scatterwalk_pagedone(struct scatter_walk *walk, int out,
-                                unsigned int more)
-{
-       if (out) {
-               struct page *page;
-
-               page = sg_page(walk->sg) + ((walk->offset - 1) >> PAGE_SHIFT);
-               /* Test ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE first as
-                * PageSlab cannot be optimised away per se due to
-                * use of volatile pointer.
-                */
-               if (ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE && !PageSlab(page))
-                       flush_dcache_page(page);
-       }
-
-       if (more && walk->offset >= walk->sg->offset + walk->sg->length)
-               scatterwalk_start(walk, sg_next(walk->sg));
-}
-
-void scatterwalk_done(struct scatter_walk *walk, int out, int more)
-{
-       if (!more || walk->offset >= walk->sg->offset + walk->sg->length ||
-           !(walk->offset & (PAGE_SIZE - 1)))
-               scatterwalk_pagedone(walk, out, more);
-}
-EXPORT_SYMBOL_GPL(scatterwalk_done);
-
 void scatterwalk_copychunks(void *buf, struct scatter_walk *walk,
                            size_t nbytes, int out)
 {
index 7e1a336..880e6be 100644 (file)
 #ifndef _CRYPTO_SCATTERWALK_H
 #define _CRYPTO_SCATTERWALK_H
 
-#include <asm/kmap_types.h>
 #include <crypto/algapi.h>
-#include <linux/hardirq.h>
 #include <linux/highmem.h>
 #include <linux/kernel.h>
-#include <linux/mm.h>
 #include <linux/scatterlist.h>
-#include <linux/sched.h>
 
 static inline void scatterwalk_crypto_chain(struct scatterlist *head,
                                            struct scatterlist *sg,
@@ -83,11 +79,49 @@ static inline void scatterwalk_unmap(void *vaddr)
        kunmap_atomic(vaddr);
 }
 
-void scatterwalk_start(struct scatter_walk *walk, struct scatterlist *sg);
+static inline void scatterwalk_start(struct scatter_walk *walk,
+                                    struct scatterlist *sg)
+{
+       walk->sg = sg;
+       walk->offset = sg->offset;
+}
+
+static inline void *scatterwalk_map(struct scatter_walk *walk)
+{
+       return kmap_atomic(scatterwalk_page(walk)) +
+              offset_in_page(walk->offset);
+}
+
+static inline void scatterwalk_pagedone(struct scatter_walk *walk, int out,
+                                       unsigned int more)
+{
+       if (out) {
+               struct page *page;
+
+               page = sg_page(walk->sg) + ((walk->offset - 1) >> PAGE_SHIFT);
+               /* Test ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE first as
+                * PageSlab cannot be optimised away per se due to
+                * use of volatile pointer.
+                */
+               if (ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE && !PageSlab(page))
+                       flush_dcache_page(page);
+       }
+
+       if (more && walk->offset >= walk->sg->offset + walk->sg->length)
+               scatterwalk_start(walk, sg_next(walk->sg));
+}
+
+static inline void scatterwalk_done(struct scatter_walk *walk, int out,
+                                   int more)
+{
+       if (!more || walk->offset >= walk->sg->offset + walk->sg->length ||
+           !(walk->offset & (PAGE_SIZE - 1)))
+               scatterwalk_pagedone(walk, out, more);
+}
+
 void scatterwalk_copychunks(void *buf, struct scatter_walk *walk,
                            size_t nbytes, int out);
 void *scatterwalk_map(struct scatter_walk *walk);
-void scatterwalk_done(struct scatter_walk *walk, int out, int more);
 
 void scatterwalk_map_and_copy(void *buf, struct scatterlist *sg,
                              unsigned int start, unsigned int nbytes, int out);