Revert "perf bench futex: Sanitize numeric parameters"
authorArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 14 Feb 2017 17:12:43 +0000 (14:12 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 14 Feb 2017 18:19:17 +0000 (15:19 -0300)
This reverts commit 60758d6668b3e2fa8e5fd143d24d0425203d007e.

Now that libsubcmd makes sure that OPT_UINTEGER options will not
return negative values, we can revert this patch while addressing
the problem it solved:

  # perf bench futex hash -t  -4
  # Running 'futex/hash' benchmark:
   Error: switch `t' expects an unsigned numerical value
   Usage: perf bench futex hash <options>

      -t, --threads <n>     Specify amount of threads
  # perf bench futex hash -t-4
  # Running 'futex/hash' benchmark:
   Error: switch `t' expects an unsigned numerical value
   Usage: perf bench futex hash <options>

      -t, --threads <n>     Specify amount of threads
  #

IMO it is more reasonable to flat out refuse to process a negative
number than to silently turn it into an absolute value.

This also helps in silencing clang's complaint about asking for an
absolute value of an unsigned integer:

  bench/futex-hash.c:133:10: error: taking the absolute value of unsigned type 'unsigned int' has no effect [-Werror,-Wabsolute-value]
          nsecs = futexbench_sanitize_numeric(nsecs);
                ^
  bench/futex.h:104:42: note: expanded from macro 'futexbench_sanitize_numeric'
  #define futexbench_sanitize_numeric(__n) abs((__n))
                                           ^
  bench/futex-hash.c:133:10: note: remove the call to 'abs' since unsigned values cannot be negative

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Davidlohr Bueso <dbueso@suse.de>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-2kl68v22or31vw643m2exz8x@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/bench/futex-hash.c
tools/perf/bench/futex-lock-pi.c
tools/perf/bench/futex-requeue.c
tools/perf/bench/futex-wake-parallel.c
tools/perf/bench/futex-wake.c
tools/perf/bench/futex.h

index bfbb6b5..da04b8c 100644 (file)
@@ -130,8 +130,6 @@ int bench_futex_hash(int argc, const char **argv,
        }
 
        ncpus = sysconf(_SC_NPROCESSORS_ONLN);
-       nsecs = futexbench_sanitize_numeric(nsecs);
-       nfutexes = futexbench_sanitize_numeric(nfutexes);
 
        sigfillset(&act.sa_mask);
        act.sa_sigaction = toggle_done;
@@ -139,8 +137,6 @@ int bench_futex_hash(int argc, const char **argv,
 
        if (!nthreads) /* default to the number of CPUs */
                nthreads = ncpus;
-       else
-               nthreads = futexbench_sanitize_numeric(nthreads);
 
        worker = calloc(nthreads, sizeof(*worker));
        if (!worker)
index 6d9d6c4..9187777 100644 (file)
@@ -152,7 +152,6 @@ int bench_futex_lock_pi(int argc, const char **argv,
                goto err;
 
        ncpus = sysconf(_SC_NPROCESSORS_ONLN);
-       nsecs = futexbench_sanitize_numeric(nsecs);
 
        sigfillset(&act.sa_mask);
        act.sa_sigaction = toggle_done;
@@ -160,8 +159,6 @@ int bench_futex_lock_pi(int argc, const char **argv,
 
        if (!nthreads)
                nthreads = ncpus;
-       else
-               nthreads = futexbench_sanitize_numeric(nthreads);
 
        worker = calloc(nthreads, sizeof(*worker));
        if (!worker)
index fd4ee95..2b9705a 100644 (file)
@@ -128,8 +128,6 @@ int bench_futex_requeue(int argc, const char **argv,
 
        if (!nthreads)
                nthreads = ncpus;
-       else
-               nthreads = futexbench_sanitize_numeric(nthreads);
 
        worker = calloc(nthreads, sizeof(*worker));
        if (!worker)
index beaa6c1..2c8fa67 100644 (file)
@@ -217,12 +217,8 @@ int bench_futex_wake_parallel(int argc, const char **argv,
        sigaction(SIGINT, &act, NULL);
 
        ncpus = sysconf(_SC_NPROCESSORS_ONLN);
-       nwaking_threads = futexbench_sanitize_numeric(nwaking_threads);
-
        if (!nblocked_threads)
                nblocked_threads = ncpus;
-       else
-               nblocked_threads = futexbench_sanitize_numeric(nblocked_threads);
 
        /* some sanity checks */
        if (nwaking_threads > nblocked_threads || !nwaking_threads)
index 46efcb9..e246b1b 100644 (file)
@@ -129,7 +129,6 @@ int bench_futex_wake(int argc, const char **argv,
        }
 
        ncpus = sysconf(_SC_NPROCESSORS_ONLN);
-       nwakes = futexbench_sanitize_numeric(nwakes);
 
        sigfillset(&act.sa_mask);
        act.sa_sigaction = toggle_done;
@@ -137,8 +136,6 @@ int bench_futex_wake(int argc, const char **argv,
 
        if (!nthreads)
                nthreads = ncpus;
-       else
-               nthreads = futexbench_sanitize_numeric(nthreads);
 
        worker = calloc(nthreads, sizeof(*worker));
        if (!worker)
index ba7c735..b2e06d1 100644 (file)
@@ -7,7 +7,6 @@
 #ifndef _FUTEX_H
 #define _FUTEX_H
 
-#include <stdlib.h>
 #include <unistd.h>
 #include <sys/syscall.h>
 #include <sys/types.h>
@@ -100,7 +99,4 @@ static inline int pthread_attr_setaffinity_np(pthread_attr_t *attr,
 }
 #endif
 
-/* User input sanitation */
-#define futexbench_sanitize_numeric(__n) abs((__n))
-
 #endif /* _FUTEX_H */