qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] S390: file size checking in load_image_targphys and certain ram sizes
@ 2012-05-03 13:36 Christian Borntraeger
  2012-05-03 13:51 ` Alexander Graf
  0 siblings, 1 reply; 9+ messages in thread
From: Christian Borntraeger @ 2012-05-03 13:36 UTC (permalink / raw)
  To: Alexander Graf, Benjamin Herrenschmidt; +Cc: qemu-devel@nongnu.org


Ben, Alex,

commit 17df768c1e4580f03301d18ea938d3557d441911
    load_image_targphys() should enforce the max size

caused some problems with external kernel and specific ram sizes on s390:

We load the external kernel with

[...]
            kernel_size = load_image_targphys(kernel_filename, 0, ram_size);
[...]

The problem is now, that load_image_targphys has max_sz as an int (32bit), but 
ram_size is a ram_addr_t (64bit).
So for a ramsize of lets say 3GB the comparison in load_image_targphys fails:

    if (size > max_sz) {
        return -1;
    }

There are several potential ways of solving, suggestions for a better solution
than the patch below are welcome.



diff --git a/hw/loader.c b/hw/loader.c
index 415cdce..8a6c99d 100644
--- a/hw/loader.c
+++ b/hw/loader.c
@@ -103,7 +103,7 @@ ssize_t read_targphys(const char *name,
 
 /* return the size or -1 if error */
 int load_image_targphys(const char *filename,
-                       target_phys_addr_t addr, int max_sz)
+                       target_phys_addr_t addr, uint64_t max_sz)
 {
     int size;
 
diff --git a/hw/loader.h b/hw/loader.h
index fbcaba9..5cfa6df 100644
--- a/hw/loader.h
+++ b/hw/loader.h
@@ -4,7 +4,7 @@
 /* loader.c */
 int get_image_size(const char *filename);
 int load_image(const char *filename, uint8_t *addr); /* deprecated */
-int load_image_targphys(const char *filename, target_phys_addr_t, int max_sz);
+int load_image_targphys(const char *filename, target_phys_addr_t, uint64_t);
 int load_elf(const char *filename, uint64_t (*translate_fn)(void *, uint64_t),
              void *translate_opaque, uint64_t *pentry, uint64_t *lowaddr,
              uint64_t *highaddr, int big_endian, int elf_machine,

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] S390: file size checking in load_image_targphys and certain ram sizes
  2012-05-03 13:36 [Qemu-devel] S390: file size checking in load_image_targphys and certain ram sizes Christian Borntraeger
@ 2012-05-03 13:51 ` Alexander Graf
  2012-05-03 14:27   ` [Qemu-devel] [PATCH] Fix size checking in load_image_targphys to accept max_size > INT_MAX Christian Borntraeger
  0 siblings, 1 reply; 9+ messages in thread
From: Alexander Graf @ 2012-05-03 13:51 UTC (permalink / raw)
  To: Christian Borntraeger; +Cc: qemu-devel Developers, Peter Maydell


On 03.05.2012, at 15:36, Christian Borntraeger wrote:

> 
> Ben, Alex,
> 
> commit 17df768c1e4580f03301d18ea938d3557d441911
>    load_image_targphys() should enforce the max size
> 
> caused some problems with external kernel and specific ram sizes on s390:
> 
> We load the external kernel with
> 
> [...]
>            kernel_size = load_image_targphys(kernel_filename, 0, ram_size);
> [...]
> 
> The problem is now, that load_image_targphys has max_sz as an int (32bit), but 
> ram_size is a ram_addr_t (64bit).
> So for a ramsize of lets say 3GB the comparison in load_image_targphys fails:
> 
>    if (size > max_sz) {
>        return -1;
>    }
> 
> There are several potential ways of solving, suggestions for a better solution
> than the patch below are welcome.

The proposed solution looks perfectly fine. In fact I remember having had a very similar discussion on an ARM issue and the conclusion we came up with was to use the biggest available data type: uint64_t.

Pleas repost this as a proper patch with Signed-off-by :).


Alex

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PATCH] Fix size checking in load_image_targphys to accept max_size > INT_MAX
  2012-05-03 13:51 ` Alexander Graf
