Message ID | 20170110144031.7609-1-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On ti, 2017-01-10 at 14:40 +0000, Chris Wilson wrote: > drivers/gpu/drm/selftests/test-drm_mm.c:1277 evict_everything() > warn: calling list_del() inside list_for_each > > The list_del() inside the error handling in the eviction loop is > overkill. We have to undo the eviction scan to return the drm_mm back to > a recoverable state, so have to iterate over the full list, but we only > want to report the error once and once we have an error we can return > early. > > Reported-by: Dan Carpenter <dan.carpenter@oracle.com> > Fixes: 560b32842912 ("drm: kselftest for drm_mm and eviction") > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Ah, as mentioned previously, we soon need tests for the selftests :) Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Regards, Joonas
On Wed, Jan 11, 2017 at 08:54:35AM +0200, Joonas Lahtinen wrote: > On ti, 2017-01-10 at 14:40 +0000, Chris Wilson wrote: > > drivers/gpu/drm/selftests/test-drm_mm.c:1277 evict_everything() > > warn: calling list_del() inside list_for_each > > > > The list_del() inside the error handling in the eviction loop is > > overkill. We have to undo the eviction scan to return the drm_mm back to > > a recoverable state, so have to iterate over the full list, but we only > > want to report the error once and once we have an error we can return > > early. > > > > Reported-by: Dan Carpenter <dan.carpenter@oracle.com> > > Fixes: 560b32842912 ("drm: kselftest for drm_mm and eviction") > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > Ah, as mentioned previously, we soon need tests for the selftests :) > > Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Applied, thanks. -Daniel
diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c b/drivers/gpu/drm/selftests/test-drm_mm.c index ab091042f317..1e71bc182ca9 100644 --- a/drivers/gpu/drm/selftests/test-drm_mm.c +++ b/drivers/gpu/drm/selftests/test-drm_mm.c @@ -1272,13 +1272,19 @@ static bool evict_everything(struct drm_mm *mm, if (drm_mm_scan_add_block(&scan, &e->node)) break; } + + err = 0; list_for_each_entry(e, &evict_list, link) { if (!drm_mm_scan_remove_block(&scan, &e->node)) { - pr_err("Node %lld not marked for eviction!\n", - e->node.start); - list_del(&e->link); + if (!err) { + pr_err("Node %lld not marked for eviction!\n", + e->node.start); + err = -EINVAL; + } } } + if (err) + return false; list_for_each_entry(e, &evict_list, link) drm_mm_remove_node(&e->node);
drivers/gpu/drm/selftests/test-drm_mm.c:1277 evict_everything() warn: calling list_del() inside list_for_each The list_del() inside the error handling in the eviction loop is overkill. We have to undo the eviction scan to return the drm_mm back to a recoverable state, so have to iterate over the full list, but we only want to report the error once and once we have an error we can return early. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Fixes: 560b32842912 ("drm: kselftest for drm_mm and eviction") Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/selftests/test-drm_mm.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)