Skip to content

Commit

Permalink
netlink: Don't shift with UB on nlk->ngroups
Browse files Browse the repository at this point in the history
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: 7acf9d4 ("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>
  • Loading branch information
Dmitry Safonov authored and David S. Miller committed Jul 30, 2018
1 parent af87f72 commit 61f4b23
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion net/netlink/af_netlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -1008,7 +1008,11 @@ static int netlink_bind(struct socket *sock, struct sockaddr *addr,
if (err)
return err;
}
groups &= (1UL << nlk->ngroups) - 1;

if (nlk->ngroups == 0)
groups = 0;
else
groups &= (1ULL << nlk->ngroups) - 1;

bound = nlk->bound;
if (bound) {
Expand Down

0 comments on commit 61f4b23

Please sign in to comment.