Now that sockopt_init_user() was already merged, builds a user-backed sockopt_t from the __user pair. A getsockopt leaf can then take a sockopt_t behind a thin __user wrapper: the wrapper builds it, calls the leaf, and writes the length back to optlen. The leaf copies with copy_to_iter() instead of copy_to_user().
Convert four more leaves the way udp and raw already were: ipv6 raw (do_rawv6_getsockopt), ieee802154 dgram, phonet pep, and tls (do_tls_getsockopt and its per-option helpers). Converting phonet surfaced a pre-existing bug: pep_getsockopt() clamps the length it reports but writes a full int with put_user(), overrunning an optval buffer shorter than sizeof(int). It is fixed in its own patch, with a Fixes: tag, before the phonet conversion, so it can be backported alone. The last patch adds getsockopt_iter selftest fixtures for rawv6, ieee802154, phonet and tls, checking the returned length and errno across exact, oversized and short buffers, an unknown optname and a bad level. For full motivation about these changes, please check the initial thread at link https://lore.kernel.org/all/[email protected]/#t Signed-off-by: Breno Leitao <[email protected]> --- Changes in v2: - Replace min_t() by umin() (David) - Link to v1: https://patch.msgid.link/[email protected] --- Breno Leitao (7): ipv6: raw: drop unused level argument from do_rawv6_getsockopt ipv6: raw: convert do_rawv6_getsockopt to sockopt_t ieee802154: convert dgram getsockopt to sockopt_t phonet: pep: do not write beyond optlen in getsockopt phonet: pep: convert getsockopt to sockopt_t tls: convert getsockopt to sockopt_t selftests: net: getsockopt_iter: cover rawv6, ieee802154, phonet and tls net/ieee802154/socket.c | 38 ++- net/ipv6/raw.c | 27 +- net/phonet/pep.c | 36 ++- net/tls/tls_main.c | 80 +++-- tools/testing/selftests/net/getsockopt_iter.c | 424 ++++++++++++++++++++++++++ 5 files changed, 533 insertions(+), 72 deletions(-) --- base-commit: f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e change-id: 20260715-getsockopt_phase4-180209cfc60a Best regards, -- Breno Leitao <[email protected]>

