19 May, 2018

1 commit

  • I had neglected to increment the error counter when the tests failed,
    which made the tests noisy when they fail, but not actually return an
    error code.

    Link: http://lkml.kernel.org/r/20180509114328.9887-1-mpe@ellerman.id.au
    Fixes: 3cc78125a081 ("lib/test_bitmap.c: add optimisation tests")
    Signed-off-by: Matthew Wilcox
    Signed-off-by: Michael Ellerman
    Reported-by: Michael Ellerman
    Tested-by: Michael Ellerman
    Reviewed-by: Kees Cook
    Cc: Yury Norov
    Cc: Andy Shevchenko
    Cc: Geert Uytterhoeven
    Cc: [4.13+]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matthew Wilcox
     

12 Apr, 2018

1 commit

  • This avoids an accidental stack VLA (since the compiler thinks the value
    of "len" can change, even when marked "const"). This just replaces it
    with a #define so it will DTRT.

    Seen with -Wvla. Fixed as part of the directive to remove all VLAs from
    the kernel: https://lkml.org/lkml/2018/3/7/621

    Link: http://lkml.kernel.org/r/20180307212555.GA17927@beast
    Signed-off-by: Kees Cook
    Reviewed-by: Andrew Morton
    Cc: Yury Norov
    Cc: Andy Shevchenko
    Cc: Matthew Wilcox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kees Cook
     

06 Apr, 2018

