diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2010-03-16 17:48:12 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2010-03-16 17:48:12 -0400 |
commit | d524cb7bd569bd8fcf136c7ee4b37a215ded71b5 (patch) | |
tree | 0616ebb87bbc0c44e45aa7c92fe21c6709fa73bd /net | |
parent | e7d7017fd16ef10545602f8d176aff52778ed0e3 (diff) | |
parent | dbdafe5ccf02d6a59e412ac8314a030ec703e880 (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.c | 2 | ||||
-rw-r--r-- | net/mac80211/agg-tx.c | 3 | ||||
-rw-r--r-- | net/mac80211/rx.c | 8 | ||||
-rw-r--r-- | net/mac80211/tx.c | 5 | ||||
-rw-r--r-- | net/netfilter/xt_recent.c | 4 | ||||
-rw-r--r-- | net/sunrpc/svc_xprt.c | 5 | ||||
-rw-r--r-- | net/sunrpc/xprtsock.c | 5 |
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 | |||
1788 | ieee80211_rx_h_data(struct ieee80211_rx_data *rx) | 1788 | ieee80211_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 | ||
174 | static void recent_entry_update(struct recent_table *t, struct recent_entry *e) | 174 | static 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 | } |
1916 | out_eagain: | 1921 | out_eagain: |
1917 | status = -EAGAIN; | 1922 | status = -EAGAIN; |