lkml.org 
[lkml]   [2015]   [Jan]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v2 22/40] tile: fix put_user sparse errors
On Tue, Jan 13, 2015 at 11:35:35AM +0200, Michael S. Tsirkin wrote:
> On Mon, Jan 12, 2015 at 04:56:54PM -0500, Chris Metcalf wrote:
> > Nack for this patch as-is.
> >
> > On 1/6/2015 10:44 AM, Michael S. Tsirkin wrote:
> > >virtio wants to write bitwise types to userspace using put_user.
> > >At the moment this triggers sparse errors, since the value is passed
> > >through an integer.
> > >
> > >For example:
> > >
> > > __le32 __user *p;
> > > __le32 x;
> > > put_user(x, p);
> > >
> > >is safe, but currently triggers a sparse warning on tile.
> > >
> > >The reason has to do with this code:
> > > __typeof((x)-(x))
> > >which seems to be a way to force check for an integer type.
> >
> > No, it's purely a way to avoid
> >
> > warning: cast from pointer to integer of different size
> >
> > at every place we invoke put_user() with a pointer - which is
> > in fact pretty frequent throughout the kernel.
> >
> > The idiom of
> > casting to the difference of the type converts it to a type
> > of the same size as the input (whether integral or pointer),
> > but guaranteed to be an integral type. Then from there it's safe
> > to cast it on to a u64 without generating a warning.
>
> Thanks for the comments. OK, I see, though I wonder why didn't
> kbuild notify me about new warnings. Doesn't it build tile?
>
> So if you want to merge your patch, please let me know.
>
> But I think the fix can be much simpler: unsigned long has the same property
> without any of the complexity, or problems with sparse. So how about this:


Oh, I see you have written a better patch already.
Please ignore mine.


\
 
 \ /
  Last update: 2015-01-13 11:01    [W:0.355 / U:0.080 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site