• G
    tcp: sysctl: Fix a race to avoid unexpected 0 window from space · c4836742
    Gao Feng 提交于
    Because sysctl_tcp_adv_win_scale could be changed any time, so there
    is one race in tcp_win_from_space.
    For example,
    1.sysctl_tcp_adv_win_scale<=0 (sysctl_tcp_adv_win_scale is negative now)
    2.space>>(-sysctl_tcp_adv_win_scale) (sysctl_tcp_adv_win_scale is postive now)
    
    As a result, tcp_win_from_space returns 0. It is unexpected.
    
    Certainly if the compiler put the sysctl_tcp_adv_win_scale into one
    register firstly, then use the register directly, it would be ok.
    But we could not depend on the compiler behavior.
    Signed-off-by: NGao Feng <fgao@ikuai8.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    c4836742
tcp.h 58.5 KB