* [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile warning
@ 2010-09-12 13:48 ` Javier Martinez Canillas
0 siblings, 0 replies; 6+ 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,
linux-acpi, linux-kernel, kernel-janitors
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
^ permalink raw reply related [flat|nested] 6+ 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; 6+ 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,
linux-acpi, linux-kernel, kernel-janitors
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
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile
2010-09-12 13:48 ` Javier Martinez Canillas
@ 2010-09-13 20:00 ` Andrew Morton
-1 siblings, 0 replies; 6+ 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] 6+ messages in thread
* Re: [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile warning
@ 2010-09-13 20:00 ` Andrew Morton
0 siblings, 0 replies; 6+ 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] 6+ messages in thread
* Re: [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile
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
-1 siblings, 0 replies; 6+ 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] 6+ messages in thread
* Re: [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile warning
@ 2010-09-14 0:54 ` Huang Ying
0 siblings, 0 replies; 6+ 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] 6+ messages in thread
end of thread, other threads:[~2010-09-14 0:54 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-12 13:48 [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile warning Javier Martinez Canillas
2010-09-12 13:48 ` Javier Martinez Canillas
2010-09-13 20:00 ` [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile Andrew Morton
2010-09-13 20:00 ` [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile warning Andrew Morton
2010-09-14 0:54 ` [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile Huang Ying
2010-09-14 0:54 ` [PATCH] ACPI: apei: Cast u64 to unsigned long, fix compile warning Huang Ying
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.