Commit 9631eb0b authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
  [NETFILTER]: ipt_CLUSTERIP: fix oops in checkentry function
  [TCP]: slow_start_after_idle should influence cwnd validation too
  [SC92031]: Fix priv->lock context
  [NET_SCHED]: cls_tcindex: fix compatibility breakage
parents b4dfd6bc 50c9cc2e
...@@ -964,7 +964,7 @@ static int sc92031_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -964,7 +964,7 @@ static int sc92031_start_xmit(struct sk_buff *skb, struct net_device *dev)
goto out; goto out;
} }
spin_lock_bh(&priv->lock); spin_lock(&priv->lock);
if (unlikely(!netif_carrier_ok(dev))) { if (unlikely(!netif_carrier_ok(dev))) {
err = -ENOLINK; err = -ENOLINK;
...@@ -1005,7 +1005,7 @@ static int sc92031_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1005,7 +1005,7 @@ static int sc92031_start_xmit(struct sk_buff *skb, struct net_device *dev)
netif_stop_queue(dev); netif_stop_queue(dev);
out_unlock: out_unlock:
spin_unlock_bh(&priv->lock); spin_unlock(&priv->lock);
out: out:
dev_kfree_skb(skb); dev_kfree_skb(skb);
...@@ -1042,12 +1042,12 @@ static int sc92031_open(struct net_device *dev) ...@@ -1042,12 +1042,12 @@ static int sc92031_open(struct net_device *dev)
priv->pm_config = 0; priv->pm_config = 0;
/* Interrupts already disabled by sc92031_stop or sc92031_probe */ /* Interrupts already disabled by sc92031_stop or sc92031_probe */
spin_lock(&priv->lock); spin_lock_bh(&priv->lock);
_sc92031_reset(dev); _sc92031_reset(dev);
mmiowb(); mmiowb();
spin_unlock(&priv->lock); spin_unlock_bh(&priv->lock);
sc92031_enable_interrupts(dev); sc92031_enable_interrupts(dev);
if (netif_carrier_ok(dev)) if (netif_carrier_ok(dev))
...@@ -1077,13 +1077,13 @@ static int sc92031_stop(struct net_device *dev) ...@@ -1077,13 +1077,13 @@ static int sc92031_stop(struct net_device *dev)
/* Disable interrupts, stop Tx and Rx. */ /* Disable interrupts, stop Tx and Rx. */
sc92031_disable_interrupts(dev); sc92031_disable_interrupts(dev);
spin_lock(&priv->lock); spin_lock_bh(&priv->lock);
_sc92031_disable_tx_rx(dev); _sc92031_disable_tx_rx(dev);
_sc92031_tx_clear(dev); _sc92031_tx_clear(dev);
mmiowb(); mmiowb();
spin_unlock(&priv->lock); spin_unlock_bh(&priv->lock);
free_irq(pdev->irq, dev); free_irq(pdev->irq, dev);
pci_free_consistent(pdev, TX_BUF_TOT_LEN, priv->tx_bufs, pci_free_consistent(pdev, TX_BUF_TOT_LEN, priv->tx_bufs,
...@@ -1539,13 +1539,13 @@ static int sc92031_suspend(struct pci_dev *pdev, pm_message_t state) ...@@ -1539,13 +1539,13 @@ static int sc92031_suspend(struct pci_dev *pdev, pm_message_t state)
/* Disable interrupts, stop Tx and Rx. */ /* Disable interrupts, stop Tx and Rx. */
sc92031_disable_interrupts(dev); sc92031_disable_interrupts(dev);
spin_lock(&priv->lock); spin_lock_bh(&priv->lock);
_sc92031_disable_tx_rx(dev); _sc92031_disable_tx_rx(dev);
_sc92031_tx_clear(dev); _sc92031_tx_clear(dev);
mmiowb(); mmiowb();
spin_unlock(&priv->lock); spin_unlock_bh(&priv->lock);
out: out:
pci_set_power_state(pdev, pci_choose_state(pdev, state)); pci_set_power_state(pdev, pci_choose_state(pdev, state));
...@@ -1565,12 +1565,12 @@ static int sc92031_resume(struct pci_dev *pdev) ...@@ -1565,12 +1565,12 @@ static int sc92031_resume(struct pci_dev *pdev)
goto out; goto out;
/* Interrupts already disabled by sc92031_suspend */ /* Interrupts already disabled by sc92031_suspend */
spin_lock(&priv->lock); spin_lock_bh(&priv->lock);
_sc92031_reset(dev); _sc92031_reset(dev);
mmiowb(); mmiowb();
spin_unlock(&priv->lock); spin_unlock_bh(&priv->lock);
sc92031_enable_interrupts(dev); sc92031_enable_interrupts(dev);
netif_device_attach(dev); netif_device_attach(dev);
......
...@@ -411,12 +411,10 @@ checkentry(const char *tablename, ...@@ -411,12 +411,10 @@ checkentry(const char *tablename,
"has invalid config pointer!\n"); "has invalid config pointer!\n");
return 0; return 0;
} }
clusterip_config_entry_get(cipinfo->config);
} else { } else {
/* Case B: This is a new rule referring to an existing /* Case B: This is a new rule referring to an existing
* clusterip config. */ * clusterip config. */
cipinfo->config = config; cipinfo->config = config;
clusterip_config_entry_get(cipinfo->config);
} }
} else { } else {
/* Case C: This is a completely new clusterip config */ /* Case C: This is a completely new clusterip config */
......
...@@ -943,7 +943,8 @@ static void tcp_cwnd_validate(struct sock *sk, struct tcp_sock *tp) ...@@ -943,7 +943,8 @@ static void tcp_cwnd_validate(struct sock *sk, struct tcp_sock *tp)
if (tp->packets_out > tp->snd_cwnd_used) if (tp->packets_out > tp->snd_cwnd_used)
tp->snd_cwnd_used = tp->packets_out; tp->snd_cwnd_used = tp->packets_out;
if ((s32)(tcp_time_stamp - tp->snd_cwnd_stamp) >= inet_csk(sk)->icsk_rto) if (sysctl_tcp_slow_start_after_idle &&
(s32)(tcp_time_stamp - tp->snd_cwnd_stamp) >= inet_csk(sk)->icsk_rto)
tcp_cwnd_application_limited(sk); tcp_cwnd_application_limited(sk);
} }
} }
......
...@@ -245,9 +245,9 @@ tcindex_set_parms(struct tcf_proto *tp, unsigned long base, u32 handle, ...@@ -245,9 +245,9 @@ tcindex_set_parms(struct tcf_proto *tp, unsigned long base, u32 handle,
} }
if (tb[TCA_TCINDEX_SHIFT-1]) { if (tb[TCA_TCINDEX_SHIFT-1]) {
if (RTA_PAYLOAD(tb[TCA_TCINDEX_SHIFT-1]) < sizeof(u16)) if (RTA_PAYLOAD(tb[TCA_TCINDEX_SHIFT-1]) < sizeof(int))
goto errout; goto errout;
cp.shift = *(u16 *) RTA_DATA(tb[TCA_TCINDEX_SHIFT-1]); cp.shift = *(int *) RTA_DATA(tb[TCA_TCINDEX_SHIFT-1]);
} }
err = -EBUSY; err = -EBUSY;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment