• Daniel Latypov's avatar
    kunit: fix too small allocation when using suite-only kunit.filter_glob · cd94fbc2
    Daniel Latypov authored
    When a user filters by a suite and not a test, e.g.
    $ ./tools/testing/kunit/kunit.py run 'suite_name'
    
    it hits this code
      const int len = strlen(filter_glob);
      ...
      parsed->suite_glob = kmalloc(len, GFP_KERNEL);
    which fails to allocate space for the terminating NULL.
    
    Somehow, it seems like we can't easily reproduce this under UML, so the
    existing `parse_filter_test()` didn't catch this.
    
    Fix this by allocating `len + 1` and switch to kzalloc() just to be a
    bit more defensive. We're only going to run this code once per kernel
    boot, and it should never be very long.
    
    Also update the unit tests to be a bit more cautious.
    This bug showed up as a NULL pointer dereference here:
    >  KUNIT_EXPECT_STREQ(test, (const char *)filtered.start[0][0]->name, "suite0");
    `filtered.start[0][0]` was NULL, and `name` is at offset 0 in the struct,
    so `...->name` was also NULL.
    
    Fixes: 3b29021ddd10 ("kunit: tool: allow filtering test cases via glob")
    Reported-by: default avatarkernel test robot <oliver.sang@intel.com>
    Signed-off-by: default avatarDaniel Latypov <dlatypov@google.com>
    Reviewed-by: default avatarDavid Gow <davidgow@google.com>
    Acked-by: default avatarBrendan Higgins <brendanhiggins@google.com>
    Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
    cd94fbc2
executor_test.c 6.6 KB