Re: [PATCH v2] drm/i915/gem: Use list_entry to access list members

From: Zhenyu Wang
Date: Tue Jun 01 2021 - 04:47:54 EST


On 2021.05.23 10:23:04 -0700, Guenter Roeck wrote:
> Use list_entry() instead of container_of() to access list members.
> Also drop unnecessary and misleading NULL checks on the result of
> list_entry().
>
> Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx>
> ---
> v2: Checkpatch fixes:
> - Fix alignment
> - Replace comparison against NULL with !
>
> drivers/gpu/drm/i915/gvt/dmabuf.c | 18 +++++-------------
> 1 file changed, 5 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gvt/dmabuf.c b/drivers/gpu/drm/i915/gvt/dmabuf.c
> index d4f883f35b95..e3f488681484 100644
> --- a/drivers/gpu/drm/i915/gvt/dmabuf.c
> +++ b/drivers/gpu/drm/i915/gvt/dmabuf.c
> @@ -148,8 +148,7 @@ static void dmabuf_gem_object_free(struct kref *kref)
>
> if (vgpu && vgpu->active && !list_empty(&vgpu->dmabuf_obj_list_head)) {
> list_for_each(pos, &vgpu->dmabuf_obj_list_head) {
> - dmabuf_obj = container_of(pos,
> - struct intel_vgpu_dmabuf_obj, list);
> + dmabuf_obj = list_entry(pos, struct intel_vgpu_dmabuf_obj, list);
> if (dmabuf_obj == obj) {
> list_del(pos);
> intel_gvt_hypervisor_put_vfio_device(vgpu);
> @@ -357,10 +356,8 @@ pick_dmabuf_by_info(struct intel_vgpu *vgpu,
> struct intel_vgpu_dmabuf_obj *ret = NULL;
>
> list_for_each(pos, &vgpu->dmabuf_obj_list_head) {
> - dmabuf_obj = container_of(pos, struct intel_vgpu_dmabuf_obj,
> - list);
> - if ((dmabuf_obj == NULL) ||
> - (dmabuf_obj->info == NULL))
> + dmabuf_obj = list_entry(pos, struct intel_vgpu_dmabuf_obj, list);
> + if (!dmabuf_obj->info)
> continue;
>
> fb_info = (struct intel_vgpu_fb_info *)dmabuf_obj->info;
> @@ -387,11 +384,7 @@ pick_dmabuf_by_num(struct intel_vgpu *vgpu, u32 id)
> struct intel_vgpu_dmabuf_obj *ret = NULL;
>
> list_for_each(pos, &vgpu->dmabuf_obj_list_head) {
> - dmabuf_obj = container_of(pos, struct intel_vgpu_dmabuf_obj,
> - list);
> - if (!dmabuf_obj)
> - continue;
> -
> + dmabuf_obj = list_entry(pos, struct intel_vgpu_dmabuf_obj, list);
> if (dmabuf_obj->dmabuf_id == id) {
> ret = dmabuf_obj;
> break;
> @@ -600,8 +593,7 @@ void intel_vgpu_dmabuf_cleanup(struct intel_vgpu *vgpu)
>
> mutex_lock(&vgpu->dmabuf_lock);
> list_for_each_safe(pos, n, &vgpu->dmabuf_obj_list_head) {
> - dmabuf_obj = container_of(pos, struct intel_vgpu_dmabuf_obj,
> - list);
> + dmabuf_obj = list_entry(pos, struct intel_vgpu_dmabuf_obj, list);
> dmabuf_obj->vgpu = NULL;
>
> idr_remove(&vgpu->object_idr, dmabuf_obj->dmabuf_id);
> --

Sorry for late reply! Looks good to me.

Reviewed-by: Zhenyu Wang <zhenyuw@xxxxxxxxxxxxxxx>

Attachment: signature.asc
Description: PGP signature