Re: Staging: speakup - syle fix permissions to octal

From: Julia Lawall
Date: Sat Feb 04 2017 - 13:11:51 EST




On Fri, 3 Feb 2017, Joe Perches wrote:

> (adding Julia Lawall)
>
> On Fri, 2017-02-03 at 20:44 -0800, Guenter Roeck wrote:
> > On Sat, Jan 28, 2017 at 07:05:09PM +1300, Derek Robson wrote:
> > > A style fix across whole driver.
> > > changed permissions to octal style, found using checkpatch
> > >
> > > Signed-off-by: Derek Robson <robsonde@xxxxxxxxx>
> >
> > FWIW, I think changes like this are best done using coccinelle.
>
> I think checkpatch does it reasonably well.
>
> Julia? Can coccinelle do this?
>
> I believe cocinelle doesn't handle the substitution
> and octal addition very well when multiple flags
> are used.

OK, finally received. I think that Guenter's solution is a good one,
because the rule-writer knows better than Coccinelle what people find to
be intelligible.

julia

>
> > That ensures that the results can be reproduced and are well defined.
> > As it is, someone will have to check each line of your patches to ensure
> > that the conversion is correct.
> >
> > It would also ensure (hopefully) that we don't end up with constructs
> > such as
> >
> > > -#define USER_R (S_IFREG|S_IRUGO)
> > > -#define USER_W (S_IFREG|S_IWUGO)
> > > +#define USER_R (S_IFREG|0444)
> > > +#define USER_W (S_IFREG|0666)
> >
> > which really defeat the purpose of the whole exercise.
>
> Why do you think mixing file specific attributes
> with octal permissions is a bad thing?
>
> $ git log -1 f90774e1fd2700d
> commit f90774e1fd2700de4a6e0d62866d34a26c544bd0
> Author: Joe Perches <joe@xxxxxxxxxxx>
> Date: Tue Oct 11 13:51:47 2016 -0700
>
> checkpatch: look for symbolic permissions and suggest octal instead
>
> S_<FOO> uses should be avoided where octal is more intelligible.
>
> Linus didst say:
>
> : It's *much* easier to parse and understand the octal numbers, while the
> : symbolic macro names are just random line noise and hard as hell to
> : understand. You really have to think about it.
> :
> : So we should rather go the other way: convert existing bad symbolic
> : permission bit macro use to just use the octal numbers.
> :
> : The symbolic names are good for the *other* bits (ie sticky bit, and the
> : inode mode _type_ numbers etc), but for the permission bits, the symbolic
> : names are just insane crap. Nobody sane should ever use them. Not in the
> : kernel, not in user space.
> (http://lkml.kernel.org/r/CA+55aFw5v23T-zvDZp-MmD_EYxF8WbafwwB59934FV7g21uMGQ@xxxxxxxxxxxxxx)
>
> Link: http://lkml.kernel.org/r/7232ef011d05a92f4caa86a5e9830d87966a2eaf.1470180926.git.joe@xxxxxxxxxxx
> Signed-off-by: Joe Perches <joe@xxxxxxxxxxx>
> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
>