Message ID | 20201103015228.2250547-6-kuhn.chenqun@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fix uninitialized variable warning | expand |
On 11/3/20 2:52 AM, Chen Qun wrote: > After the WITH_QEMU_LOCK_GUARD macro is added, the compiler cannot identify > that the statements in the macro must be executed. As a result, some variables > assignment statements in the macro may be considered as unexecuted by the compiler. > > The compiler showed warning: > plugins/loader.c: In function ‘plugin_reset_uninstall’: > plugins/loader.c:382:15: warning: ‘ctx’ may be used uninitialized in this function [-Wmaybe-uninitialized] This shouldn't happen as the function returns before (else there is a NULL deref). > 382 | data->ctx = ctx; > | ~~~~~~~~~~^~~~~ > > Add a default value for 'expire_time' to prevented the warning. > > Reported-by: Euler Robot <euler.robot@huawei.com> > Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com> > --- > Cc: "Alex Bennée" <alex.bennee@linaro.org> > --- > plugins/loader.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/plugins/loader.c b/plugins/loader.c > index 8ac5dbc20f..88593fe138 100644 > --- a/plugins/loader.c > +++ b/plugins/loader.c > @@ -367,7 +367,7 @@ void plugin_reset_uninstall(qemu_plugin_id_t id, > bool reset) > { > struct qemu_plugin_reset_data *data; > - struct qemu_plugin_ctx *ctx; > + struct qemu_plugin_ctx *ctx = NULL; > > WITH_QEMU_LOCK_GUARD(&plugin.lock) { > ctx = plugin_id_to_ctx_locked(id); >
> -----Original Message----- > From: Philippe Mathieu-Daudé [mailto:philmd@redhat.com] > Sent: Tuesday, November 3, 2020 10:18 AM > To: Chenqun (kuhn) <kuhn.chenqun@huawei.com>; qemu-devel@nongnu.org; > qemu-trivial@nongnu.org > Cc: Alex Bennée <alex.bennee@linaro.org>; Zhanghailiang > <zhang.zhanghailiang@huawei.com>; ganqixin <ganqixin@huawei.com>; Euler > Robot <euler.robot@huawei.com> > Subject: Re: [PATCH 5/6] plugins/loader: fix uninitialized variable warning in > plugin_reset_uninstall() > > On 11/3/20 2:52 AM, Chen Qun wrote: > > After the WITH_QEMU_LOCK_GUARD macro is added, the compiler cannot > > identify that the statements in the macro must be executed. As a > > result, some variables assignment statements in the macro may be > considered as unexecuted by the compiler. > > > > The compiler showed warning: > > plugins/loader.c: In function ‘plugin_reset_uninstall’: > > plugins/loader.c:382:15: warning: ‘ctx’ may be used uninitialized in > > this function [-Wmaybe-uninitialized] > > This shouldn't happen as the function returns before (else there is a NULL > deref). > Yes, in fact, it shouldn't have happened when the program was running. But after added 'WITH_QEMU_LOCK_GUARD', let the compiler think it might happen. So, we add a default value, make the compiler happy. Thanks, Chen Qun > > 382 | data->ctx = ctx; > > | ~~~~~~~~~~^~~~~ > > > > Add a default value for 'expire_time' to prevented the warning. > > > > Reported-by: Euler Robot <euler.robot@huawei.com> > > Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com> > > --- > > Cc: "Alex Bennée" <alex.bennee@linaro.org> > > --- > > plugins/loader.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/plugins/loader.c b/plugins/loader.c index > > 8ac5dbc20f..88593fe138 100644 > > --- a/plugins/loader.c > > +++ b/plugins/loader.c > > @@ -367,7 +367,7 @@ void plugin_reset_uninstall(qemu_plugin_id_t id, > > bool reset) { > > struct qemu_plugin_reset_data *data; > > - struct qemu_plugin_ctx *ctx; > > + struct qemu_plugin_ctx *ctx = NULL; > > > > WITH_QEMU_LOCK_GUARD(&plugin.lock) { > > ctx = plugin_id_to_ctx_locked(id); > >
diff --git a/plugins/loader.c b/plugins/loader.c index 8ac5dbc20f..88593fe138 100644 --- a/plugins/loader.c +++ b/plugins/loader.c @@ -367,7 +367,7 @@ void plugin_reset_uninstall(qemu_plugin_id_t id, bool reset) { struct qemu_plugin_reset_data *data; - struct qemu_plugin_ctx *ctx; + struct qemu_plugin_ctx *ctx = NULL; WITH_QEMU_LOCK_GUARD(&plugin.lock) { ctx = plugin_id_to_ctx_locked(id);
After the WITH_QEMU_LOCK_GUARD macro is added, the compiler cannot identify that the statements in the macro must be executed. As a result, some variables assignment statements in the macro may be considered as unexecuted by the compiler. The compiler showed warning: plugins/loader.c: In function ‘plugin_reset_uninstall’: plugins/loader.c:382:15: warning: ‘ctx’ may be used uninitialized in this function [-Wmaybe-uninitialized] 382 | data->ctx = ctx; | ~~~~~~~~~~^~~~~ Add a default value for 'expire_time' to prevented the warning. Reported-by: Euler Robot <euler.robot@huawei.com> Signed-off-by: Chen Qun <kuhn.chenqun@huawei.com> --- Cc: "Alex Bennée" <alex.bennee@linaro.org> --- plugins/loader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)