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

Commit c3bc38d9 authored by Aaro Koskinen's avatar Aaro Koskinen Committed by Herbert Xu
Browse files

crypto: octeon - always disable preemption when using crypto engine



Always disable preemption on behalf of the drivers when crypto engine
is taken into use. This will simplify the usage.

Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 9b2de7ff
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
 * crypto operations in calls to octeon_crypto_enable/disable in order to make
 * sure the state of COP2 isn't corrupted if userspace is also performing
 * hardware crypto operations. Allocate the state parameter on the stack.
 * Preemption must be disabled to prevent context switches.
 * Returns with preemption disabled.
 *
 * @state: Pointer to state structure to store current COP2 state in.
 *
@@ -28,6 +28,7 @@ unsigned long octeon_crypto_enable(struct octeon_cop2_state *state)
	int status;
	unsigned long flags;

	preempt_disable();
	local_irq_save(flags);
	status = read_c0_status();
	write_c0_status(status | ST0_CU2);
@@ -62,5 +63,6 @@ void octeon_crypto_disable(struct octeon_cop2_state *state,
	else
		write_c0_status(read_c0_status() & ~ST0_CU2);
	local_irq_restore(flags);
	preempt_enable();
}
EXPORT_SYMBOL_GPL(octeon_crypto_disable);
+0 −4
Original line number Diff line number Diff line
@@ -97,7 +97,6 @@ static int octeon_md5_update(struct shash_desc *desc, const u8 *data,
	memcpy((char *)mctx->block + (sizeof(mctx->block) - avail), data,
	       avail);

	preempt_disable();
	flags = octeon_crypto_enable(&state);
	octeon_md5_store_hash(mctx);

@@ -113,7 +112,6 @@ static int octeon_md5_update(struct shash_desc *desc, const u8 *data,

	octeon_md5_read_hash(mctx);
	octeon_crypto_disable(&state, flags);
	preempt_enable();

	memcpy(mctx->block, data, len);

@@ -131,7 +129,6 @@ static int octeon_md5_final(struct shash_desc *desc, u8 *out)

	*p++ = 0x80;

	preempt_disable();
	flags = octeon_crypto_enable(&state);
	octeon_md5_store_hash(mctx);

@@ -149,7 +146,6 @@ static int octeon_md5_final(struct shash_desc *desc, u8 *out)

	octeon_md5_read_hash(mctx);
	octeon_crypto_disable(&state, flags);
	preempt_enable();

	memcpy(out, mctx->hash, sizeof(mctx->hash));
	memset(mctx, 0, sizeof(*mctx));