Re: [PATCH v2 22/40] tile: fix put_user sparse errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.
--
To unsubscribe from this list: send the line "unsubscribe linux-arch" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux