diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index 393573a99a5a34d3ebaad3a71b36293b6c2fb19f..ac805caed2e2c50efc732c2faeddc52c06f0ef48 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -1008,6 +1008,7 @@ static int netlink_bind(struct socket *sock, struct sockaddr *addr,
 		if (err)
 			return err;
 	}
+	groups &= (1UL << nlk->ngroups) - 1;
 
 	bound = nlk->bound;
 	if (bound) {