From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Rasmus Villemoes <linux@rasmusvillemoes.dk>,
Vitaly Kuznetsov <vkuznets@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
James Bottomley <JBottomley@Odin.com>,
linux-kernel@vger.kernel.org,
"K. Y. Srinivasan" <kys@microsoft.com>
Subject: Re: [PATCH v3 2/2] lib/test-string_helpers.c: add string_get_size() tests
Date: Tue, 15 Sep 2015 09:43:02 +0300 [thread overview]
Message-ID: <1442299382.8361.25.camel@linux.intel.com> (raw)
In-Reply-To: <87y4g8wtjo.fsf@rasmusvillemoes.dk>
On Tue, 2015-09-15 at 00:00 +0200, Rasmus Villemoes wrote:
> On Mon, Sep 14 2015, Vitaly Kuznetsov <vkuznets@redhat.com> wrote:
>
Vitaly, thanks for the test cases. My comments below.
> > +static __init void test_string_get_size_one(u64 size, u64
> > blk_size,
> > + const enum
> > string_size_units units,
> > + const char
> > *exp_result)
> > +{
> > + char buf[256];
> > +
> > + string_get_size(size, blk_size, units, buf, sizeof(buf));
> > + if (!strncmp(buf, exp_result, min(sizeof(buf),
> > strlen(exp_result))))
> > + return;
>
> Nits: It probably makes sense to also test that string_get_size
> '\0'-terminates the buffer, so I'd spell this
>
> if (!memcmp(buf, exp_result, min(sizeof(buf),
> strlen(exp_result)+1)))
>
> With a generous stack buffer, that min() will always evaluate to the
> strlen(exp_result)+1. On that note: Maybe 256 is a bit excessive. I
> don't think this will run very deep in the kernel stack, but the code
> might
> get copy-pasted somewhere else. 16 should be plenty.
Agree with Rasmus.
And just to make a side note that useless use of min() since we have
strnlen() :-)
>
> > + pr_warn("Test 'test_string_get_size_one' failed!\n");
> > + pr_warn("string_get_size(size = %llu, blk_size = %llu,
> > units = %d\n",
> > + size, blk_size, units);
>
> [There's probably no pretty way of getting from units to a text
> representation, but it's slightly annoying to have to check the
> source
> for the enum definition to figure out what units=0 or units=1 means.]
>
> > + pr_warn("expected: %s, got %s\n", exp_result, buf);
>
> In case we failed to '\0'-terminate buf, we might want to print it
> with
> "%.*s", (int)sizeof(buf), buf. But maybe I'm just overly paranoid.
I prefer to put '\0' at the position after we expected have an actual
'\0'. In this case we always be NULL terminated. I did this for hexdump
test cases.
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
next prev parent reply other threads:[~2015-09-15 6:43 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-14 16:45 [PATCH v3 0/2] lib/string_helpers.c: fix infinite loop in string_get_size() Vitaly Kuznetsov
2015-09-14 16:45 ` [PATCH v3 1/2] " Vitaly Kuznetsov
2015-09-14 16:45 ` [PATCH v3 2/2] lib/test-string_helpers.c: add string_get_size() tests Vitaly Kuznetsov
2015-09-14 22:00 ` Rasmus Villemoes
2015-09-15 6:43 ` Andy Shevchenko [this message]
2015-09-15 12:10 ` Vitaly Kuznetsov
2015-09-15 12:19 ` Andy Shevchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1442299382.8361.25.camel@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=JBottomley@Odin.com \
--cc=akpm@linux-foundation.org \
--cc=kys@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=vkuznets@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.