diff mbox series

i915/gem_flink_race: Fix error in buffer usage

Message ID 20201117222308.31551-1-steven.t.hampson@intel.com (mailing list archive)
State New, archived
Headers show
Series i915/gem_flink_race: Fix error in buffer usage | expand

Commit Message

Steve Hampson Nov. 17, 2020, 10:23 p.m. UTC
A buffer in function test_flink_name was both too small and never
checked for overflow.  Both errors are fixed.

Signed-off-by: Steve Hampson <steven.t.hampson@intel.com>
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
---
 tests/i915/gem_flink_race.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

Comments

Chris Wilson Nov. 17, 2020, 10:28 p.m. UTC | #1
Quoting Steve Hampson (2020-11-17 22:23:08)
> A buffer in function test_flink_name was both too small and never
> checked for overflow.  Both errors are fixed.

That many numbers is not interesting. Show the range and median instead.
-Chris
Steve Hampson Nov. 17, 2020, 11:45 p.m. UTC | #2
Sent from my iPhone

> On Nov 17, 2020, at 2:28 PM, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> 
> Quoting Steve Hampson (2020-11-17 22:23:08)
>> A buffer in function test_flink_name was both too small and never
>> checked for overflow.  Both errors are fixed.
> 
> That many numbers is not interesting. Show the range and median instead.
> -Chris

I don’t understand what you are talking about.
Chris Wilson Nov. 18, 2020, 10:52 a.m. UTC | #3
Quoting Hampson, Steven T (2020-11-17 23:45:23)
> 
> 
> Sent from my iPhone
> 
> > On Nov 17, 2020, at 2:28 PM, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> > 
> > Quoting Steve Hampson (2020-11-17 22:23:08)
> >> A buffer in function test_flink_name was both too small and never
> >> checked for overflow.  Both errors are fixed.
> > 
> > That many numbers is not interesting. Show the range and median instead.
> > -Chris
> 
> I don’t understand what you are talking about.  

The reason I printed the individual numbers was so that we could see the
distribution in case one thread was being starved or not. That is fine
for a few numbers, but beyond that we can summarise with statistics.
-Chris
Steve Hampson Nov. 19, 2020, 6:18 p.m. UTC | #4
Chris,

Is this acceptable?  Can it be merged?

-----Original Message-----
From: Hampson, Steven T 
Sent: Wednesday, November 18, 2020 12:41 PM
To: 'Chris Wilson' <chris@chris-wilson.co.uk>
Cc: intel-gfx@ <lists.freedesktop.org intel-gfx@lists.freedesktop.org>
Subject: RE: [Intel-gfx] [PATCH] i915/gem_flink_race: Fix error in buffer usage

The problem is that the machine it was running on had 32 cpus, so one set of numbers per cpu filled the buffer.

-----Original Message-----
From: Chris Wilson <chris@chris-wilson.co.uk>
Sent: Wednesday, November 18, 2020 2:52 AM
To: Hampson, Steven T <steven.t.hampson@intel.com>
Cc: intel-gfx@ <lists.freedesktop.org intel-gfx@lists.freedesktop.org>
Subject: Re: [Intel-gfx] [PATCH] i915/gem_flink_race: Fix error in buffer usage

Quoting Hampson, Steven T (2020-11-17 23:45:23)
> 
> 
> Sent from my iPhone
> 
> > On Nov 17, 2020, at 2:28 PM, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> > 
> > Quoting Steve Hampson (2020-11-17 22:23:08)
> >> A buffer in function test_flink_name was both too small and never 
> >> checked for overflow.  Both errors are fixed.
> > 
> > That many numbers is not interesting. Show the range and median instead.
> > -Chris
> 
> I don’t understand what you are talking about.  

The reason I printed the individual numbers was so that we could see the distribution in case one thread was being starved or not. That is fine for a few numbers, but beyond that we can summarise with statistics.
-Chris
Chris Wilson Nov. 19, 2020, 6:31 p.m. UTC | #5
Quoting Hampson, Steven T (2020-11-19 18:18:14)
> Chris,
> 
> Is this acceptable?  Can it be merged?

It is of little use to print out that many numbers, so lets not and just
show some statistics instead as this is just meant to be a guide to the
reader as to whether the threads each received a reasonably fair
proportion of the _CPU_ time.
-Chris
diff mbox series

Patch

diff --git a/tests/i915/gem_flink_race.c b/tests/i915/gem_flink_race.c
index c1f5d5d51..cf07aedf1 100644
--- a/tests/i915/gem_flink_race.c
+++ b/tests/i915/gem_flink_race.c
@@ -83,7 +83,7 @@  static void test_flink_name(int timeout)
 	struct flink_name *threads;
 	int r, i, num_threads;
 	unsigned long count;
-	char buf[256];
+	char buf[512];
 	void *status;
 	int len;
 
@@ -118,9 +118,13 @@  static void test_flink_name(int timeout)
 	for (i = 0;  i < num_threads; i++) {
 		pthread_join(threads[i].thread, &status);
 		igt_assert(status == 0);
-		len += snprintf(buf + len, sizeof(buf) - len, "%lu, ", threads[i].count);
+		/* Below, constant 11 is 8 digit number, comma, space and null byte */
+		if ((len + 11 + 1) < sizeof(buf))
+			len += snprintf(buf + len, sizeof(buf) - len, "%8lu, ", threads[i].count);
 	}
-	snprintf(buf + len - 2, sizeof(buf) - len + 2, "] races");
+	/* Below, constant 9 is 7 bytes for terminating string plus \n and null byte */
+	if (len + 9 < sizeof(buf))
+		snprintf(buf + len - 2, sizeof(buf) - len + 2, "] races");
 	igt_info("%s\n", buf);
 
 	close(fd);