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: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
b7c89d9e2f
commit
160544075f
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user