mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
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: (27 commits) netfilter: fix CONFIG_COMPAT support isdn/avm: fix build when PCMCIA is not enabled header: fix broken headers for user space e1000e: don't check for alternate MAC addr on parts that don't support it e1000e: disable ASPM L1 on 82573 ll_temac: Fix poll implementation netxen: fix a race in netxen_nic_get_stats() qlnic: fix a race in qlcnic_get_stats() irda: fix a race in irlan_eth_xmit() net: sh_eth: remove unused variable netxen: update version 4.0.74 netxen: fix inconsistent lock state vlan: Match underlying dev carrier on vlan add ibmveth: Fix opps during MTU change on an active device ehea: Fix synchronization between HW and SW send queue bnx2x: Update bnx2x version to 1.52.53-4 bnx2x: Fix PHY locking problem rds: fix a leak of kernel memory netlink: fix compat recvmsg netfilter: fix userspace header warning ...
This commit is contained in:
commit
d1b113bb02
61 changed files with 2064 additions and 246 deletions
|
|
@ -510,7 +510,8 @@ static int vlan_dev_open(struct net_device *dev)
|
|||
if (vlan->flags & VLAN_FLAG_GVRP)
|
||||
vlan_gvrp_request_join(dev);
|
||||
|
||||
netif_carrier_on(dev);
|
||||
if (netif_carrier_ok(real_dev))
|
||||
netif_carrier_on(dev);
|
||||
return 0;
|
||||
|
||||
clear_allmulti:
|
||||
|
|
|
|||
|
|
@ -1420,6 +1420,9 @@ static int translate_compat_table(const char *name,
|
|||
if (ret != 0)
|
||||
break;
|
||||
++i;
|
||||
if (strcmp(arpt_get_target(iter1)->u.user.name,
|
||||
XT_ERROR_TARGET) == 0)
|
||||
++newinfo->stacksize;
|
||||
}
|
||||
if (ret) {
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1751,6 +1751,9 @@ translate_compat_table(struct net *net,
|
|||
if (ret != 0)
|
||||
break;
|
||||
++i;
|
||||
if (strcmp(ipt_get_target(iter1)->u.user.name,
|
||||
XT_ERROR_TARGET) == 0)
|
||||
++newinfo->stacksize;
|
||||
}
|
||||
if (ret) {
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1766,6 +1766,9 @@ translate_compat_table(struct net *net,
|
|||
if (ret != 0)
|
||||
break;
|
||||
++i;
|
||||
if (strcmp(ip6t_get_target(iter1)->u.user.name,
|
||||
XT_ERROR_TARGET) == 0)
|
||||
++newinfo->stacksize;
|
||||
}
|
||||
if (ret) {
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -169,6 +169,7 @@ static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb,
|
|||
{
|
||||
struct irlan_cb *self = netdev_priv(dev);
|
||||
int ret;
|
||||
unsigned int len;
|
||||
|
||||
/* skb headroom large enough to contain all IrDA-headers? */
|
||||
if ((skb_headroom(skb) < self->max_header_size) || (skb_shared(skb))) {
|
||||
|
|
@ -188,6 +189,7 @@ static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb,
|
|||
|
||||
dev->trans_start = jiffies;
|
||||
|
||||
len = skb->len;
|
||||
/* Now queue the packet in the transport layer */
|
||||
if (self->use_udata)
|
||||
ret = irttp_udata_request(self->tsap_data, skb);
|
||||
|
|
@ -209,7 +211,7 @@ static netdev_tx_t irlan_eth_xmit(struct sk_buff *skb,
|
|||
self->stats.tx_dropped++;
|
||||
} else {
|
||||
self->stats.tx_packets++;
|
||||
self->stats.tx_bytes += skb->len;
|
||||
self->stats.tx_bytes += len;
|
||||
}
|
||||
|
||||
return NETDEV_TX_OK;
|
||||
|
|
|
|||
|
|
@ -1406,7 +1406,7 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
|
|||
struct netlink_sock *nlk = nlk_sk(sk);
|
||||
int noblock = flags&MSG_DONTWAIT;
|
||||
size_t copied;
|
||||
struct sk_buff *skb, *frag __maybe_unused = NULL;
|
||||
struct sk_buff *skb, *data_skb;
|
||||
int err;
|
||||
|
||||
if (flags&MSG_OOB)
|
||||
|
|
@ -1418,45 +1418,35 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
|
|||
if (skb == NULL)
|
||||
goto out;
|
||||
|
||||
data_skb = skb;
|
||||
|
||||
#ifdef CONFIG_COMPAT_NETLINK_MESSAGES
|
||||
if (unlikely(skb_shinfo(skb)->frag_list)) {
|
||||
bool need_compat = !!(flags & MSG_CMSG_COMPAT);
|
||||
|
||||
/*
|
||||
* If this skb has a frag_list, then here that means that
|
||||
* we will have to use the frag_list skb for compat tasks
|
||||
* and the regular skb for non-compat tasks.
|
||||
* If this skb has a frag_list, then here that means that we
|
||||
* will have to use the frag_list skb's data for compat tasks
|
||||
* and the regular skb's data for normal (non-compat) tasks.
|
||||
*
|
||||
* The skb might (and likely will) be cloned, so we can't
|
||||
* just reset frag_list and go on with things -- we need to
|
||||
* keep that. For the compat case that's easy -- simply get
|
||||
* a reference to the compat skb and free the regular one
|
||||
* including the frag. For the non-compat case, we need to
|
||||
* avoid sending the frag to the user -- so assign NULL but
|
||||
* restore it below before freeing the skb.
|
||||
* If we need to send the compat skb, assign it to the
|
||||
* 'data_skb' variable so that it will be used below for data
|
||||
* copying. We keep 'skb' for everything else, including
|
||||
* freeing both later.
|
||||
*/
|
||||
if (need_compat) {
|
||||
struct sk_buff *compskb = skb_shinfo(skb)->frag_list;
|
||||
skb_get(compskb);
|
||||
kfree_skb(skb);
|
||||
skb = compskb;
|
||||
} else {
|
||||
frag = skb_shinfo(skb)->frag_list;
|
||||
skb_shinfo(skb)->frag_list = NULL;
|
||||
}
|
||||
if (flags & MSG_CMSG_COMPAT)
|
||||
data_skb = skb_shinfo(skb)->frag_list;
|
||||
}
|
||||
#endif
|
||||
|
||||
msg->msg_namelen = 0;
|
||||
|
||||
copied = skb->len;
|
||||
copied = data_skb->len;
|
||||
if (len < copied) {
|
||||
msg->msg_flags |= MSG_TRUNC;
|
||||
copied = len;
|
||||
}
|
||||
|
||||
skb_reset_transport_header(skb);
|
||||
err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
|
||||
skb_reset_transport_header(data_skb);
|
||||
err = skb_copy_datagram_iovec(data_skb, 0, msg->msg_iov, copied);
|
||||
|
||||
if (msg->msg_name) {
|
||||
struct sockaddr_nl *addr = (struct sockaddr_nl *)msg->msg_name;
|
||||
|
|
@ -1476,11 +1466,7 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
|
|||
}
|
||||
siocb->scm->creds = *NETLINK_CREDS(skb);
|
||||
if (flags & MSG_TRUNC)
|
||||
copied = skb->len;
|
||||
|
||||
#ifdef CONFIG_COMPAT_NETLINK_MESSAGES
|
||||
skb_shinfo(skb)->frag_list = frag;
|
||||
#endif
|
||||
copied = data_skb->len;
|
||||
|
||||
skb_free_datagram(sk, skb);
|
||||
|
||||
|
|
|
|||
|
|
@ -297,7 +297,7 @@ static int rds_still_queued(struct rds_sock *rs, struct rds_incoming *inc,
|
|||
int rds_notify_queue_get(struct rds_sock *rs, struct msghdr *msghdr)
|
||||
{
|
||||
struct rds_notifier *notifier;
|
||||
struct rds_rdma_notify cmsg;
|
||||
struct rds_rdma_notify cmsg = { 0 }; /* fill holes with zero */
|
||||
unsigned int count = 0, max_messages = ~0U;
|
||||
unsigned long flags;
|
||||
LIST_HEAD(copy);
|
||||
|
|
|
|||
Loading…
Reference in a new issue