• F
    sctp: sysctl: make extra pointers netns aware · da05cecc
    Firo Yang 提交于
    Recently, a customer reported that from their container whose
    net namespace is different to the host's init_net, they can't set
    the container's net.sctp.rto_max to any value smaller than
    init_net.sctp.rto_min.
    
    For instance,
    Host:
    sudo sysctl net.sctp.rto_min
    net.sctp.rto_min = 1000
    
    Container:
    echo 100 > /mnt/proc-net/sctp/rto_min
    echo 400 > /mnt/proc-net/sctp/rto_max
    echo: write error: Invalid argument
    
    This is caused by the check made from this'commit 4f3fdf3b
    ("sctp: add check rto_min and rto_max in sysctl")'
    When validating the input value, it's always referring the boundary
    value set for the init_net namespace.
    
    Having container's rto_max smaller than host's init_net.sctp.rto_min
    does make sense. Consider that the rto between two containers on the
    same host is very likely smaller than it for two hosts.
    
    So to fix this problem, as suggested by Marcelo, this patch makes the
    extra pointers of rto_min, rto_max, pf_retrans, and ps_retrans point
    to the corresponding variables from the newly created net namespace while
    the new net namespace is being registered in sctp_sysctl_net_register.
    
    Fixes: 4f3fdf3b ("sctp: add check rto_min and rto_max in sysctl")
    Reviewed-by: NMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Reviewed-by: NJakub Kicinski <kuba@kernel.org>
    Acked-by: NMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: NFiro Yang <firo.yang@suse.com>
    Link: https://lore.kernel.org/r/20221209054854.23889-1-firo.yang@suse.comSigned-off-by: NJakub Kicinski <kuba@kernel.org>
    da05cecc
sysctl.c 15.9 KB