lkml.org 
[lkml]   [2021]   [Oct]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 25/93] ipvs: check that ip_vs_conn_tab_bits is between 8 and 20
    Date
    From: Andrea Claudi <aclaudi@redhat.com>

    [ Upstream commit 69e73dbfda14fbfe748d3812da1244cce2928dcb ]

    ip_vs_conn_tab_bits may be provided by the user through the
    conn_tab_bits module parameter. If this value is greater than 31, or
    less than 0, the shift operator used to derive tab_size causes undefined
    behaviour.

    Fix this checking ip_vs_conn_tab_bits value to be in the range specified
    in ipvs Kconfig. If not, simply use default value.

    Fixes: 6f7edb4881bf ("IPVS: Allow boot time change of hash size")
    Reported-by: Yi Chen <yiche@redhat.com>
    Signed-off-by: Andrea Claudi <aclaudi@redhat.com>
    Acked-by: Julian Anastasov <ja@ssi.bg>
    Acked-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/netfilter/ipvs/ip_vs_conn.c | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c
    index c100c6b112c8..2c467c422dc6 100644
    --- a/net/netfilter/ipvs/ip_vs_conn.c
    +++ b/net/netfilter/ipvs/ip_vs_conn.c
    @@ -1468,6 +1468,10 @@ int __init ip_vs_conn_init(void)
    int idx;

    /* Compute size and mask */
    + if (ip_vs_conn_tab_bits < 8 || ip_vs_conn_tab_bits > 20) {
    + pr_info("conn_tab_bits not in [8, 20]. Using default value\n");
    + ip_vs_conn_tab_bits = CONFIG_IP_VS_TAB_BITS;
    + }
    ip_vs_conn_tab_size = 1 << ip_vs_conn_tab_bits;
    ip_vs_conn_tab_mask = ip_vs_conn_tab_size - 1;

    --
    2.33.0


    \
     
     \ /
      Last update: 2021-10-04 15:24    [W:3.434 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site