@ 2012-05-03 14:27   ` Christian Borntraeger
  2012-05-03 14:33     ` Peter Maydell
  0 siblings, 1 reply; 9+ messages in thread
From: Christian Borntraeger @ 2012-05-03 14:27 UTC (permalink / raw)
  To: agraf; +Cc: qemu-devel, Christian Borntraeger, peter.maydell

commit 17df768c1e4580f03301d18ea938d3557d441911
    load_image_targphys() should enforce the max size

caused some problems with external kernel and specific ram sizes on s390:

We load the external kernel with

[...]
            kernel_size = load_image_targphys(kernel_filename, 0, ram_size);
[...]

Since load_image_targphys is declared as taking an int for max_sz, this will
fail for ram sizes > INT_MAX.
Lets change the max_sz parameter to a uint64_t.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 hw/loader.c |    2 +-
 hw/loader.h |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/loader.c b/hw/loader.c
index 415cdce..7d64113 100644
--- a/hw/loader.c
+++ b/hw/loader.c
@@ -103,7 +103,7 @@ ssize_t read_targphys(const char *name,
 
 /* return the size or -1 if error */
 int load_image_targphys(const char *filename,
-			target_phys_addr_t addr, int max_sz)
+                        target_phys_addr_t addr, uint64_t max_sz)
 {
     int size;
 
diff --git a/hw/loader.h b/hw/loader.h
index fbcaba9..5cfa6df 100644
--- a/hw/loader.h
+++ b/hw/loader.h
@@ -4,7 +4,7 @@
 /* loader.c */
 int get_image_size(const char *filename);
 int load_image(const char *filename, uint8_t *addr); /* deprecated */
-int load_image_targphys(const char *filename, target_phys_addr_t, int max_sz);
+int load_image_targphys(const char *filename, target_phys_addr_t, uint64_t);
 int load_elf(const char *filename, uint64_t (*translate_fn)(void *, uint64_t),
              void *translate_opaque, uint64_t *pentry, uint64_t *lowaddr,
              uint64_t *highaddr, int big_endian, int elf_machine,
-- 
1.7.9.6

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH] Fix size checking in load_image_targphys to accept max_size > INT_MAX
  2012-05-03 14:27   ` [Qemu-devel] [PATCH] Fix size checking in load_image_targphys to accept max_size > INT_MAX Christian Borntraeger
@ 2012-05-03 14:33     ` Peter Maydell
  2012-05-04 14:05       ` Christian Borntraeger
                         ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Peter Maydell @ 2012-05-03 14:33 UTC (permalink / raw)
  To: Christian Borntraeger; +Cc: Anthony Liguori, agraf, QEMU Developers

On 3 May 2012 15:27, Christian Borntraeger <borntraeger@de.ibm.com> wrote:
> commit 17df768c1e4580f03301d18ea938d3557d441911
>    load_image_targphys() should enforce the max size
>
> caused some problems with external kernel and specific ram sizes on s390:
>
> We load the external kernel with
>
> [...]
>            kernel_size = load_image_targphys(kernel_filename, 0, ram_size);
> [...]
>
> Since load_image_targphys is declared as taking an int for max_sz, this will
> fail for ram sizes > INT_MAX.
> Lets change the max_sz parameter to a uint64_t.
>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>

A patch equivalent to this has already been submitted:
  http://patchwork.ozlabs.org/patch/146165/
We should be applying that one, it has already been reviewed.

Anthony?

-- PMM

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH] Fix size checking in load_image_targphys to accept max_size > INT_MAX
  2012-05-03 14:33     ` Peter Maydell
@ 2012-05-04 14:05       ` Christian Borntraeger
  2012-05-09 10:42       ` Christian Borntraeger
  2012-05-16 10:29       ` Christian Borntraeger
  2 siblings, 0 replies; 9+ messages in thread
From: Christian Borntraeger @ 2012-05-04 14:05 UTC (permalink / raw)
  To: Peter Maydell; +Cc: Anthony Liguori, agraf, QEMU Developers

>> Since load_image_targphys is declared as taking an int for max_sz, this will
>> fail for ram sizes > INT_MAX.
>> Lets change the max_sz parameter to a uint64_t.
>>
>> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> 
> A patch equivalent to this has already been submitted:
>   http://patchwork.ozlabs.org/patch/146165/
> We should be applying that one, it has already been reviewed.

Right.

> 
> Anthony?

AFAIK Anthony is on holiday. It would be good, if we could have that before 1.1, so shall
we wait or are there other maintainers willing to accept that patch?

Christian

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH] Fix size checking in load_image_targphys to accept max_size > INT_MAX
  2012-05-03 14:33     ` Peter Maydell
  2012-05-04 14:05       ` Christian Borntraeger
@ 2012-05-09 10:42       ` Christian Borntraeger
  2012-05-16 10:29       ` Christian Borntraeger
  2 siblings, 0 replies; 9+ messages in thread
From: Christian Borntraeger @ 2012-05-09 10:42 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: QEMU Developers, Peter Maydell, agraf

On 03/05/12 16:33, Peter Maydell wrote:
>> Since load_image_targphys is declared as taking an int for max_sz, this will
>> fail for ram sizes > INT_MAX.
>> Lets change the max_sz parameter to a uint64_t.
>>
>> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> 
> A patch equivalent to this has already been submitted:
>   http://patchwork.ozlabs.org/patch/146165/
> We should be applying that one, it has already been reviewed.
> 
> Anthony?

Ping?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH] Fix size checking in load_image_targphys to accept max_size > INT_MAX
  2012-05-03 14:33     ` Peter Maydell
  2012-05-04 14:05       ` Christian Borntraeger
  2012-05-09 10:42       ` Christian Borntraeger
@ 2012-05-16 10:29       ` Christian Borntraeger
  2012-05-18  0:18         ` Alexander Graf
  2 siblings, 1 reply; 9+ messages in thread
From: Christian Borntraeger @ 2012-05-16 10:29 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: QEMU Developers, Peter Maydell, agraf

On 03/05/12 16:33, Peter Maydell wrote:
> On 3 May 2012 15:27, Christian Borntraeger <borntraeger@de.ibm.com> wrote:
>> commit 17df768c1e4580f03301d18ea938d3557d441911
>>    load_image_targphys() should enforce the max size
>>
>> caused some problems with external kernel and specific ram sizes on s390:
>>
>> We load the external kernel with
>>
>> [...]
>>            kernel_size = load_image_targphys(kernel_filename, 0, ram_size);
>> [...]
>>
>> Since load_image_targphys is declared as taking an int for max_sz, this will
>> fail for ram sizes > INT_MAX.
>> Lets change the max_sz parameter to a uint64_t.
>>
>> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> 
> A patch equivalent to this has already been submitted:
>   http://patchwork.ozlabs.org/patch/146165/
> We should be applying that one, it has already been reviewed.
> 
> Anthony?

Anthony,

can you apply the patchwork patch for 1.1?

Christian

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH] Fix size checking in load_image_targphys to accept max_size > INT_MAX
  2012-05-16 10:29       ` Christian Borntraeger
@ 2012-05-18  0:18         ` Alexander Graf
  2012-05-18  0:26           ` Anthony Liguori
  0 siblings, 1 reply; 9+ messages in thread
From: Alexander Graf @ 2012-05-18  0:18 UTC (permalink / raw)
  To: Christian Borntraeger; +Cc: Peter Maydell, Anthony Liguori, QEMU Developers


On 16.05.2012, at 12:29, Christian Borntraeger wrote:

> On 03/05/12 16:33, Peter Maydell wrote:
>> On 3 May 2012 15:27, Christian Borntraeger <borntraeger@de.ibm.com> wrote:
>>> commit 17df768c1e4580f03301d18ea938d3557d441911
>>>  load_image_targphys() should enforce the max size
>>> 
>>> caused some problems with external kernel and specific ram sizes on s390:
>>> 
>>> We load the external kernel with
>>> 
>>> [...]
>>>          kernel_size = load_image_targphys(kernel_filename, 0, ram_size);
>>> [...]
>>> 
>>> Since load_image_targphys is declared as taking an int for max_sz, this will
>>> fail for ram sizes > INT_MAX.
>>> Lets change the max_sz parameter to a uint64_t.
>>> 
>>> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
>> 
>> A patch equivalent to this has already been submitted:
>> http://patchwork.ozlabs.org/patch/146165/
>> We should be applying that one, it has already been reviewed.
>> 
>> Anthony?
> 
> Anthony,
> 
> can you apply the patchwork patch for 1.1?

Ping? Still missing in rc2.


Alex

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH] Fix size checking in load_image_targphys to accept max_size > INT_MAX
  2012-05-18  0:18         ` Alexander Graf
