Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/vc4: replace idr_init() by idr_init_base()

idr_init() uses base 0 which is an invalid identifier for this driver.
The idr_alloc for this driver uses VC4_PERFMONID_MIN as start value for
ID range and it is #defined to 1. The new function idr_init_base allows
IDR to set the ID lookup from base 1. This avoids all lookups that
otherwise starts from 0 since 0 is always unused / available.

References: commit 6ce711f27500 ("idr: Make 1-based IDRs more efficient")

Signed-off-by: Deepak R Varma <mh12gx2825@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20201105202135.GA145111@localhost

authored by

Deepak R Varma and committed by
Maxime Ripard
1528bfcf 5088d657

+1 -1
+1 -1
drivers/gpu/drm/vc4/vc4_perfmon.c
··· 77 77 void vc4_perfmon_open_file(struct vc4_file *vc4file) 78 78 { 79 79 mutex_init(&vc4file->perfmon.lock); 80 - idr_init(&vc4file->perfmon.idr); 80 + idr_init_base(&vc4file->perfmon.idr, VC4_PERFMONID_MIN); 81 81 } 82 82 83 83 static int vc4_perfmon_idr_del(int id, void *elem, void *data)