diff options
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 0f72ff5d34ba..1f79b9aa9a3f 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -5924,7 +5924,8 @@ static void skb_gro_reset_offset(struct sk_buff *skb)  	NAPI_GRO_CB(skb)->frag0_len = 0;  	if (!skb_headlen(skb) && pinfo->nr_frags && -	    !PageHighMem(skb_frag_page(frag0))) { +	    !PageHighMem(skb_frag_page(frag0)) && +	    (!NET_IP_ALIGN || !(skb_frag_off(frag0) & 3))) {  		NAPI_GRO_CB(skb)->frag0 = skb_frag_address(frag0);  		NAPI_GRO_CB(skb)->frag0_len = min_t(unsigned int,  						    skb_frag_size(frag0), @@ -6992,7 +6993,7 @@ static int napi_thread_wait(struct napi_struct *napi)  	set_current_state(TASK_INTERRUPTIBLE); -	while (!kthread_should_stop() && !napi_disable_pending(napi)) { +	while (!kthread_should_stop()) {  		/* Testing SCHED_THREADED bit here to make sure the current  		 * kthread owns this napi and could poll on this napi.  		 * Testing SCHED bit is not enough because SCHED bit might be @@ -7010,6 +7011,7 @@ static int napi_thread_wait(struct napi_struct *napi)  		set_current_state(TASK_INTERRUPTIBLE);  	}  	__set_current_state(TASK_RUNNING); +  	return -1;  }  | 
