[MAC80211]: fix key debugfs
This fixes two issues with the key debugfs: 1) key index obviously isn't unique 2) various missing break statements led to bogus output Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Acked-by: Michael Wu <flamingice@sourmilk.net> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
2a8a9a88fc
commit
50339a67e2
@ -77,14 +77,17 @@ static ssize_t key_tx_spec_read(struct file *file, char __user *userbuf,
|
|||||||
switch (key->alg) {
|
switch (key->alg) {
|
||||||
case ALG_WEP:
|
case ALG_WEP:
|
||||||
len = scnprintf(buf, sizeof(buf), "\n");
|
len = scnprintf(buf, sizeof(buf), "\n");
|
||||||
|
break;
|
||||||
case ALG_TKIP:
|
case ALG_TKIP:
|
||||||
len = scnprintf(buf, sizeof(buf), "%08x %04x\n",
|
len = scnprintf(buf, sizeof(buf), "%08x %04x\n",
|
||||||
key->u.tkip.iv32,
|
key->u.tkip.iv32,
|
||||||
key->u.tkip.iv16);
|
key->u.tkip.iv16);
|
||||||
|
break;
|
||||||
case ALG_CCMP:
|
case ALG_CCMP:
|
||||||
tpn = key->u.ccmp.tx_pn;
|
tpn = key->u.ccmp.tx_pn;
|
||||||
len = scnprintf(buf, sizeof(buf), "%02x%02x%02x%02x%02x%02x\n",
|
len = scnprintf(buf, sizeof(buf), "%02x%02x%02x%02x%02x%02x\n",
|
||||||
tpn[0], tpn[1], tpn[2], tpn[3], tpn[4], tpn[5]);
|
tpn[0], tpn[1], tpn[2], tpn[3], tpn[4], tpn[5]);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -103,6 +106,7 @@ static ssize_t key_rx_spec_read(struct file *file, char __user *userbuf,
|
|||||||
switch (key->alg) {
|
switch (key->alg) {
|
||||||
case ALG_WEP:
|
case ALG_WEP:
|
||||||
len = scnprintf(buf, sizeof(buf), "\n");
|
len = scnprintf(buf, sizeof(buf), "\n");
|
||||||
|
break;
|
||||||
case ALG_TKIP:
|
case ALG_TKIP:
|
||||||
for (i = 0; i < NUM_RX_DATA_QUEUES; i++)
|
for (i = 0; i < NUM_RX_DATA_QUEUES; i++)
|
||||||
p += scnprintf(p, sizeof(buf)+buf-p,
|
p += scnprintf(p, sizeof(buf)+buf-p,
|
||||||
@ -110,6 +114,7 @@ static ssize_t key_rx_spec_read(struct file *file, char __user *userbuf,
|
|||||||
key->u.tkip.iv32_rx[i],
|
key->u.tkip.iv32_rx[i],
|
||||||
key->u.tkip.iv16_rx[i]);
|
key->u.tkip.iv16_rx[i]);
|
||||||
len = p - buf;
|
len = p - buf;
|
||||||
|
break;
|
||||||
case ALG_CCMP:
|
case ALG_CCMP:
|
||||||
for (i = 0; i < NUM_RX_DATA_QUEUES; i++) {
|
for (i = 0; i < NUM_RX_DATA_QUEUES; i++) {
|
||||||
rpn = key->u.ccmp.rx_pn[i];
|
rpn = key->u.ccmp.rx_pn[i];
|
||||||
@ -119,6 +124,7 @@ static ssize_t key_rx_spec_read(struct file *file, char __user *userbuf,
|
|||||||
rpn[3], rpn[4], rpn[5]);
|
rpn[3], rpn[4], rpn[5]);
|
||||||
}
|
}
|
||||||
len = p - buf;
|
len = p - buf;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -164,12 +170,14 @@ KEY_OPS(key);
|
|||||||
void ieee80211_debugfs_key_add(struct ieee80211_local *local,
|
void ieee80211_debugfs_key_add(struct ieee80211_local *local,
|
||||||
struct ieee80211_key *key)
|
struct ieee80211_key *key)
|
||||||
{
|
{
|
||||||
|
static int keycount;
|
||||||
char buf[20];
|
char buf[20];
|
||||||
|
|
||||||
if (!local->debugfs.keys)
|
if (!local->debugfs.keys)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sprintf(buf, "%d", key->keyidx);
|
sprintf(buf, "%d", keycount);
|
||||||
|
keycount++;
|
||||||
key->debugfs.dir = debugfs_create_dir(buf,
|
key->debugfs.dir = debugfs_create_dir(buf,
|
||||||
local->debugfs.keys);
|
local->debugfs.keys);
|
||||||
|
|
||||||
@ -239,7 +247,7 @@ void ieee80211_debugfs_key_sta_link(struct ieee80211_key *key,
|
|||||||
if (!key->debugfs.dir)
|
if (!key->debugfs.dir)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sprintf(buf, "../sta/" MAC_FMT, MAC_ARG(sta->addr));
|
sprintf(buf, "../../stations/" MAC_FMT, MAC_ARG(sta->addr));
|
||||||
key->debugfs.stalink =
|
key->debugfs.stalink =
|
||||||
debugfs_create_symlink("station", key->debugfs.dir, buf);
|
debugfs_create_symlink("station", key->debugfs.dir, buf);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user