Message ID | 1432721046-4418-11-git-send-email-fziglio@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 27 May 2015 at 20:04, Frediano Ziglio <fziglio@redhat.com> wrote: > In qxlhw_handle_to_bo we incremented counters twice, one time for release object > and one for reloc_info. > In the main function however reloc_info references was drop much earlier than > release so keeping the pointer only on release is safe and make cleaning > process easier. Seems fine, Reviewed-by: Dave Airlie <airlied@redhat.com> > > Signed-off-by: Frediano Ziglio <fziglio@redhat.com> > --- > qxl/qxl_ioctl.c | 13 +++---------- > 1 file changed, 3 insertions(+), 10 deletions(-) > > diff --git a/qxl/qxl_ioctl.c b/qxl/qxl_ioctl.c > index 85b3808..bb326ff 100644 > --- a/qxl/qxl_ioctl.c > +++ b/qxl/qxl_ioctl.c > @@ -122,10 +122,9 @@ static struct qxl_bo *qxlhw_handle_to_bo(struct qxl_device *qdev, > qobj = gem_to_qxl_bo(gobj); > > ret = qxl_release_list_add(release, qobj); > - if (ret) { > - drm_gem_object_unreference_unlocked(gobj); > + drm_gem_object_unreference_unlocked(gobj); > + if (ret) > return NULL; > - } > > return qobj; > } > @@ -145,7 +144,7 @@ static int qxl_process_single_command(struct qxl_device *qdev, > struct qxl_release *release; > struct qxl_bo *cmd_bo; > void *fb_cmd; > - int i, j, ret, num_relocs; > + int i, ret, num_relocs; > int unwritten; > > switch (cmd->type) { > @@ -269,12 +268,6 @@ static int qxl_process_single_command(struct qxl_device *qdev, > qxl_release_fence_buffer_objects(release); > > out_free_bos: > - for (j = 0; j < num_relocs; j++) { > - if (reloc_info[j].dst_bo != cmd_bo) > - drm_gem_object_unreference_unlocked(&reloc_info[j].dst_bo->gem_base); > - if (reloc_info[j].src_bo && reloc_info[j].src_bo != cmd_bo) > - drm_gem_object_unreference_unlocked(&reloc_info[j].src_bo->gem_base); > - } > out_free_release: > if (ret) > qxl_release_free(qdev, release); > -- > 2.1.0 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/spice-devel
diff --git a/qxl/qxl_ioctl.c b/qxl/qxl_ioctl.c index 85b3808..bb326ff 100644 --- a/qxl/qxl_ioctl.c +++ b/qxl/qxl_ioctl.c @@ -122,10 +122,9 @@ static struct qxl_bo *qxlhw_handle_to_bo(struct qxl_device *qdev, qobj = gem_to_qxl_bo(gobj); ret = qxl_release_list_add(release, qobj); - if (ret) { - drm_gem_object_unreference_unlocked(gobj); + drm_gem_object_unreference_unlocked(gobj); + if (ret) return NULL; - } return qobj; } @@ -145,7 +144,7 @@ static int qxl_process_single_command(struct qxl_device *qdev, struct qxl_release *release; struct qxl_bo *cmd_bo; void *fb_cmd; - int i, j, ret, num_relocs; + int i, ret, num_relocs; int unwritten; switch (cmd->type) { @@ -269,12 +268,6 @@ static int qxl_process_single_command(struct qxl_device *qdev, qxl_release_fence_buffer_objects(release); out_free_bos: - for (j = 0; j < num_relocs; j++) { - if (reloc_info[j].dst_bo != cmd_bo) - drm_gem_object_unreference_unlocked(&reloc_info[j].dst_bo->gem_base); - if (reloc_info[j].src_bo && reloc_info[j].src_bo != cmd_bo) - drm_gem_object_unreference_unlocked(&reloc_info[j].src_bo->gem_base); - } out_free_release: if (ret) qxl_release_free(qdev, release);
In qxlhw_handle_to_bo we incremented counters twice, one time for release object and one for reloc_info. In the main function however reloc_info references was drop much earlier than release so keeping the pointer only on release is safe and make cleaning process easier. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> --- qxl/qxl_ioctl.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-)