1 commit

  • syzbot is catching stalls at __bitmap_parselist()
    (https://syzkaller.appspot.com/bug?id=ad7e0351fbc90535558514a71cd3edc11681997a).
    The trigger is

    unsigned long v = 0;
    bitmap_parselist("7:,", &v, BITS_PER_LONG);

    which results in hitting infinite loop at

    while (a
    Reported-by: Tetsuo Handa
    Reported-by: syzbot
    Cc: Noam Camus
    Cc: Rasmus Villemoes
    Cc: Matthew Wilcox
    Cc: Mauro Carvalho Chehab
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yury Norov
     

07 Feb, 2018

4 commits

  • Since we have separate explicit test cases for bitmap_zero() /
    bitmap_clear() and bitmap_fill() / bitmap_set(), clean up
    test_zero_fill_copy() to only test bitmap_copy() functionality and thus
    rename a function to reflect the changes.

    While here, replace bitmap_fill() by bitmap_set() with proper values.

    Link: http://lkml.kernel.org/r/20180109172430.87452-3-andriy.shevchenko@linux.intel.com
    Signed-off-by: Andy Shevchenko
    Reviewed-by: Yury Norov
    Cc: Randy Dunlap
    Cc: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • Explicitly test bitmap_fill() and bitmap_set() functions.

    For bitmap_fill() we expect a consistent behaviour as in bitmap_zero(),
    i.e. the trailing bits will be set up to unsigned long boundary.

    Link: http://lkml.kernel.org/r/20180109172430.87452-2-andriy.shevchenko@linux.intel.com
    Signed-off-by: Andy Shevchenko
    Reviewed-by: Yury Norov
    Cc: Randy Dunlap
    Cc: Rasmus Villemoes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • Explicitly test bitmap_zero() and bitmap_clear() functions.

    Link: http://lkml.kernel.org/r/20180109172430.87452-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Andy Shevchenko
    Reviewed-by: Yury Norov
    Cc: Rasmus Villemoes
    Cc: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • with bitmap_{from,to}_arr32 over the kernel. Additionally to it:
    * __check_eq_bitmap() now takes single nbits argument.
    * __check_eq_u32_array is not used in new test but may be used in
    future. So I don't remove it here, but annotate as __used.

    Tested on arm64 and 32-bit BE mips.

    [arnd@arndb.de: perf: arm_dsu_pmu: convert to bitmap_from_arr32]
    Link: http://lkml.kernel.org/r/20180201172508.5739-2-ynorov@caviumnetworks.com
    [ynorov@caviumnetworks.com: fix net/core/ethtool.c]
    Link: http://lkml.kernel.org/r/20180205071747.4ekxtsbgxkj5b2fz@yury-thinkpad
    Link: http://lkml.kernel.org/r/20171228150019.27953-2-ynorov@caviumnetworks.com
    Signed-off-by: Yury Norov
    Signed-off-by: Arnd Bergmann
    Cc: Ben Hutchings
    Cc: David Decotigny ,
    Cc: David S. Miller ,
    Cc: Geert Uytterhoeven
    Cc: Matthew Wilcox
    Cc: Rasmus Villemoes
    Cc: Heiner Kallweit
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yury Norov
     

14 Sep, 2017

1 commit

  • With gcc 4.1.2:

    lib/test_bitmap.c:189: warning: integer constant is too large for `long' type
    lib/test_bitmap.c:190: warning: integer constant is too large for `long' type
    lib/test_bitmap.c:194: warning: integer constant is too large for `long' type
    lib/test_bitmap.c:195: warning: integer constant is too large for `long' type

    Add the missing "ULL" suffix to fix this.

    Link: http://lkml.kernel.org/r/1505040523-31230-1-git-send-email-geert@linux-m68k.org
    Fixes: 60ef690018b262dd ("bitmap: introduce BITMAP_FROM_U64()")
    Signed-off-by: Geert Uytterhoeven
    Acked-by: Yury Norov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     

09 Sep, 2017

2 commits

  • The macro is the compile-time analogue of bitmap_from_u64() with the same
    purpose: convert the 64-bit number to the properly ordered pair of 32-bit
    parts, suitable for filling the bitmap in 32-bit BE environment.

    Use it to make test_bitmap_parselist() correct for 32-bit BE ABIs.

    Tested on BE mips/qemu.

    [akpm@linux-foundation.org: tweak code comment]
    Link: http://lkml.kernel.org/r/20170810172916.24144-1-ynorov@caviumnetworks.com
    Signed-off-by: Yury Norov
    Cc: Noam Camus
    Cc: Rasmus Villemoes
    Cc: Matthew Wilcox
    Cc: Mauro Carvalho Chehab
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yury Norov
     
  • Do some basic checks for bitmap_parselist().

    [akpm@linux-foundation.org: fix printk warning]
    Link: http://lkml.kernel.org/r/20170807225438.16161-2-ynorov@caviumnetworks.com
    Signed-off-by: Yury Norov
    Cc: Noam Camus
    Cc: Rasmus Villemoes
    Cc: Matthew Wilcox
    Cc: Mauro Carvalho Chehab
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yury Norov
     

11 Jul, 2017

2 commits

  • We have eight users calling bitmap_clear for a single bit and seventeen
    calling bitmap_set for a single bit. Rather than fix all of them to
    call __clear_bit or __set_bit, turn bitmap_clear and bitmap_set into
    inline functions and make this special case efficient.

    Link: http://lkml.kernel.org/r/20170628153221.11322-3-willy@infradead.org
    Signed-off-by: Matthew Wilcox
    Acked-by: Rasmus Villemoes
    Cc: Martin Schwidefsky
    Cc: Matthew Wilcox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matthew Wilcox
     
  • Patch series "Bitmap optimisations", v2.

    These three bitmap patches use more efficient specialisations when the
    compiler can figure out that it's safe to do so. Thanks to Rasmus's
    eagle eyes, a nasty bug in v1 was avoided, and I've added a test case
    which would have caught it.

    This patch (of 4):

    This version of the test is actually a no-op; the next patch will enable
    it.

    Link: http://lkml.kernel.org/r/20170628153221.11322-2-willy@infradead.org
    Signed-off-by: Matthew Wilcox
    Cc: Rasmus Villemoes
    Cc: Martin Schwidefsky
    Cc: Matthew Wilcox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matthew Wilcox
     

20 Feb, 2016

1 commit