diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-09-21 16:35:00 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-09-21 16:35:00 -0400 |
| commit | e5b26a88f13dfe3162acd50490c0c8504af81b26 (patch) | |
| tree | e2e52996c76dcb6236396f3686a7b4fd6e475405 /net | |
| parent | fed678dc8a8b839c8189b5d889a94e865cd327dd (diff) | |
| parent | bcf66bf54aabffc150acd1c99e0f4bc51935eada (diff) | |
Merge git://github.com/davem330/net
* git://github.com/davem330/net: (27 commits)
xfrm: Perform a replay check after return from async codepaths
fib:fix BUG_ON in fib_nl_newrule when add new fib rule
ixgbe: fix possible null buffer error
tg3: fix VLAN tagging regression
net: pxa168: Fix build errors by including interrupt.h
netconsole: switch init_netconsole() to late_initcall
gianfar: Fix overflow check and return value for gfar_get_cls_all()
ppp_generic: fix multilink fragment MTU calculation (again)
GRETH: avoid overwrite IP-stack's IP-frags checksum
GRETH: RX/TX bytes were never increased
ipv6: fix a possible double free
b43: Fix beacon problem in ad-hoc mode
Bluetooth: add support for 2011 mac mini
Bluetooth: Add MacBookAir4,1 support
Bluetooth: Fixed BT ST Channel reg order
r8169: do not enable the TBI for anything but the original 8169.
r8169: remove erroneous processing of always set bit.
r8169: fix WOL setting for 8105 and 8111evl
r8169: add MODULE_FIRMWARE for the firmware of 8111evl
r8169: fix the reset setting for 8111evl
...
Diffstat (limited to 'net')
| -rw-r--r-- | net/bluetooth/hci_event.c | 17 | ||||
| -rw-r--r-- | net/core/fib_rules.c | 4 | ||||
| -rw-r--r-- | net/ipv6/addrconf.c | 4 | ||||
| -rw-r--r-- | net/wireless/reg.c | 1 | ||||
| -rw-r--r-- | net/wireless/sme.c | 2 | ||||
| -rw-r--r-- | net/xfrm/xfrm_input.c | 5 |
6 files changed, 20 insertions, 13 deletions
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index a40170e022e8..7ef4eb4435fb 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c | |||
| @@ -58,8 +58,8 @@ static void hci_cc_inquiry_cancel(struct hci_dev *hdev, struct sk_buff *skb) | |||
| 58 | if (status) | 58 | if (status) |
| 59 | return; | 59 | return; |
| 60 | 60 | ||
| 61 | if (test_bit(HCI_MGMT, &hdev->flags) && | 61 | if (test_and_clear_bit(HCI_INQUIRY, &hdev->flags) && |
| 62 | test_and_clear_bit(HCI_INQUIRY, &hdev->flags)) | 62 | test_bit(HCI_MGMT, &hdev->flags)) |
| 63 | mgmt_discovering(hdev->id, 0); | 63 | mgmt_discovering(hdev->id, 0); |
| 64 | 64 | ||
| 65 | hci_req_complete(hdev, HCI_OP_INQUIRY_CANCEL, status); | 65 | hci_req_complete(hdev, HCI_OP_INQUIRY_CANCEL, status); |
| @@ -76,8 +76,8 @@ static void hci_cc_exit_periodic_inq(struct hci_dev *hdev, struct sk_buff *skb) | |||
| 76 | if (status) | 76 | if (status) |
| 77 | return; | 77 | return; |
| 78 | 78 | ||
| 79 | if (test_bit(HCI_MGMT, &hdev->flags) && | 79 | if (test_and_clear_bit(HCI_INQUIRY, &hdev->flags) && |
| 80 | test_and_clear_bit(HCI_INQUIRY, &hdev->flags)) | 80 | test_bit(HCI_MGMT, &hdev->flags)) |
| 81 | mgmt_discovering(hdev->id, 0); | 81 | mgmt_discovering(hdev->id, 0); |
| 82 | 82 | ||
| 83 | hci_conn_check_pending(hdev); | 83 | hci_conn_check_pending(hdev); |
| @@ -959,9 +959,8 @@ static inline void hci_cs_inquiry(struct hci_dev *hdev, __u8 status) | |||
| 959 | return; | 959 | return; |
| 960 | } | 960 | } |
| 961 | 961 | ||
| 962 | if (test_bit(HCI_MGMT, &hdev->flags) && | 962 | if (!test_and_set_bit(HCI_INQUIRY, &hdev->flags) && |
| 963 | !test_and_set_bit(HCI_INQUIRY, | 963 | test_bit(HCI_MGMT, &hdev->flags)) |
| 964 | &hdev->flags)) | ||
| 965 | mgmt_discovering(hdev->id, 1); | 964 | mgmt_discovering(hdev->id, 1); |
| 966 | } | 965 | } |
| 967 | 966 | ||
| @@ -1340,8 +1339,8 @@ static inline void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff | |||
| 1340 | 1339 | ||
| 1341 | BT_DBG("%s status %d", hdev->name, status); | 1340 | BT_DBG("%s status %d", hdev->name, status); |
| 1342 | 1341 | ||
| 1343 | if (test_bit(HCI_MGMT, &hdev->flags) && | 1342 | if (test_and_clear_bit(HCI_INQUIRY, &hdev->flags) && |
| 1344 | test_and_clear_bit(HCI_INQUIRY, &hdev->flags)) | 1343 | test_bit(HCI_MGMT, &hdev->flags)) |
| 1345 | mgmt_discovering(hdev->id, 0); | 1344 | mgmt_discovering(hdev->id, 0); |
| 1346 | 1345 | ||
| 1347 | hci_req_complete(hdev, HCI_OP_INQUIRY, status); | 1346 | hci_req_complete(hdev, HCI_OP_INQUIRY, status); |
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c index e7ab0c0285b5..3231b468bb72 100644 --- a/net/core/fib_rules.c +++ b/net/core/fib_rules.c | |||
| @@ -384,8 +384,8 @@ static int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg) | |||
| 384 | */ | 384 | */ |
| 385 | list_for_each_entry(r, &ops->rules_list, list) { | 385 | list_for_each_entry(r, &ops->rules_list, list) { |
| 386 | if (r->action == FR_ACT_GOTO && | 386 | if (r->action == FR_ACT_GOTO && |
| 387 | r->target == rule->pref) { | 387 | r->target == rule->pref && |
| 388 | BUG_ON(rtnl_dereference(r->ctarget) != NULL); | 388 | rtnl_dereference(r->ctarget) == NULL) { |
| 389 | rcu_assign_pointer(r->ctarget, rule); | 389 | rcu_assign_pointer(r->ctarget, rule); |
| 390 | if (--ops->unresolved_rules == 0) | 390 | if (--ops->unresolved_rules == 0) |
| 391 | break; | 391 | break; |
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index f012ebd87b43..12368c586068 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
| @@ -374,8 +374,8 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev) | |||
| 374 | "%s(): cannot allocate memory for statistics; dev=%s.\n", | 374 | "%s(): cannot allocate memory for statistics; dev=%s.\n", |
| 375 | __func__, dev->name)); | 375 | __func__, dev->name)); |
| 376 | neigh_parms_release(&nd_tbl, ndev->nd_parms); | 376 | neigh_parms_release(&nd_tbl, ndev->nd_parms); |
| 377 | ndev->dead = 1; | 377 | dev_put(dev); |
| 378 | in6_dev_finish_destroy(ndev); | 378 | kfree(ndev); |
| 379 | return NULL; | 379 | return NULL; |
| 380 | } | 380 | } |
| 381 | 381 | ||
diff --git a/net/wireless/reg.c b/net/wireless/reg.c index 02751dbc5a97..68a471ba193f 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c | |||
| @@ -852,6 +852,7 @@ static void handle_channel(struct wiphy *wiphy, | |||
| 852 | return; | 852 | return; |
| 853 | } | 853 | } |
| 854 | 854 | ||
| 855 | chan->beacon_found = false; | ||
| 855 | chan->flags = flags | bw_flags | map_regdom_flags(reg_rule->flags); | 856 | chan->flags = flags | bw_flags | map_regdom_flags(reg_rule->flags); |
| 856 | chan->max_antenna_gain = min(chan->orig_mag, | 857 | chan->max_antenna_gain = min(chan->orig_mag, |
| 857 | (int) MBI_TO_DBI(power_rule->max_antenna_gain)); | 858 | (int) MBI_TO_DBI(power_rule->max_antenna_gain)); |
diff --git a/net/wireless/sme.c b/net/wireless/sme.c index b7b6ff8be553..dec0fa28372e 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c | |||
| @@ -118,6 +118,8 @@ static int cfg80211_conn_scan(struct wireless_dev *wdev) | |||
| 118 | i++, j++) | 118 | i++, j++) |
| 119 | request->channels[i] = | 119 | request->channels[i] = |
| 120 | &wdev->wiphy->bands[band]->channels[j]; | 120 | &wdev->wiphy->bands[band]->channels[j]; |
| 121 | request->rates[band] = | ||
| 122 | (1 << wdev->wiphy->bands[band]->n_bitrates) - 1; | ||
| 121 | } | 123 | } |
| 122 | } | 124 | } |
| 123 | request->n_channels = n_channels; | 125 | request->n_channels = n_channels; |
diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c index a026b0ef2443..54a0dc2e2f8d 100644 --- a/net/xfrm/xfrm_input.c +++ b/net/xfrm/xfrm_input.c | |||
| @@ -212,6 +212,11 @@ resume: | |||
| 212 | /* only the first xfrm gets the encap type */ | 212 | /* only the first xfrm gets the encap type */ |
| 213 | encap_type = 0; | 213 | encap_type = 0; |
| 214 | 214 | ||
| 215 | if (async && x->repl->check(x, skb, seq)) { | ||
| 216 | XFRM_INC_STATS(net, LINUX_MIB_XFRMINSTATESEQERROR); | ||
| 217 | goto drop_unlock; | ||
| 218 | } | ||
| 219 | |||
| 215 | x->repl->advance(x, seq); | 220 | x->repl->advance(x, seq); |
| 216 | 221 | ||
| 217 | x->curlft.bytes += skb->len; | 222 | x->curlft.bytes += skb->len; |
