From mboxrd@z Thu Jan 1 00:00:00 1970 From: James Bottomley Subject: Re: [PATCH repost 12/16] parisc/uaccess: fix sparse errors Date: Wed, 31 Dec 2014 12:23:26 -0800 Message-ID: <1420057406.2085.7.camel@HansenPartnership.com> References: <1419499661-8566-1-git-send-email-mst@redhat.com> <1419499661-8566-13-git-send-email-mst@redhat.com> <549C91B9.8080009@gmx.de> <20141227161414.GA2571@redhat.com> <1420046240.2085.3.camel@HansenPartnership.com> <20141231183824.GA32430@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Cc: Helge Deller , linux-kernel@vger.kernel.org, Arnd Bergmann , linux-arch@vger.kernel.org, "James E.J. Bottomley" , linux-parisc@vger.kernel.org To: "Michael S. Tsirkin" Return-path: In-Reply-To: <20141231183824.GA32430@redhat.com> List-ID: List-Id: linux-parisc.vger.kernel.org On Wed, 2014-12-31 at 20:38 +0200, Michael S. Tsirkin wrote: > On Wed, Dec 31, 2014 at 09:17:20AM -0800, James Bottomley wrote: [...] > > OK, parisc developers still being dense, but this does look like an > > abuse of the bitwise type. > > To give you another example: > > __le16 __user *p; > __le16 foo; > int rc = get_user(v, p); > > really should be fine, ATM this gives a warning. OK, I think I've figured it out. You're saying that casting __gu_val to a bitwise annotated type is an automatic sparse failure because it has to be a long in our assembly code to receive the load/store as a register. However, this is required for sparse to do the correct lvalue type = rvalue type check in the assignment to x. We were all thinking the __force just killed these sparse type checks. In that case, I think parisc is fine with this. James