2015-05-02 18:56:34

by Fabian Frédérick

[permalink] [raw]
Subject: [PATCH 1/1 linux-next] affs: add default case in switch

Fix gcc -Wswitch-default warnings

Cc: Andrew Morton <[email protected]>
Signed-off-by: Fabian Frederick <[email protected]>
---
fs/affs/inode.c | 2 ++
fs/affs/namei.c | 3 +++
2 files changed, 5 insertions(+)

diff --git a/fs/affs/inode.c b/fs/affs/inode.c
index 1734950..623398e 100644
--- a/fs/affs/inode.c
+++ b/fs/affs/inode.c
@@ -143,6 +143,8 @@ struct inode *affs_iget(struct super_block *sb, unsigned long ino)
inode->i_op = &affs_symlink_inode_operations;
inode->i_data.a_ops = &affs_symlink_aops;
break;
+ default:
+ break;
}

inode->i_mtime.tv_sec = inode->i_atime.tv_sec = inode->i_ctime.tv_sec
diff --git a/fs/affs/namei.c b/fs/affs/namei.c
index 181e05b..517926d 100644
--- a/fs/affs/namei.c
+++ b/fs/affs/namei.c
@@ -237,6 +237,9 @@ affs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
//case ST_LINKDIR:
case ST_LINKFILE:
ino = be32_to_cpu(AFFS_TAIL(sb, bh)->original);
+ break;
+ default:
+ break;
}
affs_brelse(bh);
inode = affs_iget(sb, ino);
--
1.9.1


2015-05-03 14:51:49

by Richard Weinberger

[permalink] [raw]
Subject: Re: [PATCH 1/1 linux-next] affs: add default case in switch

On Sat, May 2, 2015 at 8:56 PM, Fabian Frederick <[email protected]> wrote:
> Fix gcc -Wswitch-default warnings
>
> Cc: Andrew Morton <[email protected]>
> Signed-off-by: Fabian Frederick <[email protected]>
> ---
> fs/affs/inode.c | 2 ++
> fs/affs/namei.c | 3 +++
> 2 files changed, 5 insertions(+)
>
> diff --git a/fs/affs/inode.c b/fs/affs/inode.c
> index 1734950..623398e 100644
> --- a/fs/affs/inode.c
> +++ b/fs/affs/inode.c
> @@ -143,6 +143,8 @@ struct inode *affs_iget(struct super_block *sb, unsigned long ino)
> inode->i_op = &affs_symlink_inode_operations;
> inode->i_data.a_ops = &affs_symlink_aops;
> break;
> + default:
> + break;
> }
>
> inode->i_mtime.tv_sec = inode->i_atime.tv_sec = inode->i_ctime.tv_sec
> diff --git a/fs/affs/namei.c b/fs/affs/namei.c
> index 181e05b..517926d 100644
> --- a/fs/affs/namei.c
> +++ b/fs/affs/namei.c
> @@ -237,6 +237,9 @@ affs_lookup(struct inode *dir, struct dentry *dentry, unsigned int flags)
> //case ST_LINKDIR:
> case ST_LINKFILE:
> ino = be32_to_cpu(AFFS_TAIL(sb, bh)->original);
> + break;
> + default:
> + break;

How can this code path be reached?
If I read your patch correctly it just silences gcc.

If the code can be reached you need to take a proper action of not the
warning is bogus.

--
Thanks,
//richard

2015-05-03 18:16:00

by Fabian Frédérick

[permalink] [raw]
Subject: Re: [PATCH 1/1 linux-next] affs: add default case in switch



