From: Pedro Tammela Date: Mon, 29 May 2023 15:33:35 +0000 (-0300) Subject: net/netlink: fix NETLINK_LIST_MEMBERSHIPS length report X-Git-Tag: v6.6.17~4766^2~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f4e4534850a9d18c250a93f8d7fbb51310828110;p=platform%2Fkernel%2Flinux-rpi.git net/netlink: fix NETLINK_LIST_MEMBERSHIPS length report The current code for the length calculation wrongly truncates the reported length of the groups array, causing an under report of the subscribed groups. To fix this, use 'BITS_TO_BYTES()' which rounds up the division by 8. Fixes: b42be38b2778 ("netlink: add API to retrieve all group memberships") Signed-off-by: Pedro Tammela Reviewed-by: Simon Horman Link: https://lore.kernel.org/r/20230529153335.389815-1-pctammela@mojatatu.com Signed-off-by: Jakub Kicinski --- diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index c878041..3a1e0fd 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -1779,7 +1779,7 @@ static int netlink_getsockopt(struct socket *sock, int level, int optname, break; } } - if (put_user(ALIGN(nlk->ngroups / 8, sizeof(u32)), optlen)) + if (put_user(ALIGN(BITS_TO_BYTES(nlk->ngroups), sizeof(u32)), optlen)) err = -EFAULT; netlink_unlock_table(); return err;