linux-wireless.vger.kernel.org archive mirror
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).