Skip to content

Commit

Permalink
crypto: qat - Don't attempt to register algorithm multiple times
Browse files Browse the repository at this point in the history
When multiple devices are present in the system the driver attempts
to register the same algorithm many times.

Changes in v2:
 - use proper synchronization mechanizm between register and unregister

Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
  • Loading branch information
Tadeusz Struk authored and Herbert Xu committed Jul 23, 2015
1 parent 3cf080a commit 8f5ea2d
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions drivers/crypto/qat/qat_common/qat_asym_algs.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@
#include "adf_common_drv.h"
#include "qat_crypto.h"

static DEFINE_MUTEX(algs_lock);
static unsigned int active_devs;

struct qat_rsa_input_params {
union {
struct {
Expand Down Expand Up @@ -629,11 +632,21 @@ static struct akcipher_alg rsa = {

int qat_asym_algs_register(void)
{
rsa.base.cra_flags = 0;
return crypto_register_akcipher(&rsa);
int ret = 0;

mutex_lock(&algs_lock);
if (++active_devs == 1) {
rsa.base.cra_flags = 0;
ret = crypto_register_akcipher(&rsa);
}
mutex_unlock(&algs_lock);
return ret;
}

void qat_asym_algs_unregister(void)
{
crypto_unregister_akcipher(&rsa);
mutex_lock(&algs_lock);
if (--active_devs == 0)
crypto_unregister_akcipher(&rsa);
mutex_unlock(&algs_lock);
}

0 comments on commit 8f5ea2d

Please sign in to comment.