[PATCH] arm64: traps: Mark __le16, __le32, __user variables properly

Stephen Boyd stephen.boyd at linaro.org
Mon Feb 20 00:47:57 PST 2017


Quoting Luc Van Oostenryck (2017-02-18 17:58:09)
> On Fri, Feb 17, 2017 at 08:51:12AM -0800, Stephen Boyd wrote:
>  
> > Mark the types appropriately, and force the cast in get_user()
> > when assigning to 0 so sparse doesn't complain.
> I didn't looked deeply at this one but I don't think it is needed.
> Care to give more details?

I think my sparse is old. I was using v0.5.0 from my distro, but using
sparse-next branch from git.kernel.org doesn't show the problem anymore.
I suppose I'll upgrade this machine's sparse version manually to avoid
this problem in the future and withdraw my other patch to asm-generic.

> 
> 
> > Noticed while making other changes to this file. There are other issues still
> > about marking symbols static, but I'm not sure we want to introduce another
> > header file for the asmlinkage functions?
> Probably not, indeed.
> 
> > arch/arm64/kernel/traps.c:567:10: warning: Initializer entry defined twice
> > arch/arm64/kernel/traps.c:568:10:   also defined here
> This one I find strange. Can you tell which are those two entries?
> 

This is:

 static const char *esr_class_str[] = {
         [0 ... ESR_ELx_EC_MAX]          = "UNRECOGNIZED EC",
         [ESR_ELx_EC_UNKNOWN]            = "Unknown/Uncategorized",

where we initialize the entire array to an "unknown" value once, and
then fill in the known values after that. This isn't a very common
pattern, but it is used from time to time to avoid having lots of lines
to do the same thing.



More information about the linux-arm-kernel mailing list