From: Dmitry Safonov dima@arista.com Date: Sun, 05 Aug 2018 00:44:28 +0100
On Sat, 2018-08-04 at 16:33 -0700, David Miller wrote:
From: Dmitry Safonov dima@arista.com Date: Sun, 05 Aug 2018 00:26:38 +0100
Thanks for the testing, sorry again for the breakage. Will send the patch shortly (with sizeof(unsigned long long)
instead of
hard-coded 64). Hopefully, not too late.
'groups' is "long unsigned int" not "unsigned long long"
long unsigned int groups = nladdr->nl_groups;
And nladdr->nl_groups is specified as "__u32"
So the size of the relevant bits is actually strictly 32-bit.
This makes also the "ULL" in your constant specification incorrect as well.
So much crazy stuff going on here :-/
Right, I misslooked that.. How does this work on Android then? I doubt they changed uabi.
We can have many more than 32 multicast group subscriptions.
That's why the memberships are also stored in the nlk->groups[] array.
I'm --><--- this close to simply reverting all of your changes, the missed masking seems to be quite harmless.