> On 03 May 2015 at 16:51 Richard Weinberger <[email protected]>
> wrote:
>
>
> On Sat, May 2, 2015 at 8:56 PM, Fabian Frederick <[email protected]> wrote:
> > Fix gcc -Wswitch-default warnings
> >
> > Cc: Andrew Morton <[email protected]>
> > Signed-off-by: Fabian Frederick <[email protected]>
> > ---
> >  fs/affs/inode.c | 2 ++
> >  fs/affs/namei.c | 3 +++
> >  2 files changed, 5 insertions(+)
> >
> > diff --git a/fs/affs/inode.c b/fs/affs/inode.c
> > index 1734950..623398e 100644
> > --- a/fs/affs/inode.c
> > +++ b/fs/affs/inode.c
> > @@ -143,6 +143,8 @@ struct inode *affs_iget(struct super_block *sb, unsigned
> > long ino)
> >                 inode->i_op = &affs_symlink_inode_operations;
> >                 inode->i_data.a_ops = &affs_symlink_aops;
> >                 break;
> > +       default:
> > +               break;
> >         }
> >
> >         inode->i_mtime.tv_sec = inode->i_atime.tv_sec =
> >inode->i_ctime.tv_sec
> > diff --git a/fs/affs/namei.c b/fs/affs/namei.c
> > index 181e05b..517926d 100644
> > --- a/fs/affs/namei.c
> > +++ b/fs/affs/namei.c
> > @@ -237,6 +237,9 @@ affs_lookup(struct inode *dir, struct dentry *dentry,
> > unsigned int flags)
> >                 //case ST_LINKDIR:
> >                 case ST_LINKFILE:
> >                         ino = be32_to_cpu(AFFS_TAIL(sb, bh)->original);
> > +                       break;
> > +               default:
> > +                       break;
>
> How can this code path be reached?
> If I read your patch correctly it just silences gcc.
>
> If the code can be reached you need to take a proper action of not the
> warning is bogus.

As far as I understand, switch in affs_lookup() only updates inode number when
it's a link so we can simply add default:break to silence gcc warning or replace
by if().

affs_iget() switch on the other hand applies to any type of file.
Maybe we could add default: BUG() to avoid working on bad inode ?

Regards,
Fabian
>
> --
> Thanks,
> //richard

2015-05-03 18:23:38

by Richard Weinberger

[permalink] [raw]
Subject: Re: [PATCH 1/1 linux-next] affs: add default case in switch

Am 03.05.2015 um 20:15 schrieb Fabian Frederick:
>> If the code can be reached you need to take a proper action of not the
>> warning is bogus.
>
> As far as I understand, switch in affs_lookup() only updates inode number when
> it's a link so we can simply add default:break to silence gcc warning or replace
> by if().

Does the warning trigger with our default set of compiler warnings?
Not all gcc warnings are useful. :)

> affs_iget() switch on the other hand applies to any type of file.
> Maybe we could add default: BUG() to avoid working on bad inode ?

Or cancel the operation and return -EIO to userspace.

Thanks,
//richard

2015-05-03 18:39:06

by Fabian Frédérick

[permalink] [raw]
Subject: Re: [PATCH 1/1 linux-next] affs: add default case in switch



> On 03 May 2015 at 20:23 Richard Weinberger <[email protected]> wrote:
>
>
> Am 03.05.2015 um 20:15 schrieb Fabian Frederick:
> >> If the code can be reached you need to take a proper action of not the
> >> warning is bogus.
> >
> > As far as I understand, switch in affs_lookup() only updates inode number
> > when
> > it's a link so we can simply add default:break to silence gcc warning or
> > replace
> > by if().
>
> Does the warning trigger with our default set of compiler warnings?
> Not all gcc warnings are useful. :)
Only with W=123

>
> > affs_iget() switch on the other hand applies to any type of file.
> > Maybe we could add default: BUG() to avoid working on bad inode ?
>
> Or cancel the operation and return -EIO to userspace.
Ok, thanks, I'll send another version :)

Regards,
Fabian
>
> Thanks,
> //richard

2015-05-03 18:40:05

by Richard Weinberger

[permalink] [raw]
Subject: Re: [PATCH 1/1 linux-next] affs: add default case in switch

Am 03.05.2015 um 20:38 schrieb Fabian Frederick:
>
>
>> On 03 May 2015 at 20:23 Richard Weinberger <[email protected]> wrote:
>>
>>
>> Am 03.05.2015 um 20:15 schrieb Fabian Frederick:
>>>> If the code can be reached you need to take a proper action of not the
>>>> warning is bogus.
>>>
>>> As far as I understand, switch in affs_lookup() only updates inode number
>>> when
>>> it's a link so we can simply add default:break to silence gcc warning or
>>> replace
>>> by if().
>>
>> Does the warning trigger with our default set of compiler warnings?
>> Not all gcc warnings are useful. :)
> Only with W=123
>
>>
>>> affs_iget() switch on the other hand applies to any type of file.
>>> Maybe we could add default: BUG() to avoid working on bad inode ?
>>
>> Or cancel the operation and return -EIO to userspace.
> Ok, thanks, I'll send another version :)

As the warning happens only with W=123 I'd ignore it. :)

Thanks,
//richard