public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] nvme: fix 32-bit build warning
Date: Fri, 09 Oct 2015 20:55:26 +0200	[thread overview]
Message-ID: <5008376.3nLbRZSJUc@wuerfel> (raw)
In-Reply-To: <20151009144221.GA12760@infradead.org>

On Friday 09 October 2015 07:42:21 Christoph Hellwig wrote:
> On Tue, Oct 06, 2015 at 10:37:11PM +0200, Arnd Bergmann wrote:
> > Compiling the nvme driver on 32-bit warns about a cast from a __u64
> > variable to a pointer:
> > 
> > drivers/block/nvme-core.c: In function 'nvme_submit_io':
> > drivers/block/nvme-core.c:1847:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
> >     (void __user *)io.addr, length, NULL, 0);
> > 
> > The cast here is intentional and safe, so we can shut up the
> > gcc warning by adding an intermediate cast to 'unsigned long'.
> 
> It really should be a uintptr_t, which would also avoid the > 80
> character lines.  I wonder if we need a u64_to_ptr helper given these
> ioctl ABIs that pass pointers as a u64 seems to be everywhere these
> days.

I'll send a new version with uintptr_t for now, but having a proper
interface for this sounds like a good idea.

I've seen a couple of cases like this, and most but not
all actually want a __user pointer like this one. That seems
similar to the common ioctl use case where we want a user pointer
from an 'unsigned long', so we could use the same function for both,
like

static inline void __user *get_uptr(unsigned long arg)
{
	return (void __user *)arg;
}

With this definition, you can pass any scalar type (u64 or
unsigned long normally) and get the pointer, and we can
put that into include/linux/uaccess.h.

	Arnd

  reply	other threads:[~2015-10-09 18:55 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-06 20:37 [PATCH] nvme: fix 32-bit build warning Arnd Bergmann
2015-10-09 14:42 ` Christoph Hellwig
2015-10-09 18:55   ` Arnd Bergmann [this message]
2015-10-09 18:58   ` [PATCH v2] " Arnd Bergmann
2015-10-12 19:03     ` Christoph Hellwig
2015-10-12 19:10       ` Jens Axboe
2015-10-12 19:14         ` Arnd Bergmann
2015-10-12 19:22           ` Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5008376.3nLbRZSJUc@wuerfel \
    --to=arnd@arndb.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox