Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
The only slightly tricky merge conflict was the netdevsim because the mutex locking fix overlapped a lot of driver reload reorganization. The rest were (relatively) trivial in nature. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -953,8 +953,8 @@ static inline void sk_incoming_cpu_update(struct sock *sk)
|
||||
{
|
||||
int cpu = raw_smp_processor_id();
|
||||
|
||||
if (unlikely(sk->sk_incoming_cpu != cpu))
|
||||
sk->sk_incoming_cpu = cpu;
|
||||
if (unlikely(READ_ONCE(sk->sk_incoming_cpu) != cpu))
|
||||
WRITE_ONCE(sk->sk_incoming_cpu, cpu);
|
||||
}
|
||||
|
||||
static inline void sock_rps_record_flow_hash(__u32 hash)
|
||||
@@ -2241,12 +2241,17 @@ struct sk_buff *sk_stream_alloc_skb(struct sock *sk, int size, gfp_t gfp,
|
||||
* sk_page_frag - return an appropriate page_frag
|
||||
* @sk: socket
|
||||
*
|
||||
* If socket allocation mode allows current thread to sleep, it means its
|
||||
* safe to use the per task page_frag instead of the per socket one.
|
||||
* Use the per task page_frag instead of the per socket one for
|
||||
* optimization when we know that we're in the normal context and owns
|
||||
* everything that's associated with %current.
|
||||
*
|
||||
* gfpflags_allow_blocking() isn't enough here as direct reclaim may nest
|
||||
* inside other socket operations and end up recursing into sk_page_frag()
|
||||
* while it's already in use.
|
||||
*/
|
||||
static inline struct page_frag *sk_page_frag(struct sock *sk)
|
||||
{
|
||||
if (gfpflags_allow_blocking(sk->sk_allocation))
|
||||
if (gfpflags_normal_context(sk->sk_allocation))
|
||||
return ¤t->task_frag;
|
||||
|
||||
return &sk->sk_frag;
|
||||
|
||||
Reference in New Issue
Block a user