
Peter Krempa wrote:
On Tue, Feb 25, 2025 at 19:36:24 +0100, Roman Bogorodskiy wrote:
Alexander Shursha wrote:
Signed-off-by: Alexander Shursha <kekek2@ya.ru> --- src/bhyve/bhyve_parse_command.c | 60 +++++++++++++++++++ .../bhyveargv2xml-passthru.args | 7 +++ .../bhyveargv2xml-passthru.xml | 22 +++++++ tests/bhyveargv2xmltest.c | 1 + 4 files changed, 90 insertions(+) create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-passthru.args create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-passthru.xml
diff --git a/src/bhyve/bhyve_parse_command.c b/src/bhyve/bhyve_parse_command.c index 29d3a678bf..394fc151aa 100644 --- a/src/bhyve/bhyve_parse_command.c +++ b/src/bhyve/bhyve_parse_command.c @@ -5,6 +5,7 @@ * Copyright (C) 2006 Daniel P. Berrange * Copyright (c) 2011 NetApp, Inc. * Copyright (C) 2020 Fabian Freyer + * Copyright (C) 2024-2025 Future Crew, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -639,6 +640,63 @@ bhyveParsePCIFbuf(virDomainDef *def, return -1; }
+static int +bhyveParsePassthru(virDomainDef *def G_GNUC_UNUSED, + unsigned pcibus, + unsigned pcislot, + unsigned pcifunction, + char *addr) +{ + /* -s slot,bus/slot/function */ + /* -s slot,pcibus:slot:function */ + virDomainHostdevDef *hostdev = NULL; + g_auto(GStrv) params = NULL; + GStrv param; + char *p = NULL; + + hostdev = virDomainHostdevDefNew();
Need to check if hostdev is NULL.
That can't happen:
virDomainHostdevDef * virDomainHostdevDefNew(void) { virDomainHostdevDef *def;
def = g_new0(virDomainHostdevDef, 1);
def->info = g_new0(virDomainDeviceInfo, 1);
return def; }
g_new0() abort()'s on OOM, thus this is guaranteed to return a valid pointer.
Hm, interesting, that's been using g_new0() for about 5 years now. Looks like there are a few places that need to be clean up then, e.g. right in the same file (conf/domain_conf.c) in virDomainHostdevDefParseXML(), and some drivers as well. Roman