[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] xen/console: Fix build when CONFIG_DEBUG_TRACE=y

Hi Andrew,

On 8/19/19 7:04 PM, Andrew Cooper wrote:
On 19/08/2019 19:01, Julien Grall wrote:
Commit b5e6e1ee8da "xen/console: Don't treat NUL character as the end
of the buffer" extended sercon_puts to take the number of character
to print in argument.

Sadly, a couple of couple of the callers in debugtrace_dump_worker()
were not converted. This result to a build failure when enabling

Spotted by Travis using randconfig
Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
  xen/drivers/char/console.c | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index 2c14c2ca73..924d4971ca 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -1185,11 +1185,12 @@ static void debugtrace_dump_worker(void)
/* Print oldest portion of the ring. */
      ASSERT(debugtrace_buf[debugtrace_bytes - 1] == 0);
-    sercon_puts(&debugtrace_buf[debugtrace_prd]);
+    sercon_puts(&debugtrace_buf[debugtrace_prd],
+                strlen(&debugtrace_buf[debugtrace_prd]));

Isn't this just debugtrace_bytes - debugtrace_prd - 1 ?

I tried and it resulted to print a lot of @^ on the console. This is because the ring may not be full.

So the portion between debugtrace_prd and debugtrace_bytes will be full of zero.

Looking at the code again, I think this portion and either be full of zero character or full of non-zero character. In other word, a mix would not be possible. So how about:

if ( debugtrace_buf[debugtrace_prd] != '\0' )
              debugtrace_bytes - debugtrace_prd - 1);


Julien Grall

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.