On Fri, 30 Jun 2023 14:54:47 +0000 Janosch Frank <frankja@xxxxxxxxxxxxx> wrote: > Without the \r the output of the ASCII console takes a lot of > additional effort to read in comparison to the line mode console. > > Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx> > --- > lib/s390x/sclp-console.c | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) > > diff --git a/lib/s390x/sclp-console.c b/lib/s390x/sclp-console.c > index 19c74e46..384080b0 100644 > --- a/lib/s390x/sclp-console.c > +++ b/lib/s390x/sclp-console.c > @@ -97,14 +97,27 @@ static void sclp_print_ascii(const char *str) > { > int len = strlen(str); > WriteEventData *sccb = (void *)_sccb; > + char *str_dest = (char *)&sccb->msg; > + int i = 0; > > sclp_mark_busy(); > memset(sccb, 0, sizeof(*sccb)); > + > + for (; i < len; i++) { > + *str_dest = str[i]; > + str_dest++; > + /* Add a \r to the \n */ > + if (str[i] == '\n') { > + *str_dest = '\r'; > + str_dest++; > + } > + } > + > + len = (uintptr_t)str_dest - (uintptr_t)&sccb->msg; some strings will therefore potentially overflow the SCCB sclp_print() refuses to print more than 2kB, with this patch that limit could potentially be crossed can you please briefly explain in a comment why that is ok? (or maybe that is not ok? then fix it somehow :) ) > sccb->h.length = offsetof(WriteEventData, msg) + len; > sccb->h.function_code = SCLP_FC_NORMAL_WRITE; > sccb->ebh.length = sizeof(EventBufferHeader) + len; > sccb->ebh.type = SCLP_EVENT_ASCII_CONSOLE_DATA; > - memcpy(&sccb->msg, str, len); > > sclp_service_call(SCLP_CMD_WRITE_EVENT_DATA, sccb); > }