Merge branch 'master' into next
Conflicts: security/keys/internal.h security/keys/process_keys.c security/keys/request_key.c Fixed conflicts above by using the non 'tsk' versions. Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
@@ -2218,6 +2218,9 @@ int netif_receive_skb(struct sk_buff *skb)
|
||||
int ret = NET_RX_DROP;
|
||||
__be16 type;
|
||||
|
||||
if (skb->vlan_tci && vlan_hwaccel_do_receive(skb))
|
||||
return NET_RX_SUCCESS;
|
||||
|
||||
/* if we've gotten here through NAPI, check netpoll */
|
||||
if (netpoll_receive_skb(skb))
|
||||
return NET_RX_DROP;
|
||||
|
@@ -77,6 +77,7 @@ static int scm_fp_copy(struct cmsghdr *cmsg, struct scm_fp_list **fplp)
|
||||
if (!fpl)
|
||||
return -ENOMEM;
|
||||
*fplp = fpl;
|
||||
INIT_LIST_HEAD(&fpl->list);
|
||||
fpl->count = 0;
|
||||
}
|
||||
fpp = &fpl->fp[fpl->count];
|
||||
@@ -108,9 +109,25 @@ void __scm_destroy(struct scm_cookie *scm)
|
||||
|
||||
if (fpl) {
|
||||
scm->fp = NULL;
|
||||
for (i=fpl->count-1; i>=0; i--)
|
||||
fput(fpl->fp[i]);
|
||||
kfree(fpl);
|
||||
if (current->scm_work_list) {
|
||||
list_add_tail(&fpl->list, current->scm_work_list);
|
||||
} else {
|
||||
LIST_HEAD(work_list);
|
||||
|
||||
current->scm_work_list = &work_list;
|
||||
|
||||
list_add(&fpl->list, &work_list);
|
||||
while (!list_empty(&work_list)) {
|
||||
fpl = list_first_entry(&work_list, struct scm_fp_list, list);
|
||||
|
||||
list_del(&fpl->list);
|
||||
for (i=fpl->count-1; i>=0; i--)
|
||||
fput(fpl->fp[i]);
|
||||
kfree(fpl);
|
||||
}
|
||||
|
||||
current->scm_work_list = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -286,6 +303,7 @@ struct scm_fp_list *scm_fp_dup(struct scm_fp_list *fpl)
|
||||
|
||||
new_fpl = kmalloc(sizeof(*fpl), GFP_KERNEL);
|
||||
if (new_fpl) {
|
||||
INIT_LIST_HEAD(&new_fpl->list);
|
||||
for (i=fpl->count-1; i>=0; i--)
|
||||
get_file(fpl->fp[i]);
|
||||
memcpy(new_fpl, fpl, sizeof(*fpl));
|
||||
|
@@ -486,8 +486,8 @@ int skb_recycle_check(struct sk_buff *skb, int skb_size)
|
||||
shinfo->frag_list = NULL;
|
||||
|
||||
memset(skb, 0, offsetof(struct sk_buff, tail));
|
||||
skb_reset_tail_pointer(skb);
|
||||
skb->data = skb->head + NET_SKB_PAD;
|
||||
skb_reset_tail_pointer(skb);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
Reference in New Issue
Block a user