[Qemu-devel] [PATCH v1] pc-dimm: fix error messages if no slots were defined

David Hildenbrand posted 1 patch 7 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180426103430.768-1-david@redhat.com
Test checkpatch passed
Test docker-build@min-glib passed
Test docker-mingw@fedora passed
Test s390x passed
There is a newer version of this series
hw/mem/pc-dimm.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
[Qemu-devel] [PATCH v1] pc-dimm: fix error messages if no slots were defined
Posted by David Hildenbrand 7 years, 6 months ago
If not slots were defined we try to allocate an empty bitmap, which
fails.

Signed-off-by: David Hildenbrand <david@redhat.com>
---

This fixes the queued patch "exec: Allow memory regions with size 0"

 hw/mem/pc-dimm.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
index 0119c68e01..f2c140947d 100644
--- a/hw/mem/pc-dimm.c
+++ b/hw/mem/pc-dimm.c
@@ -118,9 +118,15 @@ static int pc_dimm_slot2bitmap(Object *obj, void *opaque)
 
 int pc_dimm_get_free_slot(const int *hint, int max_slots, Error **errp)
 {
-    unsigned long *bitmap = bitmap_new(max_slots);
+    unsigned long *bitmap;
     int slot = 0;
 
+    if (max_slots <= 0) {
+        error_setg(errp, "no free slots available");
+        return slot;
+    }
+
+    bitmap = bitmap_new(max_slots);
     object_child_foreach(qdev_get_machine(), pc_dimm_slot2bitmap, bitmap);
 
     /* check if requested slot is not occupied */
-- 
2.14.3


Re: [Qemu-devel] [PATCH v1] pc-dimm: fix error messages if no slots were defined
Posted by Marcel Apfelbaum 7 years, 6 months ago
Hi David,

On 26/04/2018 13:34, David Hildenbrand wrote:
> If not slots were defined we try to allocate an empty bitmap, which

not -> no

> fails.
> 
> Signed-off-by: David Hildenbrand <david@redhat.com>
> ---
> 
> This fixes the queued patch "exec: Allow memory regions with size 0"
> 
>  hw/mem/pc-dimm.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
> index 0119c68e01..f2c140947d 100644
> --- a/hw/mem/pc-dimm.c
> +++ b/hw/mem/pc-dimm.c
> @@ -118,9 +118,15 @@ static int pc_dimm_slot2bitmap(Object *obj, void *opaque)
>  
>  int pc_dimm_get_free_slot(const int *hint, int max_slots, Error **errp)
>  {
> -    unsigned long *bitmap = bitmap_new(max_slots);
> +    unsigned long *bitmap;
>      int slot = 0;
>  
> +    if (max_slots <= 0) {
> +        error_setg(errp, "no free slots available");

Maybe a better error message would be "no slots were allocated"
since max_slots is 0.

Thanks,
Marcel

> +        return slot;
> +    }
> +
> +    bitmap = bitmap_new(max_slots);
>      object_child_foreach(qdev_get_machine(), pc_dimm_slot2bitmap, bitmap);
>  
>      /* check if requested slot is not occupied */
> 

Re: [Qemu-devel] [PATCH v1] pc-dimm: fix error messages if no slots were defined
Posted by David Hildenbrand 7 years, 6 months ago
On 26.04.2018 13:41, Marcel Apfelbaum wrote:
> Hi David,
> 
> On 26/04/2018 13:34, David Hildenbrand wrote:
>> If not slots were defined we try to allocate an empty bitmap, which
> 
> not -> no
> 
>> fails.
>>
>> Signed-off-by: David Hildenbrand <david@redhat.com>
>> ---
>>
>> This fixes the queued patch "exec: Allow memory regions with size 0"
>>
>>  hw/mem/pc-dimm.c | 8 +++++++-
>>  1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c
>> index 0119c68e01..f2c140947d 100644
>> --- a/hw/mem/pc-dimm.c
>> +++ b/hw/mem/pc-dimm.c
>> @@ -118,9 +118,15 @@ static int pc_dimm_slot2bitmap(Object *obj, void *opaque)
>>  
>>  int pc_dimm_get_free_slot(const int *hint, int max_slots, Error **errp)
>>  {
>> -    unsigned long *bitmap = bitmap_new(max_slots);
>> +    unsigned long *bitmap;
>>      int slot = 0;
>>  
>> +    if (max_slots <= 0) {
>> +        error_setg(errp, "no free slots available");
> 
> Maybe a better error message would be "no slots were allocated"
> since max_slots is 0.

I am using the same error message as if there are no more slots
available. If can change it to "no slots where allocated, please specify
the 'slots' option.

Using max_slots would be wrong.

Thanks!

> 
> Thanks,
> Marcel
> 
>> +        return slot;
>> +    }
>> +
>> +    bitmap = bitmap_new(max_slots);
>>      object_child_foreach(qdev_get_machine(), pc_dimm_slot2bitmap, bitmap);
>>  
>>      /* check if requested slot is not occupied */
>>


-- 

Thanks,

David / dhildenb