]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
netlink: convert to getsockopt_iter
authorBreno Leitao <leitao@debian.org>
Fri, 1 May 2026 15:52:51 +0000 (08:52 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 5 May 2026 02:02:30 +0000 (19:02 -0700)
commit390bf43b7788a5cbe11be68fe56ef0d3ffd4b81f
tree3c12910c9e2ec08b3d87a54e77567685a40492e9
parent3f3aa77ff1c8b45ec8c9e40212f1a24a93e00df3
netlink: convert to getsockopt_iter

Convert AF_NETLINK's getsockopt implementation to use the new
getsockopt_iter callback with sockopt_t.

Key changes:
- Replace (char __user *optval, int __user *optlen) with sockopt_t *opt
- Use opt->optlen for buffer length (input) and returned size (output)
- Use copy_to_iter() instead of put_user()/copy_to_user()
- For NETLINK_LIST_MEMBERSHIPS: walk the groups bitmap and emit each
  u32 sequentially via copy_to_iter(), then set opt->optlen to the
  total size required (ALIGN(BITS_TO_BYTES(ngroups), sizeof(u32))).
  The wrapper writes opt->optlen back to userspace even on partial
  failure, preserving the existing API that lets userspace discover
  the needed allocation size.

Signed-off-by: Breno Leitao <leitao@debian.org>
Acked-by: Stanislav Fomichev <sdf@fomichev.me>
Link: https://patch.msgid.link/20260501-getsock_one-v1-1-810ce23ea70e@debian.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/netlink/af_netlink.c