2008-02-20 17:31:30

by Joshua Roys

[permalink] [raw]
Subject: [PATCH] Fix a compile warning under gcc-4.2.3.

sound/core/init.c: In function ‘snd_card_disconnect’:
sound/core/init.c:307: warning: the address of ‘snd_shutdown_f_ops’ will always evaluate as ‘true’

Signed-off-by: Joshua Roys <[email protected]>
---
sound/core/init.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/sound/core/init.c b/sound/core/init.c
index 2cb7099..1afc58b 100644
--- a/sound/core/init.c
+++ b/sound/core/init.c
@@ -304,7 +304,6 @@ int snd_card_disconnect(struct snd_card *card)
list_add(&mfile->shutdown_list, &shutdown_files);
spin_unlock(&shutdown_lock);

- fops_get(&snd_shutdown_f_ops);
mfile->file->f_op = &snd_shutdown_f_ops;

mfile = mfile->next;
--
1.5.4.2


2008-02-21 08:46:58

by Clemens Ladisch

[permalink] [raw]
Subject: Re: [PATCH] [alsa-devel] Fix a compile warning under gcc-4.2.3.

Joshua Roys wrote:
> sound/core/init.c: In function ‘snd_card_disconnect’:
> sound/core/init.c:307: warning: the address of ‘snd_shutdown_f_ops’ will always evaluate as ‘true’
>
> Signed-off-by: Joshua Roys <[email protected]>
> ---
> sound/core/init.c | 1 -
> 1 files changed, 0 insertions(+), 1 deletions(-)
>
> diff --git a/sound/core/init.c b/sound/core/init.c
> index 2cb7099..1afc58b 100644
> --- a/sound/core/init.c
> +++ b/sound/core/init.c
> @@ -304,7 +304,6 @@ int snd_card_disconnect(struct snd_card *card)
> list_add(&mfile->shutdown_list, &shutdown_files);
> spin_unlock(&shutdown_lock);
>
> - fops_get(&snd_shutdown_f_ops);
> mfile->file->f_op = &snd_shutdown_f_ops;
>
> mfile = mfile->next;

This change may get rid of the warning, but is has the slight
disadvantage that the kernel will blow up if you try to unload the sound
modules before all device files have been closed.

If you want to get rid of this warning, tell the compiler that fops_get
knows what it does; or try making fops_get an inline function instead of
a macro.


Regards,
Clemens

2008-02-21 11:19:27

by Takashi Iwai

[permalink] [raw]
Subject: Re: [alsa-devel] [PATCH] Fix a compile warning under gcc-4.2.3.

At Thu, 21 Feb 2008 09:48:30 +0100,
Clemens Ladisch wrote:
>
> Joshua Roys wrote:
> > sound/core/init.c: In function ?snd_card_disconnect?:
> > sound/core/init.c:307: warning: the address of ?snd_shutdown_f_ops? will always evaluate as ?true?
> >
> > Signed-off-by: Joshua Roys <[email protected]>
> > ---
> > sound/core/init.c | 1 -
> > 1 files changed, 0 insertions(+), 1 deletions(-)
> >
> > diff --git a/sound/core/init.c b/sound/core/init.c
> > index 2cb7099..1afc58b 100644
> > --- a/sound/core/init.c
> > +++ b/sound/core/init.c
> > @@ -304,7 +304,6 @@ int snd_card_disconnect(struct snd_card *card)
> > list_add(&mfile->shutdown_list, &shutdown_files);
> > spin_unlock(&shutdown_lock);
> >
> > - fops_get(&snd_shutdown_f_ops);
> > mfile->file->f_op = &snd_shutdown_f_ops;
> >
> > mfile = mfile->next;
>
> This change may get rid of the warning, but is has the slight
> disadvantage that the kernel will blow up if you try to unload the sound
> modules before all device files have been closed.
>
> If you want to get rid of this warning, tell the compiler that fops_get
> knows what it does; or try making fops_get an inline function instead of
> a macro.

This was already fixed in a different way on 2.6.25-rc.

commit bc9abce0de0b180817bc7e9f73145ef0b6a464ef
Author: Miguel Boton <[email protected]>
Date: Sun Jan 13 12:03:53 2008 +0100

[ALSA] fix compilation warning in GCC

'snd_shutdown_f_ops' is not a pointer so its address will never be NULL.
GCC will complain because 'fops_get' will do an unnecessary check because
'&snd_shutdown_f_ops' is always true.


Takashi