xen-hvm.c: Always return -1 when failure occurs in xen_hvm_init()

When failure occurs, it need to use "return -1" instead of exit(1), so
an upper layer has a chance to print failure information, too.

For simplicity, in xen_hvm_init(), also use '-1' instead of all
'-errno', since all related upper callers always exit(1) on failure.

It is not a normal function, it does not release related resources when
return -1, so need give related comments for it.

It passes common check:

  "./configure --enable-xen && make && make check"
  "echo $? == 0"

Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
Chen Gang 2014-09-04 22:32:46 +08:00 committed by Michael Tokarev
parent 971ae6ef47
commit 6c5b0c0ac0

View File

@ -979,6 +979,7 @@ static void xen_wakeup_notifier(Notifier *notifier, void *data)
xc_set_hvm_param(xen_xc, xen_domid, HVM_PARAM_ACPI_S_STATE, 0); xc_set_hvm_param(xen_xc, xen_domid, HVM_PARAM_ACPI_S_STATE, 0);
} }
/* return 0 means OK, or -1 means critical issue -- will exit(1) */
int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size, int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size,
MemoryRegion **ram_memory) MemoryRegion **ram_memory)
{ {
@ -992,15 +993,13 @@ int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size,
state->xce_handle = xen_xc_evtchn_open(NULL, 0); state->xce_handle = xen_xc_evtchn_open(NULL, 0);
if (state->xce_handle == XC_HANDLER_INITIAL_VALUE) { if (state->xce_handle == XC_HANDLER_INITIAL_VALUE) {
perror("xen: event channel open"); perror("xen: event channel open");
g_free(state); return -1;
return -errno;
} }
state->xenstore = xs_daemon_open(); state->xenstore = xs_daemon_open();
if (state->xenstore == NULL) { if (state->xenstore == NULL) {
perror("xen: xenstore open"); perror("xen: xenstore open");
g_free(state); return -1;
return -errno;
} }
state->exit.notify = xen_exit_notifier; state->exit.notify = xen_exit_notifier;
@ -1070,7 +1069,7 @@ int xen_hvm_init(ram_addr_t *below_4g_mem_size, ram_addr_t *above_4g_mem_size,
/* Initialize backend core & drivers */ /* Initialize backend core & drivers */
if (xen_be_init() != 0) { if (xen_be_init() != 0) {
fprintf(stderr, "%s: xen backend core setup failed\n", __FUNCTION__); fprintf(stderr, "%s: xen backend core setup failed\n", __FUNCTION__);
exit(1); return -1;
} }
xen_be_register("console", &xen_console_ops); xen_be_register("console", &xen_console_ops);
xen_be_register("vkbd", &xen_kbdmouse_ops); xen_be_register("vkbd", &xen_kbdmouse_ops);