mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	fib: fix fib_rules_ops indirect calls wrappers
This patch fixes: commitb9aaec8f0b("fib: use indirect call wrappers in the most common fib_rules_ops") which didn't consider the case when CONFIG_IPV6_MULTIPLE_TABLES is not set. Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Fixes:b9aaec8f0b("fib: use indirect call wrappers in the most common fib_rules_ops") Signed-off-by: Brian Vazquez <brianvv@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									a41cf09b8e
								
							
						
					
					
						commit
						41d707b733
					
				
					 1 changed files with 19 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -16,6 +16,13 @@
 | 
			
		|||
#include <net/ip_tunnels.h>
 | 
			
		||||
#include <linux/indirect_call_wrapper.h>
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
 | 
			
		||||
#define INDIRECT_CALL_MT(f, f2, f1, ...) \
 | 
			
		||||
	INDIRECT_CALL_INET(f, f2, f1, __VA_ARGS__)
 | 
			
		||||
#else
 | 
			
		||||
#define INDIRECT_CALL_MT(f, f2, f1, ...) INDIRECT_CALL_1(f, f1, __VA_ARGS__)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static const struct fib_kuid_range fib_kuid_range_unset = {
 | 
			
		||||
	KUIDT_INIT(0),
 | 
			
		||||
	KUIDT_INIT(~0),
 | 
			
		||||
| 
						 | 
				
			
			@ -268,7 +275,7 @@ static int fib_rule_match(struct fib_rule *rule, struct fib_rules_ops *ops,
 | 
			
		|||
	    uid_gt(fl->flowi_uid, rule->uid_range.end))
 | 
			
		||||
		goto out;
 | 
			
		||||
 | 
			
		||||
	ret = INDIRECT_CALL_INET(ops->match,
 | 
			
		||||
	ret = INDIRECT_CALL_MT(ops->match,
 | 
			
		||||
			       fib6_rule_match,
 | 
			
		||||
			       fib4_rule_match,
 | 
			
		||||
			       rule, fl, flags);
 | 
			
		||||
| 
						 | 
				
			
			@ -302,12 +309,12 @@ int fib_rules_lookup(struct fib_rules_ops *ops, struct flowi *fl,
 | 
			
		|||
		} else if (rule->action == FR_ACT_NOP)
 | 
			
		||||
			continue;
 | 
			
		||||
		else
 | 
			
		||||
			err = INDIRECT_CALL_INET(ops->action,
 | 
			
		||||
			err = INDIRECT_CALL_MT(ops->action,
 | 
			
		||||
					       fib6_rule_action,
 | 
			
		||||
					       fib4_rule_action,
 | 
			
		||||
					       rule, fl, flags, arg);
 | 
			
		||||
 | 
			
		||||
		if (!err && ops->suppress && INDIRECT_CALL_INET(ops->suppress,
 | 
			
		||||
		if (!err && ops->suppress && INDIRECT_CALL_MT(ops->suppress,
 | 
			
		||||
							      fib6_rule_suppress,
 | 
			
		||||
							      fib4_rule_suppress,
 | 
			
		||||
							      rule, arg))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue