forked from mirrors/linux
		
	net: warn about attempts to register negative ifindex
Since the xarray changes we mix returning valid ifindex and negative errno in a single int returned from dev_index_reserve(). This depends on the fact that ifindexes can't be negative. Otherwise we may insert into the xarray and return a very large negative value. This in turn may break ERR_PTR(). OvS is susceptible to this problem and lacking validation (fix posted separately for net). Reject negative ifindex explicitly. Add a warning because the input validation is better handled by the caller. Reviewed-by: Leon Romanovsky <leonro@nvidia.com> Link: https://lore.kernel.org/r/20230814205627.2914583-2-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
		
							parent
							
								
									cf74eb5a5b
								
							
						
					
					
						commit
						956db0a13b
					
				
					 1 changed files with 5 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -9589,6 +9589,11 @@ static int dev_index_reserve(struct net *net, u32 ifindex)
 | 
			
		|||
{
 | 
			
		||||
	int err;
 | 
			
		||||
 | 
			
		||||
	if (ifindex > INT_MAX) {
 | 
			
		||||
		DEBUG_NET_WARN_ON_ONCE(1);
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!ifindex)
 | 
			
		||||
		err = xa_alloc_cyclic(&net->dev_by_index, &ifindex, NULL,
 | 
			
		||||
				      xa_limit_31b, &net->ifindex, GFP_KERNEL);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue