mirror of https://github.com/xemu-project/xemu.git
nbd: Use g_autofree in a few places
Thanks to our recent move to use glib's g_autofree, I can join the bandwagon. Getting rid of gotos is fun ;) There are probably more places where we could register cleanup functions and get rid of more gotos; this patch just focuses on the labels that existed merely to call g_free. Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <20190824172813.29720-2-eblake@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
This commit is contained in:
parent
61cc872456
commit
df18c04edf
11
block/nbd.c
11
block/nbd.c
|
@ -1374,7 +1374,7 @@ static bool nbd_has_filename_options_conflict(QDict *options, Error **errp)
|
||||||
static void nbd_parse_filename(const char *filename, QDict *options,
|
static void nbd_parse_filename(const char *filename, QDict *options,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
{
|
{
|
||||||
char *file;
|
g_autofree char *file = NULL;
|
||||||
char *export_name;
|
char *export_name;
|
||||||
const char *host_spec;
|
const char *host_spec;
|
||||||
const char *unixpath;
|
const char *unixpath;
|
||||||
|
@ -1396,7 +1396,7 @@ static void nbd_parse_filename(const char *filename, QDict *options,
|
||||||
export_name = strstr(file, EN_OPTSTR);
|
export_name = strstr(file, EN_OPTSTR);
|
||||||
if (export_name) {
|
if (export_name) {
|
||||||
if (export_name[strlen(EN_OPTSTR)] == 0) {
|
if (export_name[strlen(EN_OPTSTR)] == 0) {
|
||||||
goto out;
|
return;
|
||||||
}
|
}
|
||||||
export_name[0] = 0; /* truncate 'file' */
|
export_name[0] = 0; /* truncate 'file' */
|
||||||
export_name += strlen(EN_OPTSTR);
|
export_name += strlen(EN_OPTSTR);
|
||||||
|
@ -1407,11 +1407,11 @@ static void nbd_parse_filename(const char *filename, QDict *options,
|
||||||
/* extract the host_spec - fail if it's not nbd:... */
|
/* extract the host_spec - fail if it's not nbd:... */
|
||||||
if (!strstart(file, "nbd:", &host_spec)) {
|
if (!strstart(file, "nbd:", &host_spec)) {
|
||||||
error_setg(errp, "File name string for NBD must start with 'nbd:'");
|
error_setg(errp, "File name string for NBD must start with 'nbd:'");
|
||||||
goto out;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!*host_spec) {
|
if (!*host_spec) {
|
||||||
goto out;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* are we a UNIX or TCP socket? */
|
/* are we a UNIX or TCP socket? */
|
||||||
|
@ -1431,9 +1431,6 @@ static void nbd_parse_filename(const char *filename, QDict *options,
|
||||||
out_inet:
|
out_inet:
|
||||||
qapi_free_InetSocketAddress(addr);
|
qapi_free_InetSocketAddress(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
|
||||||
g_free(file);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool nbd_process_legacy_socket_options(QDict *output_options,
|
static bool nbd_process_legacy_socket_options(QDict *output_options,
|
||||||
|
|
22
nbd/client.c
22
nbd/client.c
|
@ -247,12 +247,11 @@ static int nbd_handle_reply_err(QIOChannel *ioc, NBDOptionReply *reply,
|
||||||
static int nbd_receive_list(QIOChannel *ioc, char **name, char **description,
|
static int nbd_receive_list(QIOChannel *ioc, char **name, char **description,
|
||||||
Error **errp)
|
Error **errp)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
|
||||||
NBDOptionReply reply;
|
NBDOptionReply reply;
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
uint32_t namelen;
|
uint32_t namelen;
|
||||||
char *local_name = NULL;
|
g_autofree char *local_name = NULL;
|
||||||
char *local_desc = NULL;
|
g_autofree char *local_desc = NULL;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
if (nbd_receive_option_reply(ioc, NBD_OPT_LIST, &reply, errp) < 0) {
|
if (nbd_receive_option_reply(ioc, NBD_OPT_LIST, &reply, errp) < 0) {
|
||||||
|
@ -298,7 +297,7 @@ static int nbd_receive_list(QIOChannel *ioc, char **name, char **description,
|
||||||
local_name = g_malloc(namelen + 1);
|
local_name = g_malloc(namelen + 1);
|
||||||
if (nbd_read(ioc, local_name, namelen, "export name", errp) < 0) {
|
if (nbd_read(ioc, local_name, namelen, "export name", errp) < 0) {
|
||||||
nbd_send_opt_abort(ioc);
|
nbd_send_opt_abort(ioc);
|
||||||
goto out;
|
return -1;
|
||||||
}
|
}
|
||||||
local_name[namelen] = '\0';
|
local_name[namelen] = '\0';
|
||||||
len -= namelen;
|
len -= namelen;
|
||||||
|
@ -306,24 +305,17 @@ static int nbd_receive_list(QIOChannel *ioc, char **name, char **description,
|
||||||
local_desc = g_malloc(len + 1);
|
local_desc = g_malloc(len + 1);
|
||||||
if (nbd_read(ioc, local_desc, len, "export description", errp) < 0) {
|
if (nbd_read(ioc, local_desc, len, "export description", errp) < 0) {
|
||||||
nbd_send_opt_abort(ioc);
|
nbd_send_opt_abort(ioc);
|
||||||
goto out;
|
return -1;
|
||||||
}
|
}
|
||||||
local_desc[len] = '\0';
|
local_desc[len] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
trace_nbd_receive_list(local_name, local_desc ?: "");
|
trace_nbd_receive_list(local_name, local_desc ?: "");
|
||||||
*name = local_name;
|
*name = g_steal_pointer(&local_name);
|
||||||
local_name = NULL;
|
|
||||||
if (description) {
|
if (description) {
|
||||||
*description = local_desc;
|
*description = g_steal_pointer(&local_desc);
|
||||||
local_desc = NULL;
|
|
||||||
}
|
}
|
||||||
ret = 1;
|
return 1;
|
||||||
|
|
||||||
out:
|
|
||||||
g_free(local_name);
|
|
||||||
g_free(local_desc);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
12
nbd/server.c
12
nbd/server.c
|
@ -206,7 +206,7 @@ static int GCC_FMT_ATTR(4, 0)
|
||||||
nbd_negotiate_send_rep_verr(NBDClient *client, uint32_t type,
|
nbd_negotiate_send_rep_verr(NBDClient *client, uint32_t type,
|
||||||
Error **errp, const char *fmt, va_list va)
|
Error **errp, const char *fmt, va_list va)
|
||||||
{
|
{
|
||||||
char *msg;
|
g_autofree char *msg = NULL;
|
||||||
int ret;
|
int ret;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
|
@ -216,18 +216,14 @@ nbd_negotiate_send_rep_verr(NBDClient *client, uint32_t type,
|
||||||
trace_nbd_negotiate_send_rep_err(msg);
|
trace_nbd_negotiate_send_rep_err(msg);
|
||||||
ret = nbd_negotiate_send_rep_len(client, type, len, errp);
|
ret = nbd_negotiate_send_rep_len(client, type, len, errp);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
goto out;
|
return ret;
|
||||||
}
|
}
|
||||||
if (nbd_write(client->ioc, msg, len, errp) < 0) {
|
if (nbd_write(client->ioc, msg, len, errp) < 0) {
|
||||||
error_prepend(errp, "write failed (error message): ");
|
error_prepend(errp, "write failed (error message): ");
|
||||||
ret = -EIO;
|
return -EIO;
|
||||||
} else {
|
|
||||||
ret = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
return 0;
|
||||||
g_free(msg);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Send an error reply.
|
/* Send an error reply.
|
||||||
|
|
Loading…
Reference in New Issue