[Spice-devel] [PATCH spice-server 1/2] memslot: Return void* from memslot_get_virt
Christophe Fergeau
cfergeau at redhat.com
Tue Jun 26 13:01:31 UTC 2018
On Tue, Jun 19, 2018 at 11:05:24AM +0100, Frediano Ziglio wrote:
> The result of this function is always cast to a pointer, there
> is no reason to return an integer.
> This API looks copied from a kernel environment where virtual
> addresses can have different sizes compare to pointers.
Acked-by: Christophe Fergeau <cfergeau at redhat.com>
but why isn't this removing all the other (Foo*)memslots_get_virt()
casts from red-parse-qxl.c? I can send a followup patch.
Christophe
>
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
> server/memslot.c | 14 +++++++-------
> server/memslot.h | 2 +-
> server/red-parse-qxl.c | 4 ++--
> 3 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/server/memslot.c b/server/memslot.c
> index 7074b432..a87a717b 100644
> --- a/server/memslot.c
> +++ b/server/memslot.c
> @@ -89,8 +89,8 @@ unsigned long memslot_max_size_virt(RedMemSlotInfo *info,
> * return virtual address if successful, which may be 0.
> * returns 0 and sets error to 1 if an error condition occurs.
> */
> -unsigned long memslot_get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t add_size,
> - int group_id, int *error)
> +void* memslot_get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t add_size,
> + int group_id, int *error)
> {
> int slot_id;
> int generation;
> @@ -102,7 +102,7 @@ unsigned long memslot_get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t
> if (group_id > info->num_memslots_groups) {
> spice_critical("group_id too big");
> *error = 1;
> - return 0;
> + return NULL;
> }
>
> slot_id = memslot_get_id(info, addr);
> @@ -110,7 +110,7 @@ unsigned long memslot_get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t
> print_memslots(info);
> spice_critical("slot_id %d too big, addr=%" PRIx64, slot_id, addr);
> *error = 1;
> - return 0;
> + return NULL;
> }
>
> slot = &info->mem_slots[group_id][slot_id];
> @@ -121,7 +121,7 @@ unsigned long memslot_get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t
> spice_critical("address generation is not valid, group_id %d, slot_id %d, gen %d, slot_gen %d\n",
> group_id, slot_id, generation, slot->generation);
> *error = 1;
> - return 0;
> + return NULL;
> }
>
> h_virt = __get_clean_virt(info, addr);
> @@ -129,10 +129,10 @@ unsigned long memslot_get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t
>
> if (!memslot_validate_virt(info, h_virt, slot_id, add_size, group_id)) {
> *error = 1;
> - return 0;
> + return NULL;
> }
>
> - return h_virt;
> + return (void*)(uintptr_t)h_virt;
> }
>
> void memslot_info_init(RedMemSlotInfo *info,
> diff --git a/server/memslot.h b/server/memslot.h
> index 71f1210d..d8d67d55 100644
> --- a/server/memslot.h
> +++ b/server/memslot.h
> @@ -58,7 +58,7 @@ int memslot_validate_virt(RedMemSlotInfo *info, unsigned long virt, int slot_id,
> unsigned long memslot_max_size_virt(RedMemSlotInfo *info,
> unsigned long virt, int slot_id,
> uint32_t group_id);
> -unsigned long memslot_get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t add_size,
> +void *memslot_get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t add_size,
> int group_id, int *error);
>
> void memslot_info_init(RedMemSlotInfo *info,
> diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
> index 4a45c0f7..d28c935f 100644
> --- a/server/red-parse-qxl.c
> +++ b/server/red-parse-qxl.c
> @@ -371,7 +371,7 @@ static SpiceChunks *red_get_image_data_flat(RedMemSlotInfo *slots, int group_id,
> {
> SpiceChunks *data;
> int error;
> - unsigned long bitmap_virt;
> + void *bitmap_virt;
>
> bitmap_virt = memslot_get_virt(slots, addr, size, group_id, &error);
> if (error) {
> @@ -380,7 +380,7 @@ static SpiceChunks *red_get_image_data_flat(RedMemSlotInfo *slots, int group_id,
>
> data = spice_chunks_new(1);
> data->data_size = size;
> - data->chunk[0].data = (void*)bitmap_virt;
> + data->chunk[0].data = bitmap_virt;
> data->chunk[0].len = size;
> return data;
> }
> --
> 2.17.1
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20180626/9122e668/attachment-0001.sig>
More information about the Spice-devel
mailing list