aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/crypto/chelsio/chcr_algo.c13
-rw-r--r--drivers/crypto/chelsio/chcr_core.c4
2 files changed, 3 insertions, 14 deletions
diff --git a/drivers/crypto/chelsio/chcr_algo.c b/drivers/crypto/chelsio/chcr_algo.c
index 8a76fce22943..73bbd499b6ff 100644
--- a/drivers/crypto/chelsio/chcr_algo.c
+++ b/drivers/crypto/chelsio/chcr_algo.c
@@ -200,17 +200,10 @@ void chcr_verify_tag(struct aead_request *req, u8 *input, int *err)
200 200
201static int chcr_inc_wrcount(struct chcr_dev *dev) 201static int chcr_inc_wrcount(struct chcr_dev *dev)
202{ 202{
203 int err = 0;
204
205 spin_lock_bh(&dev->lock_chcr_dev);
206 if (dev->state == CHCR_DETACH) 203 if (dev->state == CHCR_DETACH)
207 err = 1; 204 return 1;
208 else 205 atomic_inc(&dev->inflight);
209 atomic_inc(&dev->inflight); 206 return 0;
210
211 spin_unlock_bh(&dev->lock_chcr_dev);
212
213 return err;
214} 207}
215 208
216static inline void chcr_dec_wrcount(struct chcr_dev *dev) 209static inline void chcr_dec_wrcount(struct chcr_dev *dev)
diff --git a/drivers/crypto/chelsio/chcr_core.c b/drivers/crypto/chelsio/chcr_core.c
index 239b933d6df6..029a7354f541 100644
--- a/drivers/crypto/chelsio/chcr_core.c
+++ b/drivers/crypto/chelsio/chcr_core.c
@@ -243,15 +243,11 @@ static void chcr_detach_device(struct uld_ctx *u_ctx)
243{ 243{
244 struct chcr_dev *dev = &u_ctx->dev; 244 struct chcr_dev *dev = &u_ctx->dev;
245 245
246 spin_lock_bh(&dev->lock_chcr_dev);
247 if (dev->state == CHCR_DETACH) { 246 if (dev->state == CHCR_DETACH) {
248 spin_unlock_bh(&dev->lock_chcr_dev);
249 pr_debug("Detached Event received for already detach device\n"); 247 pr_debug("Detached Event received for already detach device\n");
250 return; 248 return;
251 } 249 }
252 dev->state = CHCR_DETACH; 250 dev->state = CHCR_DETACH;
253 spin_unlock_bh(&dev->lock_chcr_dev);
254
255 if (atomic_read(&dev->inflight) != 0) { 251 if (atomic_read(&dev->inflight) != 0) {
256 schedule_delayed_work(&dev->detach_work, WQ_DETACH_TM); 252 schedule_delayed_work(&dev->detach_work, WQ_DETACH_TM);
257 wait_for_completion(&dev->detach_comp); 253 wait_for_completion(&dev->detach_comp);