Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/cavium/Kconfig The cavium conflict was overlapping dependency changes. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -131,12 +131,12 @@ out_noerr:
|
||||
goto out;
|
||||
}
|
||||
|
||||
static int skb_set_peeked(struct sk_buff *skb)
|
||||
static struct sk_buff *skb_set_peeked(struct sk_buff *skb)
|
||||
{
|
||||
struct sk_buff *nskb;
|
||||
|
||||
if (skb->peeked)
|
||||
return 0;
|
||||
return skb;
|
||||
|
||||
/* We have to unshare an skb before modifying it. */
|
||||
if (!skb_shared(skb))
|
||||
@@ -144,7 +144,7 @@ static int skb_set_peeked(struct sk_buff *skb)
|
||||
|
||||
nskb = skb_clone(skb, GFP_ATOMIC);
|
||||
if (!nskb)
|
||||
return -ENOMEM;
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
skb->prev->next = nskb;
|
||||
skb->next->prev = nskb;
|
||||
@@ -157,7 +157,7 @@ static int skb_set_peeked(struct sk_buff *skb)
|
||||
done:
|
||||
skb->peeked = 1;
|
||||
|
||||
return 0;
|
||||
return skb;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -229,8 +229,9 @@ struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned int flags,
|
||||
continue;
|
||||
}
|
||||
|
||||
error = skb_set_peeked(skb);
|
||||
if (error)
|
||||
skb = skb_set_peeked(skb);
|
||||
error = PTR_ERR(skb);
|
||||
if (IS_ERR(skb))
|
||||
goto unlock_err;
|
||||
|
||||
atomic_inc(&skb->users);
|
||||
|
@@ -3513,8 +3513,6 @@ static int pktgen_thread_worker(void *arg)
|
||||
|
||||
set_freezable();
|
||||
|
||||
__set_current_state(TASK_RUNNING);
|
||||
|
||||
while (!kthread_should_stop()) {
|
||||
pkt_dev = next_to_run(t);
|
||||
|
||||
@@ -3559,7 +3557,6 @@ static int pktgen_thread_worker(void *arg)
|
||||
|
||||
try_to_freeze();
|
||||
}
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
|
||||
pr_debug("%s stopping all device\n", t->tsk->comm);
|
||||
pktgen_stop(t);
|
||||
|
@@ -103,10 +103,16 @@ void reqsk_queue_destroy(struct request_sock_queue *queue)
|
||||
spin_lock_bh(&queue->syn_wait_lock);
|
||||
while ((req = lopt->syn_table[i]) != NULL) {
|
||||
lopt->syn_table[i] = req->dl_next;
|
||||
/* Because of following del_timer_sync(),
|
||||
* we must release the spinlock here
|
||||
* or risk a dead lock.
|
||||
*/
|
||||
spin_unlock_bh(&queue->syn_wait_lock);
|
||||
atomic_inc(&lopt->qlen_dec);
|
||||
if (del_timer(&req->rsk_timer))
|
||||
if (del_timer_sync(&req->rsk_timer))
|
||||
reqsk_put(req);
|
||||
reqsk_put(req);
|
||||
spin_lock_bh(&queue->syn_wait_lock);
|
||||
}
|
||||
spin_unlock_bh(&queue->syn_wait_lock);
|
||||
}
|
||||
|
Reference in New Issue
Block a user