From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754458AbcBBWJJ (ORCPT ); Tue, 2 Feb 2016 17:09:09 -0500 Received: from mail.linux-iscsi.org ([67.23.28.174]:39679 "EHLO linux-iscsi.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751868AbcBBWJH (ORCPT ); Tue, 2 Feb 2016 17:09:07 -0500 Message-ID: <1454450929.25549.1.camel@haakon3.risingtidesystems.com> Subject: Re: [PATCH] target: fix cast from pointer to phys_addr_t From: "Nicholas A. Bellinger" To: Arnd Bergmann Cc: linux-scsi@vger.kernel.org, target-devel@vger.kernel.org, linux-kernel@vger.kernel.org, "Hans J. Koch" , Greg Kroah-Hartman , linux-arm-kernel@lists.infradead.org, Andy Grover Date: Tue, 02 Feb 2016 14:08:49 -0800 In-Reply-To: <3114027.BKdWsaRxO0@wuerfel> References: <3114027.BKdWsaRxO0@wuerfel> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.4.4-1 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org (Adding Andy CC') On Mon, 2016-02-01 at 17:29 +0100, Arnd Bergmann wrote: > The uio_mem structure has a member that is a phys_addr_t, but can > be a number of other types too. The target core driver attempts > to assign a pointer from vmalloc() to it, by casting it to > phys_addr_t, but that causes a warning when phys_addr_t is longer > than a pointer: > > drivers/target/target_core_user.c: In function 'tcmu_configure_device': > drivers/target/target_core_user.c:906:22: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] > > This adds another cast to uintptr_t to shut up the warning. > A nicer fix might be to have additional fields in uio_mem > for the different purposes, so we can assign a pointer directly. > > Signed-off-by: Arnd Bergmann > --- > This has been around for a long while, but did not trigger in > my randconfig testing until now, don't know why. > > diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c > index dd600e5ead71..94f5154ac788 100644 > --- a/drivers/target/target_core_user.c > +++ b/drivers/target/target_core_user.c > @@ -903,7 +903,7 @@ static int tcmu_configure_device(struct se_device *dev) > info->version = __stringify(TCMU_MAILBOX_VERSION); > > info->mem[0].name = "tcm-user command & data buffer"; > - info->mem[0].addr = (phys_addr_t) udev->mb_addr; > + info->mem[0].addr = (phys_addr_t)(uintptr_t)udev->mb_addr; > info->mem[0].size = TCMU_RING_SIZE; > info->mem[0].memtype = UIO_MEM_VIRTUAL; > > Applied to target-pending/master. Thanks Arnd.