aboutsummaryrefslogtreecommitdiff
path: root/net/tap.c
diff options
context:
space:
mode:
authorAlexey Kirillov <lekiravi@yandex-team.ru>2021-03-03 12:59:08 +0300
committerJason Wang <jasowang@redhat.com>2021-03-15 16:41:22 +0800
commit59b5437eb732d6b103a9bc279c3482c834d1eff9 (patch)
tree9f0667074f09bf4fe8f7ac904a030e72189d9774 /net/tap.c
parent3c3b656885473ef0d699290ba966177f17839aa5 (diff)
downloadqemu-59b5437eb732d6b103a9bc279c3482c834d1eff9.zip
qemu-59b5437eb732d6b103a9bc279c3482c834d1eff9.tar.gz
qemu-59b5437eb732d6b103a9bc279c3482c834d1eff9.tar.bz2
net: Move NetClientState.info_str to dynamic allocations
The info_str field of the NetClientState structure is static and has a size of 256 bytes. This amount is often unclaimed, and the field itself is used exclusively for HMP "info network". The patch translates info_str to dynamic memory allocation. This action is also allows us to painlessly discard usage of this field for backend devices. Signed-off-by: Alexey Kirillov <lekiravi@yandex-team.ru> Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'net/tap.c')
-rw-r--r--net/tap.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/net/tap.c b/net/tap.c
index 8041245..f864f43 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -625,8 +625,7 @@ int net_init_bridge(const Netdev *netdev, const char *name,
stored->helper = g_strdup(helper);
}
- snprintf(s->nc.info_str, sizeof(s->nc.info_str), "helper=%s,br=%s", helper,
- br);
+ s->nc.info_str = g_strdup_printf("helper=%s,br=%s", helper, br);
return 0;
}
@@ -714,7 +713,7 @@ static void net_init_tap_one(const NetdevTapOptions *tap, NetClientState *peer,
g_free(tmp_s);
}
- snprintf(s->nc.info_str, sizeof(s->nc.info_str), "fd=%d", fd);
+ s->nc.info_str = g_strdup_printf("fd=%d", fd);
} else if (tap->has_helper) {
if (!stored->has_helper) {
stored->has_helper = true;
@@ -727,8 +726,7 @@ static void net_init_tap_one(const NetdevTapOptions *tap, NetClientState *peer,
g_strdup(DEFAULT_BRIDGE_INTERFACE);
}
- snprintf(s->nc.info_str, sizeof(s->nc.info_str), "helper=%s",
- tap->helper);
+ s->nc.info_str = g_strdup_printf("helper=%s", tap->helper);
} else {
if (ifname && !stored->has_ifname) {
stored->has_ifname = true;
@@ -745,9 +743,8 @@ static void net_init_tap_one(const NetdevTapOptions *tap, NetClientState *peer,
stored->downscript = g_strdup(downscript);
}
- snprintf(s->nc.info_str, sizeof(s->nc.info_str),
- "ifname=%s,script=%s,downscript=%s", ifname, script,
- downscript);
+ s->nc.info_str = g_strdup_printf("ifname=%s,script=%s,downscript=%s",
+ ifname, script, downscript);
if (strcmp(downscript, "no") != 0) {
snprintf(s->down_script, sizeof(s->down_script), "%s", downscript);