[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.4-testing] minios: fix minios console
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1256289576 -3600 # Node ID 774e2cf9d238e664ab61281671b1dcb0ab7da221 # Parent 5cc95e7456a86a5783ff4768eb4142ab1e058b54 minios: fix minios console MiniOS' console_print tries to expand '\n' into "\n\r" in place, causing page faults if the string resides in text. Use a duplicate of the string instead. Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> xen-unstable changeset: 20308:a95b55bf6c1a xen-unstable date: Wed Oct 14 08:55:43 2009 +0100 --- extras/mini-os/console/console.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-) diff -r 5cc95e7456a8 -r 774e2cf9d238 extras/mini-os/console/console.c --- a/extras/mini-os/console/console.c Fri Oct 23 10:17:32 2009 +0100 +++ b/extras/mini-os/console/console.c Fri Oct 23 10:19:36 2009 +0100 @@ -79,6 +79,8 @@ void console_print(char *data, int lengt void console_print(char *data, int length) { char *curr_char, saved_char; + char copied_str[length]; + char *copied_ptr; int part_len; int (*ring_send_fn)(const char *data, unsigned length); @@ -87,23 +89,25 @@ void console_print(char *data, int lengt else ring_send_fn = xencons_ring_send; - for(curr_char = data; curr_char < data+length-1; curr_char++) + copied_ptr = copied_str; + memcpy(copied_ptr, data, length); + for(curr_char = copied_ptr; curr_char < copied_ptr+length-1; curr_char++) { if(*curr_char == '\n') { saved_char = *(curr_char+1); *(curr_char+1) = '\r'; - part_len = curr_char - data + 2; - ring_send_fn(data, part_len); + part_len = curr_char - copied_ptr + 2; + ring_send_fn(dev, copied_ptr, part_len); *(curr_char+1) = saved_char; - data = curr_char+1; + copied_ptr = curr_char+1; length -= part_len - 1; } } - ring_send_fn(data, length); + ring_send_fn(dev, copied_ptr, length); - if(data[length-1] == '\n') + if(copied_ptr[length-1] == '\n') ring_send_fn("\r", 1); } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |