2014-04-22 05:45:01

by Jianyu Zhan

[permalink] [raw]
Subject: [PATCH] cgroup: use uninitialized_var() for may-be uninitialized variable

To suppress this warning:

warning: ‘err’ may be used uninitialized in this function [-Wmaybe-uninitialized]
int err;
^

Use the uninitialized_var() to decalre err. It also serves to be good documetation.

Signed-off-by: Jianyu Zhan <[email protected]>
---
kernel/cgroup.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 24675f5..930569c 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -4144,7 +4144,7 @@ static int create_css(struct cgroup *cgrp, struct cgroup_subsys *ss)
{
struct cgroup *parent = cgrp->parent;
struct cgroup_subsys_state *css;
- int err;
+ int uninitialized_var(err);

lockdep_assert_held(&cgroup_mutex);

--
2.0.0-rc0


2014-04-22 06:27:51

by Zefan Li

[permalink] [raw]
Subject: Re: [PATCH] cgroup: use uninitialized_var() for may-be uninitialized variable

On 2014/4/22 13:44, Jianyu Zhan wrote:
> To suppress this warning:
>
> warning: ‘err’ may be used uninitialized in this function [-Wmaybe-uninitialized]
> int err;
> ^

I don't see this warning, and I don't see how this is possible.

static int create_css(struct cgroup *cgrp, struct cgroup_subsys *ss)
{
struct cgroup *parent = cgrp->parent;
struct cgroup_subsys_state *css;
int err;

lockdep_assert_held(&cgroup_mutex);

css = ss->css_alloc(cgroup_css(parent, ss));
if (IS_ERR(css))
return PTR_ERR(css);

err = percpu_ref_init(&css->refcnt, css_release);
if (err)
goto err_free_css;
...

return err;
}

>
> Use the uninitialized_var() to decalre err. It also serves to be good documetation.
>

anyway, uninitialized_var() should be avoided if possible.

nack

> Signed-off-by: Jianyu Zhan <[email protected]>
> ---
> kernel/cgroup.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/cgroup.c b/kernel/cgroup.c
> index 24675f5..930569c 100644
> --- a/kernel/cgroup.c
> +++ b/kernel/cgroup.c
> @@ -4144,7 +4144,7 @@ static int create_css(struct cgroup *cgrp, struct cgroup_subsys *ss)
> {
> struct cgroup *parent = cgrp->parent;
> struct cgroup_subsys_state *css;
> - int err;
> + int uninitialized_var(err);
>
> lockdep_assert_held(&cgroup_mutex);
>
>

2014-04-22 07:53:17

by Jianyu Zhan

[permalink] [raw]
Subject: Re: [PATCH] cgroup: use uninitialized_var() for may-be uninitialized variable

Hi, Li,


On Tue, Apr 22, 2014 at 2:26 PM, Li Zefan <[email protected]> wrote:
>
> I don't see this warning, and I don't see how this is possible.

You are right. No such warning.
It is triggered by the other patch, should be fixed in that patch.



Thanks,
Jianyu Zhan