@ 2012-05-18  0:26           ` Anthony Liguori
  0 siblings, 0 replies; 9+ messages in thread
From: Anthony Liguori @ 2012-05-18  0:26 UTC (permalink / raw)
  To: Alexander Graf; +Cc: Christian Borntraeger, QEMU Developers, Peter Maydell

On 05/17/2012 07:18 PM, Alexander Graf wrote:
>
> On 16.05.2012, at 12:29, Christian Borntraeger wrote:
>
>> On 03/05/12 16:33, Peter Maydell wrote:
>>> On 3 May 2012 15:27, Christian Borntraeger<borntraeger@de.ibm.com>  wrote:
>>>> commit 17df768c1e4580f03301d18ea938d3557d441911
>>>>   load_image_targphys() should enforce the max size
>>>>
>>>> caused some problems with external kernel and specific ram sizes on s390:
>>>>
>>>> We load the external kernel with
>>>>
>>>> [...]
>>>>           kernel_size = load_image_targphys(kernel_filename, 0, ram_size);
>>>> [...]
>>>>
>>>> Since load_image_targphys is declared as taking an int for max_sz, this will
>>>> fail for ram sizes>  INT_MAX.
>>>> Lets change the max_sz parameter to a uint64_t.
>>>>
>>>> Signed-off-by: Christian Borntraeger<borntraeger@de.ibm.com>
>>>
>>> A patch equivalent to this has already been submitted:
>>> http://patchwork.ozlabs.org/patch/146165/
>>> We should be applying that one, it has already been reviewed.
>>>
>>> Anthony?
>>
>> Anthony,
>>
>> can you apply the patchwork patch for 1.1?
>
> Ping? Still missing in rc2.

Ack.

Regards,

Anthony Liguori

>
>
> Alex
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-05-18  0:27 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-03 13:36 [Qemu-devel] S390: file size checking in load_image_targphys and certain ram sizes Christian Borntraeger
2012-05-03 13:51 ` Alexander Graf
2012-05-03 14:27   ` [Qemu-devel] [PATCH] Fix size checking in load_image_targphys to accept max_size > INT_MAX Christian Borntraeger
2012-05-03 14:33     ` Peter Maydell
2012-05-04 14:05       ` Christian Borntraeger
2012-05-09 10:42       ` Christian Borntraeger
2012-05-16 10:29       ` Christian Borntraeger
2012-05-18  0:18         ` Alexander Graf
2012-05-18  0:26           ` Anthony Liguori

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).