mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-27 09:02:06 +00:00
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: [IPv6]: Invalid semicolon after if statement [NET]: Fix unbalanced rcu_read_unlock in __sock_create [VLAN] net/8021q/vlanproc.c: fix check-after-use [NET]: Unexport dev_ethtool [IOAT]: Remove redundant struct member to avoid descriptor cache miss [ECONET]: remove econet_packet_type on unload [AX25]: don't free pointers to statically allocated data [PATCH] mac80211: probe for hidden SSIDs in pre-auth scan [PATCH] mac80211: fix tx status frame code [BRIDGE]: Fix typo in net/bridge/br_stp_if.c [BRIDGE]: sysfs locking fix. [NETFILTER]: nf_nat_sip: don't drop short packets [NETFILTER]: nf_conntrack_sip: fix SIP-URI parsing [NETFILTER]: nf_conntrack_sip: check sname != NULL before calling strncmp [NETFILTER]: netfilter: xt_u32 bug correction
This commit is contained in:
commit
605a494e4d
15 changed files with 39 additions and 28 deletions
|
@ -347,8 +347,7 @@ ioat_dma_prep_memcpy(struct dma_chan *chan, size_t len, int int_en)
|
||||||
new->async_tx.ack = 0; /* client is in control of this ack */
|
new->async_tx.ack = 0; /* client is in control of this ack */
|
||||||
new->async_tx.cookie = -EBUSY;
|
new->async_tx.cookie = -EBUSY;
|
||||||
|
|
||||||
pci_unmap_len_set(new, src_len, orig_len);
|
pci_unmap_len_set(new, len, orig_len);
|
||||||
pci_unmap_len_set(new, dst_len, orig_len);
|
|
||||||
spin_unlock_bh(&ioat_chan->desc_lock);
|
spin_unlock_bh(&ioat_chan->desc_lock);
|
||||||
|
|
||||||
return new ? &new->async_tx : NULL;
|
return new ? &new->async_tx : NULL;
|
||||||
|
@ -423,11 +422,11 @@ static void ioat_dma_memcpy_cleanup(struct ioat_dma_chan *chan)
|
||||||
*/
|
*/
|
||||||
pci_unmap_page(chan->device->pdev,
|
pci_unmap_page(chan->device->pdev,
|
||||||
pci_unmap_addr(desc, dst),
|
pci_unmap_addr(desc, dst),
|
||||||
pci_unmap_len(desc, dst_len),
|
pci_unmap_len(desc, len),
|
||||||
PCI_DMA_FROMDEVICE);
|
PCI_DMA_FROMDEVICE);
|
||||||
pci_unmap_page(chan->device->pdev,
|
pci_unmap_page(chan->device->pdev,
|
||||||
pci_unmap_addr(desc, src),
|
pci_unmap_addr(desc, src),
|
||||||
pci_unmap_len(desc, src_len),
|
pci_unmap_len(desc, len),
|
||||||
PCI_DMA_TODEVICE);
|
PCI_DMA_TODEVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -111,10 +111,9 @@ struct ioat_desc_sw {
|
||||||
struct ioat_dma_descriptor *hw;
|
struct ioat_dma_descriptor *hw;
|
||||||
struct list_head node;
|
struct list_head node;
|
||||||
int tx_cnt;
|
int tx_cnt;
|
||||||
|
DECLARE_PCI_UNMAP_LEN(len)
|
||||||
DECLARE_PCI_UNMAP_ADDR(src)
|
DECLARE_PCI_UNMAP_ADDR(src)
|
||||||
DECLARE_PCI_UNMAP_LEN(src_len)
|
|
||||||
DECLARE_PCI_UNMAP_ADDR(dst)
|
DECLARE_PCI_UNMAP_ADDR(dst)
|
||||||
DECLARE_PCI_UNMAP_LEN(dst_len)
|
|
||||||
struct dma_async_tx_descriptor async_tx;
|
struct dma_async_tx_descriptor async_tx;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -319,7 +319,7 @@ static int vlandev_seq_show(struct seq_file *seq, void *offset)
|
||||||
static const char fmt[] = "%30s %12lu\n";
|
static const char fmt[] = "%30s %12lu\n";
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if ((vlandev == NULL) || (!(vlandev->priv_flags & IFF_802_1Q_VLAN)))
|
if (!(vlandev->priv_flags & IFF_802_1Q_VLAN))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
seq_printf(seq, "%s VID: %d REORDER_HDR: %i dev->priv_flags: %hx\n",
|
seq_printf(seq, "%s VID: %d REORDER_HDR: %i dev->priv_flags: %hx\n",
|
||||||
|
|
|
@ -69,7 +69,6 @@ void ax25_protocol_release(unsigned int pid)
|
||||||
if (protocol->pid == pid) {
|
if (protocol->pid == pid) {
|
||||||
protocol_list = protocol->next;
|
protocol_list = protocol->next;
|
||||||
write_unlock_bh(&protocol_list_lock);
|
write_unlock_bh(&protocol_list_lock);
|
||||||
kfree(protocol);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,7 +77,6 @@ void ax25_protocol_release(unsigned int pid)
|
||||||
s = protocol->next;
|
s = protocol->next;
|
||||||
protocol->next = protocol->next->next;
|
protocol->next = protocol->next->next;
|
||||||
write_unlock_bh(&protocol_list_lock);
|
write_unlock_bh(&protocol_list_lock);
|
||||||
kfree(s);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,7 @@ static void br_stp_start(struct net_bridge *br)
|
||||||
} else {
|
} else {
|
||||||
br->stp_enabled = BR_KERNEL_STP;
|
br->stp_enabled = BR_KERNEL_STP;
|
||||||
printk(KERN_INFO "%s: starting userspace STP failed, "
|
printk(KERN_INFO "%s: starting userspace STP failed, "
|
||||||
"staring kernel STP\n", br->dev->name);
|
"starting kernel STP\n", br->dev->name);
|
||||||
|
|
||||||
/* To start timers on any ports left in blocking */
|
/* To start timers on any ports left in blocking */
|
||||||
spin_lock_bh(&br->lock);
|
spin_lock_bh(&br->lock);
|
||||||
|
|
|
@ -147,20 +147,26 @@ static ssize_t show_stp_state(struct device *d,
|
||||||
return sprintf(buf, "%d\n", br->stp_enabled);
|
return sprintf(buf, "%d\n", br->stp_enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void set_stp_state(struct net_bridge *br, unsigned long val)
|
|
||||||
{
|
|
||||||
rtnl_lock();
|
|
||||||
spin_unlock_bh(&br->lock);
|
|
||||||
br_stp_set_enabled(br, val);
|
|
||||||
spin_lock_bh(&br->lock);
|
|
||||||
rtnl_unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
static ssize_t store_stp_state(struct device *d,
|
static ssize_t store_stp_state(struct device *d,
|
||||||
struct device_attribute *attr, const char *buf,
|
struct device_attribute *attr, const char *buf,
|
||||||
size_t len)
|
size_t len)
|
||||||
{
|
{
|
||||||
return store_bridge_parm(d, buf, len, set_stp_state);
|
struct net_bridge *br = to_bridge(d);
|
||||||
|
char *endp;
|
||||||
|
unsigned long val;
|
||||||
|
|
||||||
|
if (!capable(CAP_NET_ADMIN))
|
||||||
|
return -EPERM;
|
||||||
|
|
||||||
|
val = simple_strtoul(buf, &endp, 0);
|
||||||
|
if (endp == buf)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
rtnl_lock();
|
||||||
|
br_stp_set_enabled(br, val);
|
||||||
|
rtnl_unlock();
|
||||||
|
|
||||||
}
|
}
|
||||||
static DEVICE_ATTR(stp_state, S_IRUGO | S_IWUSR, show_stp_state,
|
static DEVICE_ATTR(stp_state, S_IRUGO | S_IWUSR, show_stp_state,
|
||||||
store_stp_state);
|
store_stp_state);
|
||||||
|
|
|
@ -948,7 +948,6 @@ int dev_ethtool(struct ifreq *ifr)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(dev_ethtool);
|
|
||||||
EXPORT_SYMBOL(ethtool_op_get_link);
|
EXPORT_SYMBOL(ethtool_op_get_link);
|
||||||
EXPORT_SYMBOL(ethtool_op_get_sg);
|
EXPORT_SYMBOL(ethtool_op_get_sg);
|
||||||
EXPORT_SYMBOL(ethtool_op_get_tso);
|
EXPORT_SYMBOL(ethtool_op_get_tso);
|
||||||
|
|
|
@ -1146,6 +1146,9 @@ static void __exit econet_proto_exit(void)
|
||||||
sock_release(udpsock);
|
sock_release(udpsock);
|
||||||
#endif
|
#endif
|
||||||
unregister_netdevice_notifier(&econet_netdev_notifier);
|
unregister_netdevice_notifier(&econet_netdev_notifier);
|
||||||
|
#ifdef CONFIG_ECONET_NATIVE
|
||||||
|
dev_remove_pack(&econet_packet_type);
|
||||||
|
#endif
|
||||||
sock_unregister(econet_family_ops.family);
|
sock_unregister(econet_family_ops.family);
|
||||||
proto_unregister(&econet_proto);
|
proto_unregister(&econet_proto);
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,7 +104,7 @@ static unsigned int ip_nat_sip(struct sk_buff **pskb,
|
||||||
dataoff = ip_hdrlen(*pskb) + sizeof(struct udphdr);
|
dataoff = ip_hdrlen(*pskb) + sizeof(struct udphdr);
|
||||||
datalen = (*pskb)->len - dataoff;
|
datalen = (*pskb)->len - dataoff;
|
||||||
if (datalen < sizeof("SIP/2.0") - 1)
|
if (datalen < sizeof("SIP/2.0") - 1)
|
||||||
return NF_DROP;
|
return NF_ACCEPT;
|
||||||
|
|
||||||
addr_map_init(ct, &map);
|
addr_map_init(ct, &map);
|
||||||
|
|
||||||
|
|
|
@ -820,7 +820,7 @@ static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_txoptions *opt,
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
len = min_t(unsigned int, len, ipv6_optlen(hdr));
|
len = min_t(unsigned int, len, ipv6_optlen(hdr));
|
||||||
if (copy_to_user(optval, hdr, len));
|
if (copy_to_user(optval, hdr, len))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
return ipv6_optlen(hdr);
|
return ipv6_optlen(hdr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4678,7 +4678,6 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb,
|
||||||
memset(skb->cb, 0, sizeof(skb->cb));
|
memset(skb->cb, 0, sizeof(skb->cb));
|
||||||
netif_rx(skb);
|
netif_rx(skb);
|
||||||
skb = skb2;
|
skb = skb2;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
|
|
|
@ -2154,7 +2154,11 @@ static int ieee80211_sta_config_auth(struct net_device *dev,
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
if (ifsta->state != IEEE80211_AUTHENTICATE) {
|
if (ifsta->state != IEEE80211_AUTHENTICATE) {
|
||||||
|
if (ifsta->auto_ssid_sel)
|
||||||
ieee80211_sta_start_scan(dev, NULL, 0);
|
ieee80211_sta_start_scan(dev, NULL, 0);
|
||||||
|
else
|
||||||
|
ieee80211_sta_start_scan(dev, ifsta->ssid,
|
||||||
|
ifsta->ssid_len);
|
||||||
ifsta->state = IEEE80211_AUTHENTICATE;
|
ifsta->state = IEEE80211_AUTHENTICATE;
|
||||||
set_bit(IEEE80211_STA_REQ_AUTH, &ifsta->request);
|
set_bit(IEEE80211_STA_REQ_AUTH, &ifsta->request);
|
||||||
} else
|
} else
|
||||||
|
|
|
@ -295,6 +295,7 @@ static int epaddr_len(struct nf_conn *ct, const char *dptr,
|
||||||
static int skp_epaddr_len(struct nf_conn *ct, const char *dptr,
|
static int skp_epaddr_len(struct nf_conn *ct, const char *dptr,
|
||||||
const char *limit, int *shift)
|
const char *limit, int *shift)
|
||||||
{
|
{
|
||||||
|
const char *start = dptr;
|
||||||
int s = *shift;
|
int s = *shift;
|
||||||
|
|
||||||
/* Search for @, but stop at the end of the line.
|
/* Search for @, but stop at the end of the line.
|
||||||
|
@ -309,8 +310,10 @@ static int skp_epaddr_len(struct nf_conn *ct, const char *dptr,
|
||||||
if (dptr <= limit && *dptr == '@') {
|
if (dptr <= limit && *dptr == '@') {
|
||||||
dptr++;
|
dptr++;
|
||||||
(*shift)++;
|
(*shift)++;
|
||||||
} else
|
} else {
|
||||||
|
dptr = start;
|
||||||
*shift = s;
|
*shift = s;
|
||||||
|
}
|
||||||
|
|
||||||
return epaddr_len(ct, dptr, limit, shift);
|
return epaddr_len(ct, dptr, limit, shift);
|
||||||
}
|
}
|
||||||
|
@ -330,7 +333,8 @@ int ct_sip_get_info(struct nf_conn *ct,
|
||||||
|
|
||||||
while (dptr <= limit) {
|
while (dptr <= limit) {
|
||||||
if ((strncmp(dptr, hnfo->lname, hnfo->lnlen) != 0) &&
|
if ((strncmp(dptr, hnfo->lname, hnfo->lnlen) != 0) &&
|
||||||
(strncmp(dptr, hnfo->sname, hnfo->snlen) != 0)) {
|
(hnfo->sname == NULL ||
|
||||||
|
strncmp(dptr, hnfo->sname, hnfo->snlen) != 0)) {
|
||||||
dptr++;
|
dptr++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ static bool u32_match_it(const struct xt_u32 *data,
|
||||||
at = 0;
|
at = 0;
|
||||||
pos = ct->location[0].number;
|
pos = ct->location[0].number;
|
||||||
|
|
||||||
if (skb->len < 4 || pos > skb->len - 4);
|
if (skb->len < 4 || pos > skb->len - 4)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
ret = skb_copy_bits(skb, pos, &n, sizeof(n));
|
ret = skb_copy_bits(skb, pos, &n, sizeof(n));
|
||||||
|
|
|
@ -1168,7 +1168,7 @@ static int __sock_create(int family, int type, int protocol,
|
||||||
module_put(pf->owner);
|
module_put(pf->owner);
|
||||||
err = security_socket_post_create(sock, family, type, protocol, kern);
|
err = security_socket_post_create(sock, family, type, protocol, kern);
|
||||||
if (err)
|
if (err)
|
||||||
goto out_release;
|
goto out_sock_release;
|
||||||
*res = sock;
|
*res = sock;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue