On Sun, 12 Oct 2014 11:52:55 +0000
Shachar Raindel <[email protected]> wrote:
> > + switch (length) {
> > + case 1:
> > + ret = get_user(value.buf8, ((u8 *)user_buffer));
>
> This cast (and similar casts across the code) kills the __user
> annotation of the user buffer pointer.
> First - fix this to help various static verification tools such
> as sparse work on your code.
> Second - are you sure this switch-case block achieves any
> performance gain compared to always using copy_from_user?
> If so, why not just push it into the S390 copy from user code?
The __user annotation is indeed missing. If the switch is improving
performance needs to be seen, with the compile options set for z10
the get_user is inlined while the copy_from_user calls a function.
For compiles < z10 all 5 switch cases will call the same
__copy_from_user function. So it depends, as long as the switch is
correct I am ok the code block for now.
> > + switch (length) {
> > + case 1:
> > + value.buf8 = __raw_readb(io_addr);
> > + ret = put_user(value.buf8, ((u8 *)user_buffer));
>
> Add __user annotations in this code block as well.
Yes, please add.
> Generally speaking, looks OK once the __user annotation is added.
>
> I suspect you might need ack/review from the S390 maintainer as
> well for this to be pushed, as the syscall is generic to the
> entire S390 subsystem.
With the missing __user annotations added:
Acked-by: Martin Schwidefsky <[email protected]>
--
blue skies,
Martin.
"Reality continues to ruin my life." - Calvin.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html