Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 16054407 authored by Herbert Xu's avatar Herbert Xu
Browse files

crypto: scatterwalk - Hide PageSlab call to optimise away flush_dcache_page



On architectures where flush_dcache_page is not needed, we will
end up generating all the code up to the PageSlab call.  This is
because PageSlab operates on a volatile pointer and thus cannot
be optimised away.

This patch works around this by checking whether flush_dcache_page
is needed before we call PageSlab which then allows PageSlab to be
compiled awy.

Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent b7c89d9e
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -54,7 +54,11 @@ static void scatterwalk_pagedone(struct scatter_walk *walk, int out,
		struct page *page;

		page = sg_page(walk->sg) + ((walk->offset - 1) >> PAGE_SHIFT);
		if (!PageSlab(page))
		/* 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);
	}