|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] ocaml/xenctrl: Make failwith_xc() thread safe
Looks ok to me.
Signed-off-by: David Scott <dave.scott@xxxxxxxxxx>
> On 28 Jan 2015, at 17:55, Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote:
>
> The static error_str[] buffer is not thread-safe, and 1024 bytes is
> unreasonably large. Reduce to 256 bytes (which is still much larger than any
> current use), and move it to being a stack variable.
>
> Also, propagate the Noreturn attribute from caml_raise_with_string().
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> CC: Dave Scott <Dave.Scott@xxxxxxxxxxxxx>
> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
> CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
> CC: Wei Liu <wei.liu2@xxxxxxxxxx>
> ---
> tools/ocaml/libs/xc/xenctrl_stubs.c | 15 ++++++++-------
> 1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c
> b/tools/ocaml/libs/xc/xenctrl_stubs.c
> index 92d064f..6a95528 100644
> --- a/tools/ocaml/libs/xc/xenctrl_stubs.c
> +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
> @@ -51,21 +51,22 @@
> i1 = (uint32_t) Int64_val(Field(input, 0)); \
> i2 = ((Field(input, 1) == Val_none) ? 0xffffffff : (uint32_t)
> Int64_val(Field(Field(input, 1), 0)));
>
> -#define ERROR_STRLEN 1024
> -void failwith_xc(xc_interface *xch)
> +static void Noreturn failwith_xc(xc_interface *xch)
> {
> - static char error_str[ERROR_STRLEN];
> + char error_str[256];
> if (xch) {
> const xc_error *error = xc_get_last_error(xch);
> if (error->code == XC_ERROR_NONE)
> - snprintf(error_str, ERROR_STRLEN, "%d: %s", errno,
> strerror(errno));
> + snprintf(error_str, sizeof(error_str),
> + "%d: %s", errno, strerror(errno));
> else
> - snprintf(error_str, ERROR_STRLEN, "%d: %s: %s",
> - error->code,
> + snprintf(error_str, sizeof(error_str),
> + "%d: %s: %s", error->code,
> xc_error_code_to_desc(error->code),
> error->message);
> } else {
> - snprintf(error_str, ERROR_STRLEN, "Unable to open XC
> interface");
> + snprintf(error_str, sizeof(error_str),
> + "Unable to open XC interface");
> }
> caml_raise_with_string(*caml_named_value("xc.error"), error_str);
> }
> --
> 1.7.10.4
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |