All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] airo: fix setting zero length WEP key
@ 2010-02-02 14:34 Stanislaw Gruszka
  2010-02-02 18:32 ` Chris Siebenmann
                   ` (2 more replies)
  0 siblings, 3 replies; 38+ messages in thread
From: Stanislaw Gruszka @ 2010-02-02 14:34 UTC (permalink / raw)
  To: linux-wireless
  Cc: stable, John W. Linville, Chris Siebenmann, Dan Williams,
	Stanislaw Gruszka

Patch prevents call set_wep_key() with zero key length. That fix long
standing regression since commit c0380693520b1a1e4f756799a0edc379378b462a
"airo: clean up WEP key operations". Additionally print call trace when
someone will try to use improper parameters, and remove key.len = 0
assignment, because it is in not possible code path.

Reported-and-bisected-by: Chris Siebenmann <cks-rhbugzilla@cs.toronto.edu>
Cc: Dan Williams <dcbw@redhat.com>
Cc: <stable@kernel.org>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
 drivers/net/wireless/airo.c |   34 ++++++++++++++++++----------------
 1 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index 4331d67..2a9f029 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -5254,11 +5254,7 @@ static int set_wep_key(struct airo_info *ai, u16 index, const char *key,
 	WepKeyRid wkr;
 	int rc;
 
-	if (keylen == 0) {
-		airo_print_err(ai->dev->name, "%s: key length to set was zero",
-			       __func__);
-		return -1;
-	}
+	WARN_ON(keylen == 0);
 
 	memset(&wkr, 0, sizeof(wkr));
 	wkr.len = cpu_to_le16(sizeof(wkr));
@@ -6405,11 +6401,7 @@ static int airo_set_encode(struct net_device *dev,
 		if (dwrq->length > MIN_KEY_SIZE)
 			key.len = MAX_KEY_SIZE;
 		else
-			if (dwrq->length > 0)
-				key.len = MIN_KEY_SIZE;
-			else
-				/* Disable the key */
-				key.len = 0;
+			key.len = MIN_KEY_SIZE;
 		/* Check if the key is not marked as invalid */
 		if(!(dwrq->flags & IW_ENCODE_NOKEY)) {
 			/* Cleanup */
@@ -6590,12 +6582,22 @@ static int airo_set_encodeext(struct net_device *dev,
 		default:
 			return -EINVAL;
 		}
-		/* Send the key to the card */
-		rc = set_wep_key(local, idx, key.key, key.len, perm, 1);
-		if (rc < 0) {
-			airo_print_err(local->dev->name, "failed to set WEP key"
-			               " at index %d: %d.", idx, rc);
-			return rc;
+		if (key.len == 0) {
+			rc = set_wep_tx_idx(local, idx, perm, 1);
+			if (rc < 0) {
+				airo_print_err(local->dev->name,
+					       "failed to set WEP transmit index to %d: %d.",
+					       idx, rc);
+				return rc;
+			}
+		} else {
+			rc = set_wep_key(local, idx, key.key, key.len, perm, 1);
+			if (rc < 0) {
+				airo_print_err(local->dev->name,
+					       "failed to set WEP key at index %d: %d.",
+					       idx, rc);
+				return rc;
+			}
 		}
 	}
 
-- 
1.6.2.5


^ permalink raw reply related	[flat|nested] 38+ messages in thread

end of thread, other threads:[~2010-03-01  7:49 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-02 14:34 [PATCH] airo: fix setting zero length WEP key Stanislaw Gruszka
2010-02-02 18:32 ` Chris Siebenmann
2010-02-03 20:43 ` Dan Williams
2010-02-03 21:31   ` Chris Siebenmann
2010-02-04 21:44     ` Dan Williams
2010-02-04 22:10       ` Chris Siebenmann
2010-02-04 22:18         ` Dan Williams
2010-02-04 22:26           ` Chris Siebenmann
2010-02-04 22:39             ` Dan Williams
2010-02-04 22:42               ` Chris Siebenmann
2010-02-04 23:00                 ` Dan Williams
2010-02-04 23:03                   ` Chris Siebenmann
2010-02-04 23:26                     ` Dan Williams
2010-02-04 23:30                       ` Dan Williams
2010-02-04 23:36                       ` Chris Siebenmann
2010-02-05  6:57                         ` Dan Williams
2010-02-04 12:04   ` Stanislaw Gruszka
2010-02-04 12:07 ` [PATCH v2] " Stanislaw Gruszka
2010-02-04 16:41   ` Chris Siebenmann
2010-02-04 23:56   ` Dan Williams
2010-02-05  9:11     ` Stanislaw Gruszka
2010-02-05  6:59   ` Dan Williams
2010-02-05  7:06     ` [PATCH] airo: fix WEP key clearing after c0380693520b1a1e4f756799a0edc379378b462a Dan Williams
2010-02-05 16:26       ` Chris Siebenmann
2010-02-05 19:20         ` Dan Williams
2010-02-05 23:12           ` Chris Siebenmann
2010-02-08 23:47             ` Dan Williams
2010-02-09 16:25               ` Chris Siebenmann
2010-02-09 17:17               ` Chris Siebenmann
2010-02-08 20:55     ` [PATCH v2] airo: fix setting zero length WEP key John W. Linville
2010-02-08 23:44       ` Dan Williams
2010-02-08 20:53   ` John W. Linville
2010-02-09  8:27     ` [PATCH] airo: return from set_wep_key() when key length is zero Stanislaw Gruszka
2010-02-26 14:10     ` [PATCH resend] " Stanislaw Gruszka
2010-02-26 23:09       ` Dan Williams
2010-02-27  1:26         ` John W. Linville
2010-03-01  7:47           ` Stanislaw Gruszka
2010-02-26 23:09   ` [PATCH v2] airo: fix setting zero length WEP key Dan Williams

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.