vhost-user-scsi: connect unix socket before allocating

This simplify a little bit memory management in the following patches.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
Marc-André Lureau 2017-08-16 20:30:31 +02:00
parent b085b050c6
commit 0644fe4ad0
1 changed files with 8 additions and 10 deletions

View File

@ -715,23 +715,17 @@ static void vdev_scsi_deinit(vhost_scsi_dev_t *vdev_scsi)
} }
} }
static vhost_scsi_dev_t *vdev_scsi_new(char *unix_fn) static vhost_scsi_dev_t *vdev_scsi_new(int server_sock)
{ {
vhost_scsi_dev_t *vdev_scsi = NULL; vhost_scsi_dev_t *vdev_scsi = NULL;
assert(unix_fn);
vdev_scsi = calloc(1, sizeof(vhost_scsi_dev_t)); vdev_scsi = calloc(1, sizeof(vhost_scsi_dev_t));
if (!vdev_scsi) { if (!vdev_scsi) {
PERR("calloc: %s", strerror(errno)); PERR("calloc: %s", strerror(errno));
return NULL; return NULL;
} }
vdev_scsi->server_sock = unix_sock_new(unix_fn); vdev_scsi->server_sock = server_sock;
if (vdev_scsi->server_sock < 0) {
goto err;
}
vdev_scsi->loop = g_main_loop_new(NULL, FALSE); vdev_scsi->loop = g_main_loop_new(NULL, FALSE);
if (!vdev_scsi->loop) { if (!vdev_scsi->loop) {
PERR("Error creating glib event loop"); PERR("Error creating glib event loop");
@ -815,7 +809,7 @@ int main(int argc, char **argv)
vhost_scsi_dev_t *vdev_scsi = NULL; vhost_scsi_dev_t *vdev_scsi = NULL;
char *unix_fn = NULL; char *unix_fn = NULL;
char *iscsi_uri = NULL; char *iscsi_uri = NULL;
int opt, err = EXIT_SUCCESS; int sock, opt, err = EXIT_SUCCESS;
while ((opt = getopt(argc, argv, "u:i:")) != -1) { while ((opt = getopt(argc, argv, "u:i:")) != -1) {
switch (opt) { switch (opt) {
@ -835,7 +829,11 @@ int main(int argc, char **argv)
goto help; goto help;
} }
vdev_scsi = vdev_scsi_new(unix_fn); sock = unix_sock_new(unix_fn);
if (sock < 0) {
goto err;
}
vdev_scsi = vdev_scsi_new(sock);
if (!vdev_scsi) { if (!vdev_scsi) {
goto err; goto err;
} }