aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2010-03-16 17:48:12 -0400
committerThomas Gleixner <tglx@linutronix.de>2010-03-16 17:48:12 -0400
commitd524cb7bd569bd8fcf136c7ee4b37a215ded71b5 (patch)
tree0616ebb87bbc0c44e45aa7c92fe21c6709fa73bd /net
parente7d7017fd16ef10545602f8d176aff52778ed0e3 (diff)
parentdbdafe5ccf02d6a59e412ac8314a030ec703e880 (diff)
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.33.y Conflicts: Makefile arch/x86/kernel/apic/io_apic.c drivers/staging/mimio/mimio.c Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'net')
-rw-r--r--net/core/scm.c2
-rw-r--r--net/mac80211/agg-tx.c3
-rw-r--r--net/mac80211/rx.c8
-rw-r--r--net/mac80211/tx.c5
-rw-r--r--net/netfilter/xt_recent.c4
-rw-r--r--net/sunrpc/svc_xprt.c5
-rw-r--r--net/sunrpc/xprtsock.c5
7 files changed, 24 insertions, 8 deletions
diff --git a/net/core/scm.c b/net/core/scm.c
index b7ba91b074b3..9b264634acfd 100644
--- a/net/core/scm.c
+++ b/net/core/scm.c
@@ -156,6 +156,8 @@ int __scm_send(struct socket *sock, struct msghdr *msg, struct scm_cookie *p)
156 switch (cmsg->cmsg_type) 156 switch (cmsg->cmsg_type)
157 { 157 {
158 case SCM_RIGHTS: 158 case SCM_RIGHTS:
159 if (!sock->ops || sock->ops->family != PF_UNIX)
160 goto error;
159 err=scm_fp_copy(cmsg, &p->fp); 161 err=scm_fp_copy(cmsg, &p->fp);
160 if (err<0) 162 if (err<0)
161 goto error; 163 goto error;
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
index 5e3a7eccef5a..304b0b65216d 100644
--- a/net/mac80211/agg-tx.c
+++ b/net/mac80211/agg-tx.c
@@ -179,7 +179,8 @@ static void sta_addba_resp_timer_expired(unsigned long data)
179 179
180 /* check if the TID waits for addBA response */ 180 /* check if the TID waits for addBA response */
181 spin_lock_bh(&sta->lock); 181 spin_lock_bh(&sta->lock);
182 if ((*state & (HT_ADDBA_REQUESTED_MSK | HT_ADDBA_RECEIVED_MSK)) != 182 if ((*state & (HT_ADDBA_REQUESTED_MSK | HT_ADDBA_RECEIVED_MSK |
183 HT_AGG_STATE_REQ_STOP_BA_MSK)) !=
183 HT_ADDBA_REQUESTED_MSK) { 184 HT_ADDBA_REQUESTED_MSK) {
184 spin_unlock_bh(&sta->lock); 185 spin_unlock_bh(&sta->lock);
185 *state = HT_AGG_STATE_IDLE; 186 *state = HT_AGG_STATE_IDLE;
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index e735c17ab096..3e1ea43d5be6 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1788,6 +1788,7 @@ static ieee80211_rx_result debug_noinline
1788ieee80211_rx_h_data(struct ieee80211_rx_data *rx) 1788ieee80211_rx_h_data(struct ieee80211_rx_data *rx)
1789{ 1789{
1790 struct ieee80211_sub_if_data *sdata = rx->sdata; 1790 struct ieee80211_sub_if_data *sdata = rx->sdata;
1791 struct ieee80211_local *local = rx->local;
1791 struct net_device *dev = sdata->dev; 1792 struct net_device *dev = sdata->dev;
1792 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data; 1793 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data;
1793 __le16 fc = hdr->frame_control; 1794 __le16 fc = hdr->frame_control;
@@ -1819,6 +1820,13 @@ ieee80211_rx_h_data(struct ieee80211_rx_data *rx)
1819 dev->stats.rx_packets++; 1820 dev->stats.rx_packets++;
1820 dev->stats.rx_bytes += rx->skb->len; 1821 dev->stats.rx_bytes += rx->skb->len;
1821 1822
1823 if (ieee80211_is_data(hdr->frame_control) &&
1824 !is_multicast_ether_addr(hdr->addr1) &&
1825 local->hw.conf.dynamic_ps_timeout > 0 && local->ps_sdata) {
1826 mod_timer(&local->dynamic_ps_timer, jiffies +
1827 msecs_to_jiffies(local->hw.conf.dynamic_ps_timeout));
1828 }
1829
1822 ieee80211_deliver_skb(rx); 1830 ieee80211_deliver_skb(rx);
1823 1831
1824 return RX_QUEUED; 1832 return RX_QUEUED;
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index ac210b586702..70c79c3013fa 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1052,8 +1052,11 @@ ieee80211_tx_prepare(struct ieee80211_sub_if_data *sdata,
1052 1052
1053 hdr = (struct ieee80211_hdr *) skb->data; 1053 hdr = (struct ieee80211_hdr *) skb->data;
1054 1054
1055 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) 1055 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
1056 tx->sta = rcu_dereference(sdata->u.vlan.sta); 1056 tx->sta = rcu_dereference(sdata->u.vlan.sta);
1057 if (!tx->sta && sdata->dev->ieee80211_ptr->use_4addr)
1058 return TX_DROP;
1059 }
1057 if (!tx->sta) 1060 if (!tx->sta)
1058 tx->sta = sta_info_get(local, hdr->addr1); 1061 tx->sta = sta_info_get(local, hdr->addr1);
1059 1062
diff --git a/net/netfilter/xt_recent.c b/net/netfilter/xt_recent.c
index fc70a49c0afd..43e83a44224d 100644
--- a/net/netfilter/xt_recent.c
+++ b/net/netfilter/xt_recent.c
@@ -173,10 +173,10 @@ recent_entry_init(struct recent_table *t, const union nf_inet_addr *addr,
173 173
174static void recent_entry_update(struct recent_table *t, struct recent_entry *e) 174static void recent_entry_update(struct recent_table *t, struct recent_entry *e)
175{ 175{
176 e->index %= ip_pkt_list_tot;
176 e->stamps[e->index++] = jiffies; 177 e->stamps[e->index++] = jiffies;
177 if (e->index > e->nstamps) 178 if (e->index > e->nstamps)
178 e->nstamps = e->index; 179 e->nstamps = e->index;
179 e->index %= ip_pkt_list_tot;
180 list_move_tail(&e->lru_list, &t->lru_list); 180 list_move_tail(&e->lru_list, &t->lru_list);
181} 181}
182 182
@@ -260,7 +260,7 @@ recent_mt(const struct sk_buff *skb, const struct xt_match_param *par)
260 for (i = 0; i < e->nstamps; i++) { 260 for (i = 0; i < e->nstamps; i++) {
261 if (info->seconds && time_after(time, e->stamps[i])) 261 if (info->seconds && time_after(time, e->stamps[i]))
262 continue; 262 continue;
263 if (++hits >= info->hit_count) { 263 if (info->hit_count && ++hits >= info->hit_count) {
264 ret = !ret; 264 ret = !ret;
265 break; 265 break;
266 } 266 }
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
index 7d1f9e928f69..4f303360b565 100644
--- a/net/sunrpc/svc_xprt.c
+++ b/net/sunrpc/svc_xprt.c
@@ -889,11 +889,8 @@ void svc_delete_xprt(struct svc_xprt *xprt)
889 if (test_bit(XPT_TEMP, &xprt->xpt_flags)) 889 if (test_bit(XPT_TEMP, &xprt->xpt_flags))
890 serv->sv_tmpcnt--; 890 serv->sv_tmpcnt--;
891 891
892 for (dr = svc_deferred_dequeue(xprt); dr; 892 while ((dr = svc_deferred_dequeue(xprt)) != NULL)
893 dr = svc_deferred_dequeue(xprt)) {
894 svc_xprt_put(xprt);
895 kfree(dr); 893 kfree(dr);
896 }
897 894
898 svc_xprt_put(xprt); 895 svc_xprt_put(xprt);
899 spin_unlock_bh(&serv->sv_lock); 896 spin_unlock_bh(&serv->sv_lock);
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index 3d739e5d15d8..4df801dc3488 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -1912,6 +1912,11 @@ static void xs_tcp_setup_socket(struct rpc_xprt *xprt,
1912 case -EALREADY: 1912 case -EALREADY:
1913 xprt_clear_connecting(xprt); 1913 xprt_clear_connecting(xprt);
1914 return; 1914 return;
1915 case -EINVAL:
1916 /* Happens, for instance, if the user specified a link
1917 * local IPv6 address without a scope-id.
1918 */
1919 goto out;
1915 } 1920 }
1916out_eagain: 1921out_eagain:
1917 status = -EAGAIN; 1922 status = -EAGAIN;