mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
The Ocaml stub to retrieve the hypervisor console ring had a few problems. * A single 32k buffer would truncate a large console ring. * The buffer was static and not under the protection of the Ocaml GC lock so could be clobbered by concurrent accesses. * Embedded NUL characters would cause caml_copy_string() (which is strlen() based) to truncate the buffer. The function is rewritten from scratch, using the same algorithm as the python stubs, but uses the protection of the Ocaml GC lock to maintain a static running total of the ring size, to avoid redundant realloc()ing in future calls. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> CC: Dave Scott <dave.scott@eu.citrix.com> CC: Ian Campbell <Ian.Campbell@citrix.com> CC: Ian Jackson <Ian.Jackson@eu.citrix.com> CC: Wei Liu <wei.liu2@citrix.com> Acked-by: David Scott <dave.scott@citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com>