Commit 7b9b04fb authored by David S. Miller's avatar David S. Miller

Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless

John W. Linville says:

====================
These fixes are intended for the 3.6 stream.

Hauke Mehrtens provides a pair of bcma fixes, one to fix a build
regression on mips and another to correct a pair of missing iounmap
calls.

Thomas Huehn offers a mac80211_hwsim fix to avoid a possible
use-after-free bug.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 59ea33a6 28ea499a
...@@ -131,7 +131,7 @@ static void bcma_core_mips_set_irq(struct bcma_device *dev, unsigned int irq) ...@@ -131,7 +131,7 @@ static void bcma_core_mips_set_irq(struct bcma_device *dev, unsigned int irq)
/* backplane irq line is in use, find out who uses /* backplane irq line is in use, find out who uses
* it and set user to irq 0 * it and set user to irq 0
*/ */
list_for_each_entry_reverse(core, &bus->cores, list) { list_for_each_entry(core, &bus->cores, list) {
if ((1 << bcma_core_mips_irqflag(core)) == if ((1 << bcma_core_mips_irqflag(core)) ==
oldirqflag) { oldirqflag) {
bcma_core_mips_set_irq(core, 0); bcma_core_mips_set_irq(core, 0);
...@@ -161,7 +161,7 @@ static void bcma_core_mips_dump_irq(struct bcma_bus *bus) ...@@ -161,7 +161,7 @@ static void bcma_core_mips_dump_irq(struct bcma_bus *bus)
{ {
struct bcma_device *core; struct bcma_device *core;
list_for_each_entry_reverse(core, &bus->cores, list) { list_for_each_entry(core, &bus->cores, list) {
bcma_core_mips_print_irq(core, bcma_core_mips_irq(core)); bcma_core_mips_print_irq(core, bcma_core_mips_irq(core));
} }
} }
...@@ -224,7 +224,7 @@ void bcma_core_mips_init(struct bcma_drv_mips *mcore) ...@@ -224,7 +224,7 @@ void bcma_core_mips_init(struct bcma_drv_mips *mcore)
mcore->assigned_irqs = 1; mcore->assigned_irqs = 1;
/* Assign IRQs to all cores on the bus */ /* Assign IRQs to all cores on the bus */
list_for_each_entry_reverse(core, &bus->cores, list) { list_for_each_entry(core, &bus->cores, list) {
int mips_irq; int mips_irq;
if (core->irq) if (core->irq)
continue; continue;
......
...@@ -462,8 +462,10 @@ int bcma_bus_scan(struct bcma_bus *bus) ...@@ -462,8 +462,10 @@ int bcma_bus_scan(struct bcma_bus *bus)
while (eromptr < eromend) { while (eromptr < eromend) {
struct bcma_device *other_core; struct bcma_device *other_core;
struct bcma_device *core = kzalloc(sizeof(*core), GFP_KERNEL); struct bcma_device *core = kzalloc(sizeof(*core), GFP_KERNEL);
if (!core) if (!core) {
return -ENOMEM; err = -ENOMEM;
goto out;
}
INIT_LIST_HEAD(&core->list); INIT_LIST_HEAD(&core->list);
core->bus = bus; core->bus = bus;
...@@ -478,7 +480,7 @@ int bcma_bus_scan(struct bcma_bus *bus) ...@@ -478,7 +480,7 @@ int bcma_bus_scan(struct bcma_bus *bus)
} else if (err == -ESPIPE) { } else if (err == -ESPIPE) {
break; break;
} }
return err; goto out;
} }
core->core_index = core_num++; core->core_index = core_num++;
...@@ -494,10 +496,12 @@ int bcma_bus_scan(struct bcma_bus *bus) ...@@ -494,10 +496,12 @@ int bcma_bus_scan(struct bcma_bus *bus)
list_add_tail(&core->list, &bus->cores); list_add_tail(&core->list, &bus->cores);
} }
err = 0;
out:
if (bus->hosttype == BCMA_HOSTTYPE_SOC) if (bus->hosttype == BCMA_HOSTTYPE_SOC)
iounmap(eromptr); iounmap(eromptr);
return 0; return err;
} }
int __init bcma_bus_scan_early(struct bcma_bus *bus, int __init bcma_bus_scan_early(struct bcma_bus *bus,
...@@ -537,7 +541,7 @@ int __init bcma_bus_scan_early(struct bcma_bus *bus, ...@@ -537,7 +541,7 @@ int __init bcma_bus_scan_early(struct bcma_bus *bus,
else if (err == -ESPIPE) else if (err == -ESPIPE)
break; break;
else if (err < 0) else if (err < 0)
return err; goto out;
core->core_index = core_num++; core->core_index = core_num++;
bus->nr_cores++; bus->nr_cores++;
...@@ -551,6 +555,7 @@ int __init bcma_bus_scan_early(struct bcma_bus *bus, ...@@ -551,6 +555,7 @@ int __init bcma_bus_scan_early(struct bcma_bus *bus,
break; break;
} }
out:
if (bus->hosttype == BCMA_HOSTTYPE_SOC) if (bus->hosttype == BCMA_HOSTTYPE_SOC)
iounmap(eromptr); iounmap(eromptr);
......
...@@ -739,11 +739,6 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw, struct sk_buff *skb) ...@@ -739,11 +739,6 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
txi = IEEE80211_SKB_CB(skb); txi = IEEE80211_SKB_CB(skb);
if (txi->control.vif)
hwsim_check_magic(txi->control.vif);
if (txi->control.sta)
hwsim_check_sta_magic(txi->control.sta);
ieee80211_tx_info_clear_status(txi); ieee80211_tx_info_clear_status(txi);
/* frame was transmitted at most favorable rate at first attempt */ /* frame was transmitted at most favorable rate at first attempt */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment