Patchwork Fix size checking in load_image_targphys to accept max_size > INT_MAX

login
register
mail settings
Submitter Christian Borntraeger
Date May 3, 2012, 2:27 p.m.
Message ID <1336055277-53204-1-git-send-email-borntraeger@de.ibm.com>
Download mbox | patch
Permalink /patch/156705/
State New
Headers show

Comments

Christian Borntraeger - May 3, 2012, 2:27 p.m.
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(-)
Peter Maydell - May 3, 2012, 2:33 p.m.
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
Christian Borntraeger - May 4, 2012, 2:05 p.m.
>> 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
Christian Borntraeger - May 9, 2012, 10:42 a.m.
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?
Christian Borntraeger - May 16, 2012, 10:29 a.m.
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
Alexander Graf - May 18, 2012, 12:18 a.m.
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
Anthony Liguori - May 18, 2012, 12:26 a.m.
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
>

Patch

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,