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

drm/etnaviv: add performance monitor request validation

Check if the selected domain and signal combination exists.

Changes from v4 to v5
- add exec_state parameter

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>

authored by

Christian Gmeiner and committed by
Lucas Stach
46df52cd 4fc3e66a

+20
+17
drivers/gpu/drm/etnaviv/etnaviv_perfmon.c
··· 111 111 112 112 return 0; 113 113 } 114 + 115 + int etnaviv_pm_req_validate(const struct drm_etnaviv_gem_submit_pmr *r, 116 + u32 exec_state) 117 + { 118 + const struct etnaviv_pm_domain_meta *meta = &doms_meta[exec_state]; 119 + const struct etnaviv_pm_domain *dom; 120 + 121 + if (r->domain >= meta->nr_domains) 122 + return -EINVAL; 123 + 124 + dom = meta->domains + r->domain; 125 + 126 + if (r->signal > dom->nr_signals) 127 + return -EINVAL; 128 + 129 + return 0; 130 + }
+3
drivers/gpu/drm/etnaviv/etnaviv_perfmon.h
··· 40 40 int etnaviv_pm_query_sig(struct etnaviv_gpu *gpu, 41 41 struct drm_etnaviv_pm_signal *signal); 42 42 43 + int etnaviv_pm_req_validate(const struct drm_etnaviv_gem_submit_pmr *r, 44 + u32 exec_state); 45 + 43 46 #endif /* __ETNAVIV_PERFMON_H__ */