On Wed, Aug 19, 2020 at 12:46 PM Vitor Massaru Iha <vitor@xxxxxxxxxxx> wrote: > > Some tests, such as overflow_kunit(), uses unsigned int, > But kunit_binary_assert_format() only prints signed int, > this commit also deals with the unsigned int print. > > Signed-off-by: Vitor Massaru Iha <vitor@xxxxxxxxxxx> > --- > lib/kunit/assert.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/lib/kunit/assert.c b/lib/kunit/assert.c > index 202f9fdeed0e..3ae90c09986a 100644 > --- a/lib/kunit/assert.c > +++ b/lib/kunit/assert.c > @@ -104,12 +104,23 @@ void kunit_binary_assert_format(const struct kunit_assert *assert, > binary_assert->left_text, > binary_assert->operation, > binary_assert->right_text); > - string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %lld\n", > + > + if (binary_assert->left_value - 1 < 0) { > + string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %lld\n", > + binary_assert->left_text, > + binary_assert->left_value); > + string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %lld", > + binary_assert->right_text, > + binary_assert->right_value); > + } > + else { > + string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %llu\n", > binary_assert->left_text, > binary_assert->left_value); > - string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %lld", > + string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %llu", > binary_assert->right_text, > binary_assert->right_value); > + } I agree that you found a bug here; however, I disagree that this is the correct fix. Given that the value is stored as a long long; isn't the value always stored as a signed value? So if the value overflows, won't it still not pass the check you have here? > } > kunit_assert_print_msg(assert, stream); > } > > base-commit: d43c7fb05765152d4d4a39a8ef957c4ea14d8847 > prerequisite-patch-id: bf4b0962b0b955e4e45f5d25fece889562118158 > -- > 2.26.2 >