[PATCH 34/99] cw1200: Fix for unbalanced tx_lock/unlock in TX policy uploading

Dmitry Tarnyagin dmitry.tarnyagin at stericsson.com
Wed Feb 29 14:14:41 UTC 2012


Return code for queue_work was not checked, leading to leaking lock.

ST-Ericsson ID: 355166

Change-Id: I60da9c112be5765b5dd0e9a6d8d4fc4dded26534
Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin at stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/38058
Reviewed-by: Bartosz MARKOWSKI <bartosz.markowski at tieto.com>
Tested-by: Bartosz MARKOWSKI <bartosz.markowski at tieto.com>
---
 drivers/staging/cw1200/txrx.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/drivers/staging/cw1200/txrx.c b/drivers/staging/cw1200/txrx.c
index a754f6a..d868e7b 100644
--- a/drivers/staging/cw1200/txrx.c
+++ b/drivers/staging/cw1200/txrx.c
@@ -671,7 +671,11 @@ cw1200_tx_h_rate_policy(struct cw1200_common *priv,
 		/* Definetly better. TODO. */
 		wsm_lock_tx_async(priv);
 		cw1200_tx_queues_lock(priv);
-		queue_work(priv->workqueue, &priv->tx_policy_upload_work);
+		if (queue_work(priv->workqueue,
+				&priv->tx_policy_upload_work) <= 0) {
+			cw1200_tx_queues_unlock(priv);
+			wsm_unlock_tx(priv);
+		}
 	}
 	return 0;
 }
-- 
1.7.8.3



More information about the kernel mailing list