[LTP] [PATCH] testcases: cve-2014-0196: Set attempts according to nb of cpus
Richard Palethorpe
rpalethorpe@suse.de
Fri Jun 15 14:55:12 CEST 2018
Hello,
Mylène Josserand writes:
> This test tries to cause a buffer overflow by doing 0x7000
> attempts. In a slow system platform, it leads to a failure
> because of the timeout even when it is configured with
> LTP_TIMEOUT_MUL=10.
>
> This commit adds a way to configure the number of attempts
> according to the number of CPUs.
> In case of 1 CPU and a slow platform, using 0x2000 attempts
> with a LTP_TIMEOUT_MUL=2 make the test pass.
>
> Signed-off-by: Mylène Josserand <mylene.josserand@bootlin.com>
> ---
>
> Hello,
>
> This is a way to fix the issue I got but let me know
> what you think of it. There is maybe a better way to
> handle that.
Another way would be to measure the time a few iterations take and limit
the number of attempts based on that. We should perhaps add that as a
feature to the fuzzy sync library.
>
> Thank you,
> Mylène
>
> testcases/cve/cve-2014-0196.c | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/testcases/cve/cve-2014-0196.c b/testcases/cve/cve-2014-0196.c
> index d18108897..898da1073 100644
> --- a/testcases/cve/cve-2014-0196.c
> +++ b/testcases/cve/cve-2014-0196.c
> @@ -48,7 +48,7 @@
>
> #define ONEOFF_ALLOCS 200
> #define RUN_ALLOCS 30
> -#define ATTEMPTS 0x7000
> +#define ATTEMPTS 0x2000
> #define BUFLEN 512
>
> static volatile int master_fd, slave_fd;
> @@ -98,11 +98,14 @@ static void *overwrite_thread_fn(void *p LTP_ATTRIBUTE_UNUSED)
> static void run(void)
> {
> struct termios t;
> - int i, j;
> + int i, j, total_cpus;
>
> - tst_res(TINFO, "Attempting to overflow into a tty_struct...");
> + total_cpus = tst_ncpus();
This needs to be limited to about 4, otherwise systems with lots of slow
CPU's will timeout (I have seen a few machines with 100+ slow cores).
>
> - for (i = 0; i < ATTEMPTS; i++) {
> + tst_res(TINFO, "Attempting to overflow into a tty_struct during %x attempts...",
> + ATTEMPTS * total_cpus);
> +
> + for (i = 0; i < ATTEMPTS * total_cpus; i++) {
> create_pty((int *)&master_fd, (int *)&slave_fd);
>
> for (j = 0; j < RUN_ALLOCS; j++)
> --
> 2.11.0
--
Thank you,
Richard.
More information about the ltp
mailing list