mirror of
git://nv-tegra.nvidia.com/linux-hwpm.git
synced 2025-12-25 02:34:23 +03:00
tegra: hwpm: fix bugs and rearrange functions
Fix bugs for accessing uninitialized mem_mgmt and alist_map structures. - Not initializing memory management functionality in HWPM is a valid situation. Currently, tegra_hwpm_clear_mem_pipeline dereferences the mem_mgmt pointer without validation, which can lead to failures. Check if mem_mgmt struct pointer is valid before dereferencing. - Alist_map structure is only required if user requests allowlist size or list of allowlist registers. Currently, tegra_hwpm_sw_setup dereferences alist_map pointer to set full_alist_size to 0. Add alist_map allocation function and set full_alist_size to 0. - Add PMA and CMD_ROUTER as valid cases for tegra_hwpm_translate_soc_hwpm_resource() translation. - Move logic to record IP function pointers to separate function. This way changes to IP ops registration will be in single location. Jira THWPM-41 Change-Id: I2c221bb13b6875b76a6fabee4c224d77ac72a6fc Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2770418 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: Vasuki Shankar <vasukis@nvidia.com> Reviewed-by: Seema Khowala <seemaj@nvidia.com> GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
10cd01aa1a
commit
4cacfb709c
@@ -186,12 +186,20 @@ static int tegra_hwpm_query_allowlist_ioctl(struct tegra_soc_hwpm *hwpm,
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
if (hwpm->alist_map == NULL) {
|
||||
ret = tegra_hwpm_alloc_alist_map(hwpm);
|
||||
if (ret != 0) {
|
||||
tegra_hwpm_err(hwpm,
|
||||
"Couldn't allocate allowlist map structure");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
if (query_allowlist->allowlist == NULL) {
|
||||
/* Userspace is querying allowlist size only */
|
||||
ret = tegra_hwpm_get_allowlist_size(hwpm);
|
||||
if (ret != 0) {
|
||||
tegra_hwpm_err(hwpm,
|
||||
"failed to get alist_size");
|
||||
tegra_hwpm_err(hwpm, "failed to get alist_size");
|
||||
return ret;
|
||||
}
|
||||
query_allowlist->allowlist_size =
|
||||
|
||||
Reference in New Issue
Block a user