mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	netlink: Don't shift with UB on nlk->ngroups
On i386 nlk->ngroups might be 32 or 0. Which leads to UB, resulting in
hang during boot.
Check for 0 ngroups and use (unsigned long long) as a type to shift.
Fixes: 7acf9d4237 ("netlink: Do not subscribe to non-existent groups").
Reported-by: kernel test robot <rong.a.chen@intel.com>
Signed-off-by: Dmitry Safonov <dima@arista.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
			
			
This commit is contained in:
		
							parent
							
								
									af87f72e75
								
							
						
					
					
						commit
						61f4b23769
					
				
					 1 changed files with 5 additions and 1 deletions
				
			
		| 
						 | 
					@ -1008,7 +1008,11 @@ static int netlink_bind(struct socket *sock, struct sockaddr *addr,
 | 
				
			||||||
		if (err)
 | 
							if (err)
 | 
				
			||||||
			return err;
 | 
								return err;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	groups &= (1UL << nlk->ngroups) - 1;
 | 
					
 | 
				
			||||||
 | 
						if (nlk->ngroups == 0)
 | 
				
			||||||
 | 
							groups = 0;
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							groups &= (1ULL << nlk->ngroups) - 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bound = nlk->bound;
 | 
						bound = nlk->bound;
 | 
				
			||||||
	if (bound) {
 | 
						if (bound) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue