forked from mirrors/linux
		
	netfilter: nf_queue: fix reinject verdict handling
This patch fixes netfilter hook traversal when there are more than 1 hooks
returning NF_QUEUE verdict. When the first queue reinjects the packet,
'nf_reinject' starts traversing hooks with a proper hook_index. However,
if it again receives a NF_QUEUE verdict (by some other netfilter hook), it
queues the packet with a wrong hook_index. So, when the second queue
reinjects the packet, it re-executes hooks in between.
Fixes: 960632ece6 ("netfilter: convert hook list to an array")
Signed-off-by: Jagdish Motwani <jagdish.motwani@sophos.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
			
			
This commit is contained in:
		
							parent
							
								
									2c82c7e724
								
							
						
					
					
						commit
						946c0d8e6e
					
				
					 1 changed files with 1 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -255,6 +255,7 @@ static unsigned int nf_iterate(struct sk_buff *skb,
 | 
			
		|||
repeat:
 | 
			
		||||
		verdict = nf_hook_entry_hookfn(hook, skb, state);
 | 
			
		||||
		if (verdict != NF_ACCEPT) {
 | 
			
		||||
			*index = i;
 | 
			
		||||
			if (verdict != NF_REPEAT)
 | 
			
		||||
				return verdict;
 | 
			
		||||
			goto repeat;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue