* Re: [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile warning [not found] <1284299305.7239.4.camel@lenovo> @ 2010-09-13 20:00 ` Andrew Morton 2010-09-14 0:54 ` Huang Ying 0 siblings, 1 reply; 3+ messages in thread From: Andrew Morton @ 2010-09-13 20:00 UTC (permalink / raw) To: Javier Martinez Canillas Cc: Len Brown, Huang Ying, Andi Kleen, Thomas Gleixner, linux-acpi, linux-kernel, kernel-janitors On Sun, 12 Sep 2010 09:48:25 -0400 Javier Martinez Canillas <martinez.javier@gmail.com> wrote: > In today linux-net I got a compile warning in acpi/apei > > drivers/acpi/apei/erst.c: In function ___erst_exec_move_data___: > drivers/acpi/apei/erst.c:273: warning: cast to pointer from integer of different size > drivers/acpi/apei/erst.c:274: warning: cast to pointer from integer of different size > > The problem is that apei_exec_context->dst_base type is u64. > But in 32 bits architecture void * is 32 bits long. > Casting it to unsigned long solves the issue > > Signed-off-by: Javier Martinez Canillas <martinez.javier@gmail.com> > --- > drivers/acpi/apei/erst.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c > index a4904f1..37d7a05 100644 > --- a/drivers/acpi/apei/erst.c > +++ b/drivers/acpi/apei/erst.c > @@ -270,8 +270,8 @@ static int erst_exec_move_data(struct apei_exec_context *ctx, > rc = __apei_exec_read_register(entry, &offset); > if (rc) > return rc; > - memmove((void *)ctx->dst_base + offset, > - (void *)ctx->src_base + offset, > + memmove((void *)(unsigned long)ctx->dst_base + offset, > + (void *)(unsigned long)ctx->src_base + offset, > ctx->var2); > > return 0; This might indicate that the incorrect types were used within the `struct apei_exec_context'. I can't tell (or can't be bothered working it out), because whoever wrote that didn't bother documenting any of it at all. Are those things kernel virtual addresses? If so, a pointer type should have been used. ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile warning 2010-09-13 20:00 ` [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile warning Andrew Morton @ 2010-09-14 0:54 ` Huang Ying 0 siblings, 0 replies; 3+ messages in thread From: Huang Ying @ 2010-09-14 0:54 UTC (permalink / raw) To: Andrew Morton Cc: Javier Martinez Canillas, Len Brown, Andi Kleen, Thomas Gleixner, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org Hi, Andrew, On Tue, 2010-09-14 at 04:00 +0800, Andrew Morton wrote: > On Sun, 12 Sep 2010 09:48:25 -0400 > Javier Martinez Canillas <martinez.javier@gmail.com> wrote: > > > In today linux-net I got a compile warning in acpi/apei > > > > drivers/acpi/apei/erst.c: In function ___erst_exec_move_data___: > > drivers/acpi/apei/erst.c:273: warning: cast to pointer from integer of different size > > drivers/acpi/apei/erst.c:274: warning: cast to pointer from integer of different size > > > > The problem is that apei_exec_context->dst_base type is u64. > > But in 32 bits architecture void * is 32 bits long. > > Casting it to unsigned long solves the issue > > > > Signed-off-by: Javier Martinez Canillas <martinez.javier@gmail.com> > > --- > > drivers/acpi/apei/erst.c | 4 ++-- > > 1 files changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c > > index a4904f1..37d7a05 100644 > > --- a/drivers/acpi/apei/erst.c > > +++ b/drivers/acpi/apei/erst.c > > @@ -270,8 +270,8 @@ static int erst_exec_move_data(struct apei_exec_context *ctx, > > rc = __apei_exec_read_register(entry, &offset); > > if (rc) > > return rc; > > - memmove((void *)ctx->dst_base + offset, > > - (void *)ctx->src_base + offset, > > + memmove((void *)(unsigned long)ctx->dst_base + offset, > > + (void *)(unsigned long)ctx->src_base + offset, > > ctx->var2); > > > > return 0; > > This might indicate that the incorrect types were used within the > `struct apei_exec_context'. I can't tell (or can't be bothered working > it out), because whoever wrote that didn't bother documenting any of it > at all. Sorry about lacking the document. All these code are based on ACPI specification 4.0a, section 17.5 "Error Serialization". The fields in struct apei_exec_context such as var1, var2, src_base, dst_base, etc come from there too. I will add some document for it. > Are those things kernel virtual addresses? If so, a pointer type > should have been used. Sorry, I found another bug here. These should be physical memory and should be ioremapped before accessing. I will fix it as soon as possible. Best Regards, Huang Ying ^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile warning @ 2010-09-12 13:48 Javier Martinez Canillas 0 siblings, 0 replies; 3+ messages in thread From: Javier Martinez Canillas @ 2010-09-12 13:48 UTC (permalink / raw) To: Len Brown, Huang Ying, Andrew Morton, Andi Kleen, Thomas Gleixner In today linux-net I got a compile warning in acpi/apei drivers/acpi/apei/erst.c: In function ‘erst_exec_move_data’: drivers/acpi/apei/erst.c:273: warning: cast to pointer from integer of different size drivers/acpi/apei/erst.c:274: warning: cast to pointer from integer of different size The problem is that apei_exec_context->dst_base type is u64. But in 32 bits architecture void * is 32 bits long. Casting it to unsigned long solves the issue Signed-off-by: Javier Martinez Canillas <martinez.javier@gmail.com> --- drivers/acpi/apei/erst.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c index a4904f1..37d7a05 100644 --- a/drivers/acpi/apei/erst.c +++ b/drivers/acpi/apei/erst.c @@ -270,8 +270,8 @@ static int erst_exec_move_data(struct apei_exec_context *ctx, rc = __apei_exec_read_register(entry, &offset); if (rc) return rc; - memmove((void *)ctx->dst_base + offset, - (void *)ctx->src_base + offset, + memmove((void *)(unsigned long)ctx->dst_base + offset, + (void *)(unsigned long)ctx->src_base + offset, ctx->var2); return 0; -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-09-14 0:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1284299305.7239.4.camel@lenovo>
2010-09-13 20:00 ` [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile warning Andrew Morton
2010-09-14 0:54 ` Huang Ying
2010-09-12 13:48 Javier Martinez Canillas
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox