diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-07-09 23:33:18 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-07-09 23:33:18 -0400 |
| commit | e864561c12bc743789eab76242b8314d394daa52 (patch) | |
| tree | 5f9bf951fd8e713b224062a37b2a0b24c14f17ce /net | |
| parent | 42359da44112565e12a5209befb36dc6b6d6cd9c (diff) | |
| parent | e594e96e8a14101a6decabf6746bd5186287debc (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (29 commits)
cxgb3: Fix crash caused by stashing wrong netdev_queue
ixgbe: Fix coexistence of FCoE and Flow Director in 82599
memory barrier: adding smp_mb__after_lock
net: adding memory barrier to the poll and receive callbacks
netpoll: Fix carrier detection for drivers that are using phylib
includecheck fix: include/linux, rfkill.h
p54: tx refused but queue active
Atheros Kconfig needs to be dependent on WLAN_80211
mac80211: fix docbook
mac80211_hwsim: avoid NULL access
ssb: Add support for 4318E
b43: Add support for 4318E
zd1211rw: adding SONY IFU-WLM2 (054c:0257) as a zd1211b device
zd1211rw: 07b8:6001 is a ZD1211B
r6040: bump driver version to 0.24 and date to 08 July 2009
r6040: restore MIER register correctly when IRQ line is shared
ipv4: Fix fib_trie rebalancing, part 4 (root thresholds)
davinci_emac: fix kernel oops when changing MAC address while interface is down
igb: set lan id prior to configuring phy
mac80211: minstrel: avoid accessing negative indices in rix_to_ndx()
...
Diffstat (limited to 'net')
| -rw-r--r-- | net/atm/common.c | 6 | ||||
| -rw-r--r-- | net/core/datagram.c | 2 | ||||
| -rw-r--r-- | net/core/netpoll.c | 2 | ||||
| -rw-r--r-- | net/core/sock.c | 8 | ||||
| -rw-r--r-- | net/dccp/output.c | 2 | ||||
| -rw-r--r-- | net/dccp/proto.c | 2 | ||||
| -rw-r--r-- | net/ipv4/fib_trie.c | 4 | ||||
| -rw-r--r-- | net/ipv4/tcp.c | 2 | ||||
| -rw-r--r-- | net/iucv/af_iucv.c | 4 | ||||
| -rw-r--r-- | net/mac80211/mesh_hwmp.c | 2 | ||||
| -rw-r--r-- | net/mac80211/rc80211_minstrel.c | 5 | ||||
| -rw-r--r-- | net/rxrpc/af_rxrpc.c | 4 | ||||
| -rw-r--r-- | net/unix/af_unix.c | 8 | ||||
| -rw-r--r-- | net/wireless/nl80211.c | 1 | ||||
| -rw-r--r-- | net/wireless/scan.c | 1 |
15 files changed, 28 insertions, 25 deletions
diff --git a/net/atm/common.c b/net/atm/common.c index c1c97936192c..8c4d843eb17f 100644 --- a/net/atm/common.c +++ b/net/atm/common.c | |||
| @@ -92,7 +92,7 @@ static void vcc_sock_destruct(struct sock *sk) | |||
| 92 | static void vcc_def_wakeup(struct sock *sk) | 92 | static void vcc_def_wakeup(struct sock *sk) |
| 93 | { | 93 | { |
| 94 | read_lock(&sk->sk_callback_lock); | 94 | read_lock(&sk->sk_callback_lock); |
| 95 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 95 | if (sk_has_sleeper(sk)) |
| 96 | wake_up(sk->sk_sleep); | 96 | wake_up(sk->sk_sleep); |
| 97 | read_unlock(&sk->sk_callback_lock); | 97 | read_unlock(&sk->sk_callback_lock); |
| 98 | } | 98 | } |
| @@ -110,7 +110,7 @@ static void vcc_write_space(struct sock *sk) | |||
| 110 | read_lock(&sk->sk_callback_lock); | 110 | read_lock(&sk->sk_callback_lock); |
| 111 | 111 | ||
| 112 | if (vcc_writable(sk)) { | 112 | if (vcc_writable(sk)) { |
| 113 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 113 | if (sk_has_sleeper(sk)) |
| 114 | wake_up_interruptible(sk->sk_sleep); | 114 | wake_up_interruptible(sk->sk_sleep); |
| 115 | 115 | ||
| 116 | sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); | 116 | sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); |
| @@ -594,7 +594,7 @@ unsigned int vcc_poll(struct file *file, struct socket *sock, poll_table *wait) | |||
| 594 | struct atm_vcc *vcc; | 594 | struct atm_vcc *vcc; |
| 595 | unsigned int mask; | 595 | unsigned int mask; |
| 596 | 596 | ||
| 597 | poll_wait(file, sk->sk_sleep, wait); | 597 | sock_poll_wait(file, sk->sk_sleep, wait); |
| 598 | mask = 0; | 598 | mask = 0; |
| 599 | 599 | ||
| 600 | vcc = ATM_SD(sock); | 600 | vcc = ATM_SD(sock); |
diff --git a/net/core/datagram.c b/net/core/datagram.c index 58abee1f1df1..b0fe69211eef 100644 --- a/net/core/datagram.c +++ b/net/core/datagram.c | |||
| @@ -712,7 +712,7 @@ unsigned int datagram_poll(struct file *file, struct socket *sock, | |||
| 712 | struct sock *sk = sock->sk; | 712 | struct sock *sk = sock->sk; |
| 713 | unsigned int mask; | 713 | unsigned int mask; |
| 714 | 714 | ||
| 715 | poll_wait(file, sk->sk_sleep, wait); | 715 | sock_poll_wait(file, sk->sk_sleep, wait); |
| 716 | mask = 0; | 716 | mask = 0; |
| 717 | 717 | ||
| 718 | /* exceptional events? */ | 718 | /* exceptional events? */ |
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 9675f312830d..df30feb2fc72 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c | |||
| @@ -740,7 +740,7 @@ int netpoll_setup(struct netpoll *np) | |||
| 740 | np->name); | 740 | np->name); |
| 741 | break; | 741 | break; |
| 742 | } | 742 | } |
| 743 | cond_resched(); | 743 | msleep(1); |
| 744 | } | 744 | } |
| 745 | 745 | ||
| 746 | /* If carrier appears to come up instantly, we don't | 746 | /* If carrier appears to come up instantly, we don't |
diff --git a/net/core/sock.c b/net/core/sock.c index b0ba569bc973..6354863b1c68 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
| @@ -1715,7 +1715,7 @@ EXPORT_SYMBOL(sock_no_sendpage); | |||
| 1715 | static void sock_def_wakeup(struct sock *sk) | 1715 | static void sock_def_wakeup(struct sock *sk) |
| 1716 | { | 1716 | { |
| 1717 | read_lock(&sk->sk_callback_lock); | 1717 | read_lock(&sk->sk_callback_lock); |
| 1718 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 1718 | if (sk_has_sleeper(sk)) |
| 1719 | wake_up_interruptible_all(sk->sk_sleep); | 1719 | wake_up_interruptible_all(sk->sk_sleep); |
| 1720 | read_unlock(&sk->sk_callback_lock); | 1720 | read_unlock(&sk->sk_callback_lock); |
| 1721 | } | 1721 | } |
| @@ -1723,7 +1723,7 @@ static void sock_def_wakeup(struct sock *sk) | |||
| 1723 | static void sock_def_error_report(struct sock *sk) | 1723 | static void sock_def_error_report(struct sock *sk) |
| 1724 | { | 1724 | { |
| 1725 | read_lock(&sk->sk_callback_lock); | 1725 | read_lock(&sk->sk_callback_lock); |
| 1726 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 1726 | if (sk_has_sleeper(sk)) |
| 1727 | wake_up_interruptible_poll(sk->sk_sleep, POLLERR); | 1727 | wake_up_interruptible_poll(sk->sk_sleep, POLLERR); |
| 1728 | sk_wake_async(sk, SOCK_WAKE_IO, POLL_ERR); | 1728 | sk_wake_async(sk, SOCK_WAKE_IO, POLL_ERR); |
| 1729 | read_unlock(&sk->sk_callback_lock); | 1729 | read_unlock(&sk->sk_callback_lock); |
| @@ -1732,7 +1732,7 @@ static void sock_def_error_report(struct sock *sk) | |||
| 1732 | static void sock_def_readable(struct sock *sk, int len) | 1732 | static void sock_def_readable(struct sock *sk, int len) |
| 1733 | { | 1733 | { |
| 1734 | read_lock(&sk->sk_callback_lock); | 1734 | read_lock(&sk->sk_callback_lock); |
| 1735 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 1735 | if (sk_has_sleeper(sk)) |
| 1736 | wake_up_interruptible_sync_poll(sk->sk_sleep, POLLIN | | 1736 | wake_up_interruptible_sync_poll(sk->sk_sleep, POLLIN | |
| 1737 | POLLRDNORM | POLLRDBAND); | 1737 | POLLRDNORM | POLLRDBAND); |
| 1738 | sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN); | 1738 | sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN); |
| @@ -1747,7 +1747,7 @@ static void sock_def_write_space(struct sock *sk) | |||
| 1747 | * progress. --DaveM | 1747 | * progress. --DaveM |
| 1748 | */ | 1748 | */ |
| 1749 | if ((atomic_read(&sk->sk_wmem_alloc) << 1) <= sk->sk_sndbuf) { | 1749 | if ((atomic_read(&sk->sk_wmem_alloc) << 1) <= sk->sk_sndbuf) { |
| 1750 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 1750 | if (sk_has_sleeper(sk)) |
| 1751 | wake_up_interruptible_sync_poll(sk->sk_sleep, POLLOUT | | 1751 | wake_up_interruptible_sync_poll(sk->sk_sleep, POLLOUT | |
| 1752 | POLLWRNORM | POLLWRBAND); | 1752 | POLLWRNORM | POLLWRBAND); |
| 1753 | 1753 | ||
diff --git a/net/dccp/output.c b/net/dccp/output.c index c0e88c16d088..c96119fda688 100644 --- a/net/dccp/output.c +++ b/net/dccp/output.c | |||
| @@ -196,7 +196,7 @@ void dccp_write_space(struct sock *sk) | |||
| 196 | { | 196 | { |
| 197 | read_lock(&sk->sk_callback_lock); | 197 | read_lock(&sk->sk_callback_lock); |
| 198 | 198 | ||
| 199 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 199 | if (sk_has_sleeper(sk)) |
| 200 | wake_up_interruptible(sk->sk_sleep); | 200 | wake_up_interruptible(sk->sk_sleep); |
| 201 | /* Should agree with poll, otherwise some programs break */ | 201 | /* Should agree with poll, otherwise some programs break */ |
| 202 | if (sock_writeable(sk)) | 202 | if (sock_writeable(sk)) |
diff --git a/net/dccp/proto.c b/net/dccp/proto.c index 314a1b5c033c..94ca8eaace7d 100644 --- a/net/dccp/proto.c +++ b/net/dccp/proto.c | |||
| @@ -311,7 +311,7 @@ unsigned int dccp_poll(struct file *file, struct socket *sock, | |||
| 311 | unsigned int mask; | 311 | unsigned int mask; |
| 312 | struct sock *sk = sock->sk; | 312 | struct sock *sk = sock->sk; |
| 313 | 313 | ||
| 314 | poll_wait(file, sk->sk_sleep, wait); | 314 | sock_poll_wait(file, sk->sk_sleep, wait); |
| 315 | if (sk->sk_state == DCCP_LISTEN) | 315 | if (sk->sk_state == DCCP_LISTEN) |
| 316 | return inet_csk_listen_poll(sk); | 316 | return inet_csk_listen_poll(sk); |
| 317 | 317 | ||
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index 00a54b246dfe..63c2fa7b68c4 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c | |||
| @@ -316,8 +316,8 @@ static inline void check_tnode(const struct tnode *tn) | |||
| 316 | 316 | ||
| 317 | static const int halve_threshold = 25; | 317 | static const int halve_threshold = 25; |
| 318 | static const int inflate_threshold = 50; | 318 | static const int inflate_threshold = 50; |
| 319 | static const int halve_threshold_root = 8; | 319 | static const int halve_threshold_root = 15; |
| 320 | static const int inflate_threshold_root = 15; | 320 | static const int inflate_threshold_root = 25; |
| 321 | 321 | ||
| 322 | 322 | ||
| 323 | static void __alias_free_mem(struct rcu_head *head) | 323 | static void __alias_free_mem(struct rcu_head *head) |
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 7870a535dac6..91145244ea63 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
| @@ -339,7 +339,7 @@ unsigned int tcp_poll(struct file *file, struct socket *sock, poll_table *wait) | |||
| 339 | struct sock *sk = sock->sk; | 339 | struct sock *sk = sock->sk; |
| 340 | struct tcp_sock *tp = tcp_sk(sk); | 340 | struct tcp_sock *tp = tcp_sk(sk); |
| 341 | 341 | ||
| 342 | poll_wait(file, sk->sk_sleep, wait); | 342 | sock_poll_wait(file, sk->sk_sleep, wait); |
| 343 | if (sk->sk_state == TCP_LISTEN) | 343 | if (sk->sk_state == TCP_LISTEN) |
| 344 | return inet_csk_listen_poll(sk); | 344 | return inet_csk_listen_poll(sk); |
| 345 | 345 | ||
diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c index 6be5f92d1094..49c15b48408e 100644 --- a/net/iucv/af_iucv.c +++ b/net/iucv/af_iucv.c | |||
| @@ -306,7 +306,7 @@ static inline int iucv_below_msglim(struct sock *sk) | |||
| 306 | static void iucv_sock_wake_msglim(struct sock *sk) | 306 | static void iucv_sock_wake_msglim(struct sock *sk) |
| 307 | { | 307 | { |
| 308 | read_lock(&sk->sk_callback_lock); | 308 | read_lock(&sk->sk_callback_lock); |
| 309 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 309 | if (sk_has_sleeper(sk)) |
| 310 | wake_up_interruptible_all(sk->sk_sleep); | 310 | wake_up_interruptible_all(sk->sk_sleep); |
| 311 | sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); | 311 | sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); |
| 312 | read_unlock(&sk->sk_callback_lock); | 312 | read_unlock(&sk->sk_callback_lock); |
| @@ -1256,7 +1256,7 @@ unsigned int iucv_sock_poll(struct file *file, struct socket *sock, | |||
| 1256 | struct sock *sk = sock->sk; | 1256 | struct sock *sk = sock->sk; |
| 1257 | unsigned int mask = 0; | 1257 | unsigned int mask = 0; |
| 1258 | 1258 | ||
| 1259 | poll_wait(file, sk->sk_sleep, wait); | 1259 | sock_poll_wait(file, sk->sk_sleep, wait); |
| 1260 | 1260 | ||
| 1261 | if (sk->sk_state == IUCV_LISTEN) | 1261 | if (sk->sk_state == IUCV_LISTEN) |
| 1262 | return iucv_accept_poll(sk); | 1262 | return iucv_accept_poll(sk); |
diff --git a/net/mac80211/mesh_hwmp.c b/net/mac80211/mesh_hwmp.c index 003cb470ac84..f49ef288e2e2 100644 --- a/net/mac80211/mesh_hwmp.c +++ b/net/mac80211/mesh_hwmp.c | |||
| @@ -637,7 +637,7 @@ static void mesh_queue_preq(struct mesh_path *mpath, u8 flags) | |||
| 637 | struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; | 637 | struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; |
| 638 | struct mesh_preq_queue *preq_node; | 638 | struct mesh_preq_queue *preq_node; |
| 639 | 639 | ||
| 640 | preq_node = kmalloc(sizeof(struct mesh_preq_queue), GFP_KERNEL); | 640 | preq_node = kmalloc(sizeof(struct mesh_preq_queue), GFP_ATOMIC); |
| 641 | if (!preq_node) { | 641 | if (!preq_node) { |
| 642 | printk(KERN_DEBUG "Mesh HWMP: could not allocate PREQ node\n"); | 642 | printk(KERN_DEBUG "Mesh HWMP: could not allocate PREQ node\n"); |
| 643 | return; | 643 | return; |
diff --git a/net/mac80211/rc80211_minstrel.c b/net/mac80211/rc80211_minstrel.c index b218b98fba7f..37771abd8f5a 100644 --- a/net/mac80211/rc80211_minstrel.c +++ b/net/mac80211/rc80211_minstrel.c | |||
| @@ -66,7 +66,7 @@ rix_to_ndx(struct minstrel_sta_info *mi, int rix) | |||
| 66 | for (i = rix; i >= 0; i--) | 66 | for (i = rix; i >= 0; i--) |
| 67 | if (mi->r[i].rix == rix) | 67 | if (mi->r[i].rix == rix) |
| 68 | break; | 68 | break; |
| 69 | WARN_ON(mi->r[i].rix != rix); | 69 | WARN_ON(i < 0); |
| 70 | return i; | 70 | return i; |
| 71 | } | 71 | } |
| 72 | 72 | ||
| @@ -181,6 +181,9 @@ minstrel_tx_status(void *priv, struct ieee80211_supported_band *sband, | |||
| 181 | break; | 181 | break; |
| 182 | 182 | ||
| 183 | ndx = rix_to_ndx(mi, ar[i].idx); | 183 | ndx = rix_to_ndx(mi, ar[i].idx); |
| 184 | if (ndx < 0) | ||
| 185 | continue; | ||
| 186 | |||
| 184 | mi->r[ndx].attempts += ar[i].count; | 187 | mi->r[ndx].attempts += ar[i].count; |
| 185 | 188 | ||
| 186 | if ((i != IEEE80211_TX_MAX_RATES - 1) && (ar[i + 1].idx < 0)) | 189 | if ((i != IEEE80211_TX_MAX_RATES - 1) && (ar[i + 1].idx < 0)) |
diff --git a/net/rxrpc/af_rxrpc.c b/net/rxrpc/af_rxrpc.c index eac5e7bb7365..bfe493ebf27c 100644 --- a/net/rxrpc/af_rxrpc.c +++ b/net/rxrpc/af_rxrpc.c | |||
| @@ -63,7 +63,7 @@ static void rxrpc_write_space(struct sock *sk) | |||
| 63 | _enter("%p", sk); | 63 | _enter("%p", sk); |
| 64 | read_lock(&sk->sk_callback_lock); | 64 | read_lock(&sk->sk_callback_lock); |
| 65 | if (rxrpc_writable(sk)) { | 65 | if (rxrpc_writable(sk)) { |
| 66 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 66 | if (sk_has_sleeper(sk)) |
| 67 | wake_up_interruptible(sk->sk_sleep); | 67 | wake_up_interruptible(sk->sk_sleep); |
| 68 | sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); | 68 | sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); |
| 69 | } | 69 | } |
| @@ -588,7 +588,7 @@ static unsigned int rxrpc_poll(struct file *file, struct socket *sock, | |||
| 588 | unsigned int mask; | 588 | unsigned int mask; |
| 589 | struct sock *sk = sock->sk; | 589 | struct sock *sk = sock->sk; |
| 590 | 590 | ||
| 591 | poll_wait(file, sk->sk_sleep, wait); | 591 | sock_poll_wait(file, sk->sk_sleep, wait); |
| 592 | mask = 0; | 592 | mask = 0; |
| 593 | 593 | ||
| 594 | /* the socket is readable if there are any messages waiting on the Rx | 594 | /* the socket is readable if there are any messages waiting on the Rx |
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 36d4e44d6233..fc3ebb906911 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c | |||
| @@ -315,7 +315,7 @@ static void unix_write_space(struct sock *sk) | |||
| 315 | { | 315 | { |
| 316 | read_lock(&sk->sk_callback_lock); | 316 | read_lock(&sk->sk_callback_lock); |
| 317 | if (unix_writable(sk)) { | 317 | if (unix_writable(sk)) { |
| 318 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 318 | if (sk_has_sleeper(sk)) |
| 319 | wake_up_interruptible_sync(sk->sk_sleep); | 319 | wake_up_interruptible_sync(sk->sk_sleep); |
| 320 | sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); | 320 | sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); |
| 321 | } | 321 | } |
| @@ -1985,7 +1985,7 @@ static unsigned int unix_poll(struct file *file, struct socket *sock, poll_table | |||
| 1985 | struct sock *sk = sock->sk; | 1985 | struct sock *sk = sock->sk; |
| 1986 | unsigned int mask; | 1986 | unsigned int mask; |
| 1987 | 1987 | ||
| 1988 | poll_wait(file, sk->sk_sleep, wait); | 1988 | sock_poll_wait(file, sk->sk_sleep, wait); |
| 1989 | mask = 0; | 1989 | mask = 0; |
| 1990 | 1990 | ||
| 1991 | /* exceptional events? */ | 1991 | /* exceptional events? */ |
| @@ -2022,7 +2022,7 @@ static unsigned int unix_dgram_poll(struct file *file, struct socket *sock, | |||
| 2022 | struct sock *sk = sock->sk, *other; | 2022 | struct sock *sk = sock->sk, *other; |
| 2023 | unsigned int mask, writable; | 2023 | unsigned int mask, writable; |
| 2024 | 2024 | ||
| 2025 | poll_wait(file, sk->sk_sleep, wait); | 2025 | sock_poll_wait(file, sk->sk_sleep, wait); |
| 2026 | mask = 0; | 2026 | mask = 0; |
| 2027 | 2027 | ||
| 2028 | /* exceptional events? */ | 2028 | /* exceptional events? */ |
| @@ -2053,7 +2053,7 @@ static unsigned int unix_dgram_poll(struct file *file, struct socket *sock, | |||
| 2053 | other = unix_peer_get(sk); | 2053 | other = unix_peer_get(sk); |
| 2054 | if (other) { | 2054 | if (other) { |
| 2055 | if (unix_peer(other) != sk) { | 2055 | if (unix_peer(other) != sk) { |
| 2056 | poll_wait(file, &unix_sk(other)->peer_wait, | 2056 | sock_poll_wait(file, &unix_sk(other)->peer_wait, |
| 2057 | wait); | 2057 | wait); |
| 2058 | if (unix_recvq_full(other)) | 2058 | if (unix_recvq_full(other)) |
| 2059 | writable = 0; | 2059 | writable = 0; |
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 241bddd0b4f1..43bdb1372cae 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
| @@ -447,6 +447,7 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info) | |||
| 447 | 447 | ||
| 448 | rdev = __cfg80211_drv_from_info(info); | 448 | rdev = __cfg80211_drv_from_info(info); |
| 449 | if (IS_ERR(rdev)) { | 449 | if (IS_ERR(rdev)) { |
| 450 | mutex_unlock(&cfg80211_mutex); | ||
| 450 | result = PTR_ERR(rdev); | 451 | result = PTR_ERR(rdev); |
| 451 | goto unlock; | 452 | goto unlock; |
| 452 | } | 453 | } |
diff --git a/net/wireless/scan.c b/net/wireless/scan.c index e95b638b919f..f8e71b300001 100644 --- a/net/wireless/scan.c +++ b/net/wireless/scan.c | |||
| @@ -366,7 +366,6 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev, | |||
| 366 | found = rb_find_bss(dev, res); | 366 | found = rb_find_bss(dev, res); |
| 367 | 367 | ||
| 368 | if (found) { | 368 | if (found) { |
| 369 | kref_get(&found->ref); | ||
| 370 | found->pub.beacon_interval = res->pub.beacon_interval; | 369 | found->pub.beacon_interval = res->pub.beacon_interval; |
| 371 | found->pub.tsf = res->pub.tsf; | 370 | found->pub.tsf = res->pub.tsf; |
| 372 | found->pub.signal = res->pub.signal; | 371 | found->pub.signal = res->pub.signal; |
