lkml.org 
[lkml]   [2021]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/2] net: cipso: fix warnings in netlbl_cipsov4_add_std
    Date
    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")
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    ---
    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 4f50a64315cf..50f40943c815 100644
    --- a/net/netlabel/netlabel_cipso_v4.c
    +++ b/net/netlabel/netlabel_cipso_v4.c
    @@ -187,14 +187,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;
    @@ -263,7 +263,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;
    @@ -271,7 +271,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.32.0
    \
     
     \ /
      Last update: 2021-07-10 09:10    [W:2.555 / U:0.244 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site