lkml.org 
[lkml]   [2021]   [Sep]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 057/217] net: cipso: fix warnings in netlbl_cipsov4_add_std
    Date
    From: Pavel Skripkin <paskripkin@gmail.com>

    [ Upstream commit 8ca34a13f7f9b3fa2c464160ffe8cc1a72088204 ]

    Syzbot reported warning in netlbl_cipsov4_add(). The
    problem was in too big doi_def->map.std->lvl.local_size
    passed to kcalloc(). Since this value comes from userpace there is
    no need to warn if value is not correct.

    The same problem may occur with other kcalloc() calls in
    this function, so, I've added __GFP_NOWARN flag to all
    kcalloc() calls there.

    Reported-and-tested-by: syzbot+cdd51ee2e6b0b2e18c0d@syzkaller.appspotmail.com
    Fixes: 96cb8e3313c7 ("[NetLabel]: CIPSOv4 and Unlabeled packet integration")
    Acked-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/netlabel/netlabel_cipso_v4.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    diff --git a/net/netlabel/netlabel_cipso_v4.c b/net/netlabel/netlabel_cipso_v4.c
    index 3e3494c8d42f..0559d442ad80 100644
    --- a/net/netlabel/netlabel_cipso_v4.c
    +++ b/net/netlabel/netlabel_cipso_v4.c
    @@ -198,14 +198,14 @@ static int netlbl_cipsov4_add_std(struct genl_info *info,
    }
    doi_def->map.std->lvl.local = kcalloc(doi_def->map.std->lvl.local_size,
    sizeof(u32),
    - GFP_KERNEL);
    + GFP_KERNEL | __GFP_NOWARN);
    if (doi_def->map.std->lvl.local == NULL) {
    ret_val = -ENOMEM;
    goto add_std_failure;
    }
    doi_def->map.std->lvl.cipso = kcalloc(doi_def->map.std->lvl.cipso_size,
    sizeof(u32),
    - GFP_KERNEL);
    + GFP_KERNEL | __GFP_NOWARN);
    if (doi_def->map.std->lvl.cipso == NULL) {
    ret_val = -ENOMEM;
    goto add_std_failure;
    @@ -273,7 +273,7 @@ static int netlbl_cipsov4_add_std(struct genl_info *info,
    doi_def->map.std->cat.local = kcalloc(
    doi_def->map.std->cat.local_size,
    sizeof(u32),
    - GFP_KERNEL);
    + GFP_KERNEL | __GFP_NOWARN);
    if (doi_def->map.std->cat.local == NULL) {
    ret_val = -ENOMEM;
    goto add_std_failure;
    @@ -281,7 +281,7 @@ static int netlbl_cipsov4_add_std(struct genl_info *info,
    doi_def->map.std->cat.cipso = kcalloc(
    doi_def->map.std->cat.cipso_size,
    sizeof(u32),
    - GFP_KERNEL);
    + GFP_KERNEL | __GFP_NOWARN);
    if (doi_def->map.std->cat.cipso == NULL) {
    ret_val = -ENOMEM;
    goto add_std_failure;
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-09-20 19:37    [W:2.110 / U:0.380 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site