On Thu, May 12, 2022 at 04:57:13PM +0100, Peter Maydell wrote: > On Wed, 27 Apr 2022 at 11:04, Stefan Hajnoczi <stefa...@redhat.com> wrote: > > > > Commit 747421e949fc1eb3ba66b5fcccdb7ba051918241 ("Implements Backend > > Program conventions for vhost-user-scsi") introduced fd-passing support > > as part of implementing the vhost-user backend program conventions. > > > > When fd passing is used the UNIX domain socket path is NULL and we must > > not call unlink(2). > > > > Fixes: Coverity CID 1488353 > > Fixes: 747421e949fc1eb3ba66b5fcccdb7ba051918241 ("Implements Backend > > Program conventions for vhost-user-scsi") > > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > > --- > > contrib/vhost-user-scsi/vhost-user-scsi.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/contrib/vhost-user-scsi/vhost-user-scsi.c > > b/contrib/vhost-user-scsi/vhost-user-scsi.c > > index b2c0f98253..08335d4b2b 100644 > > --- a/contrib/vhost-user-scsi/vhost-user-scsi.c > > +++ b/contrib/vhost-user-scsi/vhost-user-scsi.c > > @@ -433,7 +433,9 @@ out: > > if (vdev_scsi) { > > g_main_loop_unref(vdev_scsi->loop); > > g_free(vdev_scsi); > > - unlink(opt_socket_path); > > + if (opt_socket_path) { > > + unlink(opt_socket_path); > > + } > > } > > Shouldn't this check-and-unlink be one level up, outside the > "if (vdev_scsi)" ? There are error exit paths which get us to > the 'out:' label where we have called unix_sock_new() but > not yet done the g_new0() of vdev_scsi(). The only thing > that needs to be guarded by "if (vdev_scsi)" is the > g_main_loop_unref() (the g_free of vdev_scsi itself could > be inside or outside, since g_free(NULL) is a nop).
Sorry, I was offline last week due to illness. Now I'm back and agree with what you found. I have sent a v2. Stefan
signature.asc
Description: PGP signature