diff options
author | David S. Miller <davem@davemloft.net> | 2012-07-27 17:25:40 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-27 17:25:40 -0400 |
commit | 7b9b04fb728ec0b94464ed902f3395aa592c5bcf (patch) | |
tree | 67ac35b982e779312366d834694b3e35ea07062b | |
parent | 59ea33a68a9083ac98515e4861c00e71efdc49a1 (diff) | |
parent | 28ea499ac5b90f6266a24b826c6d469fc503758c (diff) |
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: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/bcma/driver_mips.c | 6 | ||||
-rw-r--r-- | drivers/bcma/scan.c | 15 | ||||
-rw-r--r-- | drivers/net/wireless/mac80211_hwsim.c | 5 |
3 files changed, 13 insertions, 13 deletions
diff --git a/drivers/bcma/driver_mips.c b/drivers/bcma/driver_mips.c index b013b049476d..cc65b45b4368 100644 --- a/drivers/bcma/driver_mips.c +++ b/drivers/bcma/driver_mips.c | |||
@@ -131,7 +131,7 @@ static void bcma_core_mips_set_irq(struct bcma_device *dev, unsigned int irq) | |||
131 | /* backplane irq line is in use, find out who uses | 131 | /* backplane irq line is in use, find out who uses |
132 | * it and set user to irq 0 | 132 | * it and set user to irq 0 |
133 | */ | 133 | */ |
134 | list_for_each_entry_reverse(core, &bus->cores, list) { | 134 | list_for_each_entry(core, &bus->cores, list) { |
135 | if ((1 << bcma_core_mips_irqflag(core)) == | 135 | if ((1 << bcma_core_mips_irqflag(core)) == |
136 | oldirqflag) { | 136 | oldirqflag) { |
137 | bcma_core_mips_set_irq(core, 0); | 137 | bcma_core_mips_set_irq(core, 0); |
@@ -161,7 +161,7 @@ static void bcma_core_mips_dump_irq(struct bcma_bus *bus) | |||
161 | { | 161 | { |
162 | struct bcma_device *core; | 162 | struct bcma_device *core; |
163 | 163 | ||
164 | list_for_each_entry_reverse(core, &bus->cores, list) { | 164 | list_for_each_entry(core, &bus->cores, list) { |
165 | bcma_core_mips_print_irq(core, bcma_core_mips_irq(core)); | 165 | bcma_core_mips_print_irq(core, bcma_core_mips_irq(core)); |
166 | } | 166 | } |
167 | } | 167 | } |
@@ -224,7 +224,7 @@ void bcma_core_mips_init(struct bcma_drv_mips *mcore) | |||
224 | mcore->assigned_irqs = 1; | 224 | mcore->assigned_irqs = 1; |
225 | 225 | ||
226 | /* Assign IRQs to all cores on the bus */ | 226 | /* Assign IRQs to all cores on the bus */ |
227 | list_for_each_entry_reverse(core, &bus->cores, list) { | 227 | list_for_each_entry(core, &bus->cores, list) { |
228 | int mips_irq; | 228 | int mips_irq; |
229 | if (core->irq) | 229 | if (core->irq) |
230 | continue; | 230 | continue; |
diff --git a/drivers/bcma/scan.c b/drivers/bcma/scan.c index 5672b13d0951..8d0b57164018 100644 --- a/drivers/bcma/scan.c +++ b/drivers/bcma/scan.c | |||
@@ -462,8 +462,10 @@ int bcma_bus_scan(struct bcma_bus *bus) | |||
462 | while (eromptr < eromend) { | 462 | while (eromptr < eromend) { |
463 | struct bcma_device *other_core; | 463 | struct bcma_device *other_core; |
464 | struct bcma_device *core = kzalloc(sizeof(*core), GFP_KERNEL); | 464 | struct bcma_device *core = kzalloc(sizeof(*core), GFP_KERNEL); |
465 | if (!core) | 465 | if (!core) { |
466 | return -ENOMEM; | 466 | err = -ENOMEM; |
467 | goto out; | ||
468 | } | ||
467 | INIT_LIST_HEAD(&core->list); | 469 | INIT_LIST_HEAD(&core->list); |
468 | core->bus = bus; | 470 | core->bus = bus; |
469 | 471 | ||
@@ -478,7 +480,7 @@ int bcma_bus_scan(struct bcma_bus *bus) | |||
478 | } else if (err == -ESPIPE) { | 480 | } else if (err == -ESPIPE) { |
479 | break; | 481 | break; |
480 | } | 482 | } |
481 | return err; | 483 | goto out; |
482 | } | 484 | } |
483 | 485 | ||
484 | core->core_index = core_num++; | 486 | core->core_index = core_num++; |
@@ -494,10 +496,12 @@ int bcma_bus_scan(struct bcma_bus *bus) | |||
494 | list_add_tail(&core->list, &bus->cores); | 496 | list_add_tail(&core->list, &bus->cores); |
495 | } | 497 | } |
496 | 498 | ||
499 | err = 0; | ||
500 | out: | ||
497 | if (bus->hosttype == BCMA_HOSTTYPE_SOC) | 501 | if (bus->hosttype == BCMA_HOSTTYPE_SOC) |
498 | iounmap(eromptr); | 502 | iounmap(eromptr); |
499 | 503 | ||
500 | return 0; | 504 | return err; |
501 | } | 505 | } |
502 | 506 | ||
503 | int __init bcma_bus_scan_early(struct bcma_bus *bus, | 507 | 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 | else if (err == -ESPIPE) | 541 | else if (err == -ESPIPE) |
538 | break; | 542 | break; |
539 | else if (err < 0) | 543 | else if (err < 0) |
540 | return err; | 544 | goto out; |
541 | 545 | ||
542 | core->core_index = core_num++; | 546 | core->core_index = core_num++; |
543 | bus->nr_cores++; | 547 | bus->nr_cores++; |
@@ -551,6 +555,7 @@ int __init bcma_bus_scan_early(struct bcma_bus *bus, | |||
551 | break; | 555 | break; |
552 | } | 556 | } |
553 | 557 | ||
558 | out: | ||
554 | if (bus->hosttype == BCMA_HOSTTYPE_SOC) | 559 | if (bus->hosttype == BCMA_HOSTTYPE_SOC) |
555 | iounmap(eromptr); | 560 | iounmap(eromptr); |
556 | 561 | ||
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index 643f968b05ee..00838395778c 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c | |||
@@ -739,11 +739,6 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
739 | 739 | ||
740 | txi = IEEE80211_SKB_CB(skb); | 740 | txi = IEEE80211_SKB_CB(skb); |
741 | 741 | ||
742 | if (txi->control.vif) | ||
743 | hwsim_check_magic(txi->control.vif); | ||
744 | if (txi->control.sta) | ||
745 | hwsim_check_sta_magic(txi->control.sta); | ||
746 | |||
747 | ieee80211_tx_info_clear_status(txi); | 742 | ieee80211_tx_info_clear_status(txi); |
748 | 743 | ||
749 | /* frame was transmitted at most favorable rate at first attempt */ | 744 | /* frame was transmitted at most favorable rate at first attempt */ |