2018-03-18 21:53:02

by Arushi Singhal

[permalink] [raw]
Subject: [PATCH] gpu: drm: Use list_first_entry instead of list_entry

This patch replaces list_entry with list_first_entry as it makes the
code more clear.
Done using coccinelle:

@@
expression e;
@@
(
- list_entry(e->next,
+ list_first_entry(e,
...)
|
- list_entry(e->prev,
+ list_last_entry(e,
...)
)

Signed-off-by: Arushi Singhal <[email protected]>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | 4 ++--
drivers/gpu/drm/omapdrm/dss/display.c | 4 ++--
drivers/gpu/drm/radeon/radeon_sa.c | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
index 3144400..646f593 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
@@ -158,7 +158,7 @@ static void amdgpu_sa_bo_try_free(struct amdgpu_sa_manager *sa_manager)
if (sa_manager->hole->next == &sa_manager->olist)
return;

- sa_bo = list_entry(sa_manager->hole->next, struct amdgpu_sa_bo, olist);
+ sa_bo = list_first_entry(sa_manager->hole, struct amdgpu_sa_bo, olist);
list_for_each_entry_safe_from(sa_bo, tmp, &sa_manager->olist, olist) {
if (sa_bo->fence == NULL ||
!dma_fence_is_signaled(sa_bo->fence)) {
@@ -183,7 +183,7 @@ static inline unsigned amdgpu_sa_bo_hole_eoffset(struct amdgpu_sa_manager *sa_ma
struct list_head *hole = sa_manager->hole;

if (hole->next != &sa_manager->olist) {
- return list_entry(hole->next, struct amdgpu_sa_bo, olist)->soffset;
+ return list_first_entry(hole, struct amdgpu_sa_bo, olist)->soffset;
}
return sa_manager->size;
}
diff --git a/drivers/gpu/drm/omapdrm/dss/display.c b/drivers/gpu/drm/omapdrm/dss/display.c
index 0c9480b..fb9ecae 100644
--- a/drivers/gpu/drm/omapdrm/dss/display.c
+++ b/drivers/gpu/drm/omapdrm/dss/display.c
@@ -158,8 +158,8 @@ struct omap_dss_device *omap_dss_get_next_device(struct omap_dss_device *from)
goto out;
}

- dssdev = list_entry(l->next, struct omap_dss_device,
- panel_list);
+ dssdev = list_first_entry(l, struct omap_dss_device,
+ panel_list);
omap_dss_get_device(dssdev);
goto out;
}
diff --git a/drivers/gpu/drm/radeon/radeon_sa.c b/drivers/gpu/drm/radeon/radeon_sa.c
index 197b157..66c0482 100644
--- a/drivers/gpu/drm/radeon/radeon_sa.c
+++ b/drivers/gpu/drm/radeon/radeon_sa.c
@@ -158,7 +158,7 @@ static void radeon_sa_bo_try_free(struct radeon_sa_manager *sa_manager)
if (sa_manager->hole->next == &sa_manager->olist)
return;

- sa_bo = list_entry(sa_manager->hole->next, struct radeon_sa_bo, olist);
+ sa_bo = list_first_entry(sa_manager->hole, struct radeon_sa_bo, olist);
list_for_each_entry_safe_from(sa_bo, tmp, &sa_manager->olist, olist) {
if (sa_bo->fence == NULL || !radeon_fence_signaled(sa_bo->fence)) {
return;
@@ -182,7 +182,7 @@ static inline unsigned radeon_sa_bo_hole_eoffset(struct radeon_sa_manager *sa_ma
struct list_head *hole = sa_manager->hole;

if (hole->next != &sa_manager->olist) {
- return list_entry(hole->next, struct radeon_sa_bo, olist)->soffset;
+ return list_first_entry(hole, struct radeon_sa_bo, olist)->soffset;
}
return sa_manager->size;
}
--
2.7.4



2018-03-19 10:04:00

by Christian König

[permalink] [raw]
Subject: Re: [PATCH] gpu: drm: Use list_first_entry instead of list_entry

Mhm, actually that patch isn't correct. What we grab get here is the
next entry, not the first one.

We don't have an alias list_next_entry for list_first_entry?

Regards,
Christian.

Am 18.03.2018 um 22:51 schrieb Arushi Singhal:
> This patch replaces list_entry with list_first_entry as it makes the
> code more clear.
> Done using coccinelle:
>
> @@
> expression e;
> @@
> (
> - list_entry(e->next,
> + list_first_entry(e,
> ...)
> |
> - list_entry(e->prev,
> + list_last_entry(e,
> ...)
> )
>
> Signed-off-by: Arushi Singhal <[email protected]>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | 4 ++--
> drivers/gpu/drm/omapdrm/dss/display.c | 4 ++--
> drivers/gpu/drm/radeon/radeon_sa.c | 4 ++--
> 3 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
> index 3144400..646f593 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
> @@ -158,7 +158,7 @@ static void amdgpu_sa_bo_try_free(struct amdgpu_sa_manager *sa_manager)
> if (sa_manager->hole->next == &sa_manager->olist)
> return;
>
> - sa_bo = list_entry(sa_manager->hole->next, struct amdgpu_sa_bo, olist);
> + sa_bo = list_first_entry(sa_manager->hole, struct amdgpu_sa_bo, olist);
> list_for_each_entry_safe_from(sa_bo, tmp, &sa_manager->olist, olist) {
> if (sa_bo->fence == NULL ||
> !dma_fence_is_signaled(sa_bo->fence)) {
> @@ -183,7 +183,7 @@ static inline unsigned amdgpu_sa_bo_hole_eoffset(struct amdgpu_sa_manager *sa_ma
> struct list_head *hole = sa_manager->hole;
>
> if (hole->next != &sa_manager->olist) {
> - return list_entry(hole->next, struct amdgpu_sa_bo, olist)->soffset;
> + return list_first_entry(hole, struct amdgpu_sa_bo, olist)->soffset;
> }
> return sa_manager->size;
> }
> diff --git a/drivers/gpu/drm/omapdrm/dss/display.c b/drivers/gpu/drm/omapdrm/dss/display.c
> index 0c9480b..fb9ecae 100644
> --- a/drivers/gpu/drm/omapdrm/dss/display.c
> +++ b/drivers/gpu/drm/omapdrm/dss/display.c
> @@ -158,8 +158,8 @@ struct omap_dss_device *omap_dss_get_next_device(struct omap_dss_device *from)
> goto out;
> }
>
> - dssdev = list_entry(l->next, struct omap_dss_device,
> - panel_list);
> + dssdev = list_first_entry(l, struct omap_dss_device,
> + panel_list);
> omap_dss_get_device(dssdev);
> goto out;
> }
> diff --git a/drivers/gpu/drm/radeon/radeon_sa.c b/drivers/gpu/drm/radeon/radeon_sa.c
> index 197b157..66c0482 100644
> --- a/drivers/gpu/drm/radeon/radeon_sa.c
> +++ b/drivers/gpu/drm/radeon/radeon_sa.c
> @@ -158,7 +158,7 @@ static void radeon_sa_bo_try_free(struct radeon_sa_manager *sa_manager)
> if (sa_manager->hole->next == &sa_manager->olist)
> return;
>
> - sa_bo = list_entry(sa_manager->hole->next, struct radeon_sa_bo, olist);
> + sa_bo = list_first_entry(sa_manager->hole, struct radeon_sa_bo, olist);
> list_for_each_entry_safe_from(sa_bo, tmp, &sa_manager->olist, olist) {
> if (sa_bo->fence == NULL || !radeon_fence_signaled(sa_bo->fence)) {
> return;
> @@ -182,7 +182,7 @@ static inline unsigned radeon_sa_bo_hole_eoffset(struct radeon_sa_manager *sa_ma
> struct list_head *hole = sa_manager->hole;
>
> if (hole->next != &sa_manager->olist) {
> - return list_entry(hole->next, struct radeon_sa_bo, olist)->soffset;
> + return list_first_entry(hole, struct radeon_sa_bo, olist)->soffset;
> }
> return sa_manager->size;
> }


2018-03-19 11:08:16

by Julia Lawall

[permalink] [raw]
Subject: Re: [Outreachy kernel] Re: [PATCH] gpu: drm: Use list_first_entry instead of list_entry



On Mon, 19 Mar 2018, Christian König wrote:

> Mhm, actually that patch isn't correct. What we grab get here is the next
> entry, not the first one.
>
> We don't have an alias list_next_entry for list_first_entry?

As compared to the semantic patch I proposed earlier today, it would seem
that list_first_entry is useful when the types are different? One would
have to check the result of course, but a list eleemnt with the same type
as the structure that contains the list might be unlikely?

julia

>
> Regards,
> Christian.
>
> Am 18.03.2018 um 22:51 schrieb Arushi Singhal:
> > This patch replaces list_entry with list_first_entry as it makes the
> > code more clear.
> > Done using coccinelle:
> >
> > @@
> > expression e;
> > @@
> > (
> > - list_entry(e->next,
> > + list_first_entry(e,
> > ...)
> > |
> > - list_entry(e->prev,
> > + list_last_entry(e,
> > ...)
> > )
> >
> > Signed-off-by: Arushi Singhal <[email protected]>
> > ---
> > drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | 4 ++--
> > drivers/gpu/drm/omapdrm/dss/display.c | 4 ++--
> > drivers/gpu/drm/radeon/radeon_sa.c | 4 ++--
> > 3 files changed, 6 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
> > b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
> > index 3144400..646f593 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
> > @@ -158,7 +158,7 @@ static void amdgpu_sa_bo_try_free(struct
> > amdgpu_sa_manager *sa_manager)
> > if (sa_manager->hole->next == &sa_manager->olist)
> > return;
> > - sa_bo = list_entry(sa_manager->hole->next, struct amdgpu_sa_bo,
> > olist);
> > + sa_bo = list_first_entry(sa_manager->hole, struct amdgpu_sa_bo,
> > olist);
> > list_for_each_entry_safe_from(sa_bo, tmp, &sa_manager->olist, olist) {
> > if (sa_bo->fence == NULL ||
> > !dma_fence_is_signaled(sa_bo->fence)) {
> > @@ -183,7 +183,7 @@ static inline unsigned amdgpu_sa_bo_hole_eoffset(struct
> > amdgpu_sa_manager *sa_ma
> > struct list_head *hole = sa_manager->hole;
> > if (hole->next != &sa_manager->olist) {
> > - return list_entry(hole->next, struct amdgpu_sa_bo,
> > olist)->soffset;
> > + return list_first_entry(hole, struct amdgpu_sa_bo,
> > olist)->soffset;
> > }
> > return sa_manager->size;
> > }
> > diff --git a/drivers/gpu/drm/omapdrm/dss/display.c
> > b/drivers/gpu/drm/omapdrm/dss/display.c
> > index 0c9480b..fb9ecae 100644
> > --- a/drivers/gpu/drm/omapdrm/dss/display.c
> > +++ b/drivers/gpu/drm/omapdrm/dss/display.c
> > @@ -158,8 +158,8 @@ struct omap_dss_device *omap_dss_get_next_device(struct
> > omap_dss_device *from)
> > goto out;
> > }
> > - dssdev = list_entry(l->next, struct omap_dss_device,
> > - panel_list);
> > + dssdev = list_first_entry(l, struct omap_dss_device,
> > + panel_list);
> > omap_dss_get_device(dssdev);
> > goto out;
> > }
> > diff --git a/drivers/gpu/drm/radeon/radeon_sa.c
> > b/drivers/gpu/drm/radeon/radeon_sa.c
> > index 197b157..66c0482 100644
> > --- a/drivers/gpu/drm/radeon/radeon_sa.c
> > +++ b/drivers/gpu/drm/radeon/radeon_sa.c
> > @@ -158,7 +158,7 @@ static void radeon_sa_bo_try_free(struct
> > radeon_sa_manager *sa_manager)
> > if (sa_manager->hole->next == &sa_manager->olist)
> > return;
> > - sa_bo = list_entry(sa_manager->hole->next, struct radeon_sa_bo,
> > olist);
> > + sa_bo = list_first_entry(sa_manager->hole, struct radeon_sa_bo,
> > olist);
> > list_for_each_entry_safe_from(sa_bo, tmp, &sa_manager->olist, olist) {
> > if (sa_bo->fence == NULL ||
> > !radeon_fence_signaled(sa_bo->fence)) {
> > return;
> > @@ -182,7 +182,7 @@ static inline unsigned radeon_sa_bo_hole_eoffset(struct
> > radeon_sa_manager *sa_ma
> > struct list_head *hole = sa_manager->hole;
> > if (hole->next != &sa_manager->olist) {
> > - return list_entry(hole->next, struct radeon_sa_bo,
> > olist)->soffset;
> > + return list_first_entry(hole, struct radeon_sa_bo,
> > olist)->soffset;
> > }
> > return sa_manager->size;
> > }
>
> --
> You received this message because you are subscribed to the Google Groups
> "outreachy-kernel" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/outreachy-kernel/8b1e22f8-7a05-b66b-8825-7d4d97e46dac%40amd.com.
> For more options, visit https://groups.google.com/d/optout.
>