lkml.org 
[lkml]   [2020]   [Aug]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH kcsan 13/19] kcsan: Simplify constant string handling
    Date
    From: Marco Elver <elver@google.com>

    Simplify checking prefixes and length calculation of constant strings.
    For the former, the kernel provides str_has_prefix(), and the latter we
    should just use strlen("..") because GCC and Clang have optimizations
    that optimize these into constants.

    No functional change intended.

    Signed-off-by: Marco Elver <elver@google.com>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    ---
    kernel/kcsan/debugfs.c | 8 ++++----
    kernel/kcsan/report.c | 4 ++--
    2 files changed, 6 insertions(+), 6 deletions(-)

    diff --git a/kernel/kcsan/debugfs.c b/kernel/kcsan/debugfs.c
    index 3a9566a..116bdd8 100644
    --- a/kernel/kcsan/debugfs.c
    +++ b/kernel/kcsan/debugfs.c
    @@ -300,16 +300,16 @@ debugfs_write(struct file *file, const char __user *buf, size_t count, loff_t *o
    WRITE_ONCE(kcsan_enabled, true);
    } else if (!strcmp(arg, "off")) {
    WRITE_ONCE(kcsan_enabled, false);
    - } else if (!strncmp(arg, "microbench=", sizeof("microbench=") - 1)) {
    + } else if (str_has_prefix(arg, "microbench=")) {
    unsigned long iters;

    - if (kstrtoul(&arg[sizeof("microbench=") - 1], 0, &iters))
    + if (kstrtoul(&arg[strlen("microbench=")], 0, &iters))
    return -EINVAL;
    microbenchmark(iters);
    - } else if (!strncmp(arg, "test=", sizeof("test=") - 1)) {
    + } else if (str_has_prefix(arg, "test=")) {
    unsigned long iters;

    - if (kstrtoul(&arg[sizeof("test=") - 1], 0, &iters))
    + if (kstrtoul(&arg[strlen("test=")], 0, &iters))
    return -EINVAL;
    test_thread(iters);
    } else if (!strcmp(arg, "whitelist")) {
    diff --git a/kernel/kcsan/report.c b/kernel/kcsan/report.c
    index 3e83a69..bf1d594 100644
    --- a/kernel/kcsan/report.c
    +++ b/kernel/kcsan/report.c
    @@ -279,8 +279,8 @@ static int get_stack_skipnr(const unsigned long stack_entries[], int num_entries

    cur = strnstr(buf, "kcsan_", len);
    if (cur) {
    - cur += sizeof("kcsan_") - 1;
    - if (strncmp(cur, "test", sizeof("test") - 1))
    + cur += strlen("kcsan_");
    + if (!str_has_prefix(cur, "test"))
    continue; /* KCSAN runtime function. */
    /* KCSAN related test. */
    }
    --
    2.9.5
    \
     
     \ /
      Last update: 2020-08-31 20:20    [W:3.182 / U:0.156 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site