Message ID | 20250210121045.38908-1-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | system/qdev: Remove pointless NULL check in qdev_device_add_from_qdict | expand |
On 2/10/25 04:10, Philippe Mathieu-Daudé wrote: > Coverity reported a unnecessary NULL check: > > qemu/system/qdev-monitor.c: 720 in qdev_device_add_from_qdict() > 683 /* create device */ > 684 dev = qdev_new(driver); > ... > 719 err_del_dev: > >>> CID 1590192: Null pointer dereferences (REVERSE_INULL) > >>> Null-checking "dev" suggests that it may be null, but it has already been dereferenced on all paths leading to the check. > 720 if (dev) { > 721 object_unparent(OBJECT(dev)); > 722 object_unref(OBJECT(dev)); > 723 } > 724 return NULL; > 725 } > > Indeed, unlike qdev_try_new() which can return NULL, > qdev_new() always returns a heap pointer (or aborts). > > Remove the unnecessary assignment and check. > > Fixes: f3a85056569 ("qdev/qbus: add hidden device support") > Resolves: Coverity CID 1590192 (Null pointer dereferences) > Suggested-by: Peter Maydell<peter.maydell@linaro.org> > Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org> > --- > system/qdev-monitor.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index 861c25c855f..01d4b007322 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -628,7 +628,7 @@ DeviceState *qdev_device_add_from_qdict(const QDict *opts, DeviceClass *dc; const char *driver, *path; char *id; - DeviceState *dev = NULL; + DeviceState *dev; BusState *bus = NULL; QDict *properties; @@ -717,10 +717,9 @@ DeviceState *qdev_device_add_from_qdict(const QDict *opts, return dev; err_del_dev: - if (dev) { - object_unparent(OBJECT(dev)); - object_unref(OBJECT(dev)); - } + object_unparent(OBJECT(dev)); + object_unref(OBJECT(dev)); + return NULL; }