crypto: chelsio - Resetting crypto counters during the driver unregister
authorAyush Sawal <ayush.sawal@chelsio.com>
Fri, 3 Jan 2020 04:56:51 +0000 (10:26 +0530)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 9 Jan 2020 03:30:58 +0000 (11:30 +0800)
Signed-off-by: Ayush Sawal <ayush.sawal@chelsio.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/chelsio/chcr_core.c

index 029a735..e937605 100644 (file)
@@ -132,8 +132,6 @@ static void chcr_dev_init(struct uld_ctx *u_ctx)
 
 static int chcr_dev_move(struct uld_ctx *u_ctx)
 {
-       struct adapter *adap;
-
         mutex_lock(&drv_data.drv_mutex);
        if (drv_data.last_dev == u_ctx) {
                if (list_is_last(&drv_data.last_dev->entry, &drv_data.act_dev))
@@ -146,8 +144,6 @@ static int chcr_dev_move(struct uld_ctx *u_ctx)
        list_move(&u_ctx->entry, &drv_data.inact_dev);
        if (list_empty(&drv_data.act_dev))
                drv_data.last_dev = NULL;
-       adap = padap(&u_ctx->dev);
-       memset(&adap->chcr_stats, 0, sizeof(adap->chcr_stats));
        atomic_dec(&drv_data.dev_count);
        mutex_unlock(&drv_data.drv_mutex);
 
@@ -299,17 +295,21 @@ static int __init chcr_crypto_init(void)
 static void __exit chcr_crypto_exit(void)
 {
        struct uld_ctx *u_ctx, *tmp;
+       struct adapter *adap;
 
        stop_crypto();
-
        cxgb4_unregister_uld(CXGB4_ULD_CRYPTO);
        /* Remove all devices from list */
        mutex_lock(&drv_data.drv_mutex);
        list_for_each_entry_safe(u_ctx, tmp, &drv_data.act_dev, entry) {
+               adap = padap(&u_ctx->dev);
+               memset(&adap->chcr_stats, 0, sizeof(adap->chcr_stats));
                list_del(&u_ctx->entry);
                kfree(u_ctx);
        }
        list_for_each_entry_safe(u_ctx, tmp, &drv_data.inact_dev, entry) {
+               adap = padap(&u_ctx->dev);
+               memset(&adap->chcr_stats, 0, sizeof(adap->chcr_stats));
                list_del(&u_ctx->entry);
                kfree(u_ctx);
        }