mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 02:22:34 +03:00
gpu: nvgpu: priv_ring: fix CERT-C violations
CERT-C Rule INT30-C Requires that unsigned integer operations do not wrap. Fix these violations by using the safe ops. JIRA NVGPU-3868 Change-Id: Ifc7396146d85b34d6bd04eb16675ab6234364b1b Signed-off-by: Philip Elcan <pelcan@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/2166258 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: svc-mobile-misra <svc-mobile-misra@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Nitin Kumbhar <nkumbhar@nvidia.com> Reviewed-by: Alex Waterman <alexw@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
faec0fde02
commit
a09142c231
@@ -29,6 +29,7 @@
|
||||
#include <nvgpu/utils.h>
|
||||
#include <nvgpu/gk20a.h>
|
||||
#include <nvgpu/nvgpu_err.h>
|
||||
#include <nvgpu/safe_ops.h>
|
||||
|
||||
#include <nvgpu/hw/gp10b/hw_pri_ringmaster_gp10b.h>
|
||||
#include <nvgpu/hw/gp10b/hw_pri_ringstation_sys_gp10b.h>
|
||||
@@ -167,19 +168,25 @@ void gp10b_priv_ring_isr(struct gk20a *g)
|
||||
if ((status1 & BIT32(gpc)) == 0U) {
|
||||
continue;
|
||||
}
|
||||
gpc_offset = gpc * gpc_stride;
|
||||
gpc_offset = nvgpu_safe_mult_u32(gpc, gpc_stride);
|
||||
error_info = nvgpu_readl(g,
|
||||
pri_ringstation_gpc_gpc0_priv_error_info_r() + gpc_offset);
|
||||
nvgpu_safe_add_u32(
|
||||
pri_ringstation_gpc_gpc0_priv_error_info_r(),
|
||||
gpc_offset));
|
||||
error_code = nvgpu_readl(g,
|
||||
pri_ringstation_gpc_gpc0_priv_error_code_r() + gpc_offset);
|
||||
nvgpu_safe_add_u32(
|
||||
pri_ringstation_gpc_gpc0_priv_error_code_r(),
|
||||
gpc_offset));
|
||||
nvgpu_err(g, "GPC%u write error. ADR 0x%08x "
|
||||
"WRDAT 0x%08x "
|
||||
"INFO 0x%08x (subid 0x%08x priv level %d), "
|
||||
"CODE 0x%08x", gpc,
|
||||
nvgpu_readl(g,
|
||||
pri_ringstation_gpc_gpc0_priv_error_adr_r() + gpc_offset),
|
||||
nvgpu_readl(g,
|
||||
pri_ringstation_gpc_gpc0_priv_error_wrdat_r() + gpc_offset),
|
||||
nvgpu_readl(g, nvgpu_safe_add_u32(
|
||||
pri_ringstation_gpc_gpc0_priv_error_adr_r(),
|
||||
gpc_offset)),
|
||||
nvgpu_readl(g, nvgpu_safe_add_u32(
|
||||
pri_ringstation_gpc_gpc0_priv_error_wrdat_r(),
|
||||
gpc_offset)),
|
||||
error_info,
|
||||
pri_ringstation_gpc_gpc0_priv_error_info_subid_v(error_info),
|
||||
pri_ringstation_gpc_gpc0_priv_error_info_priv_level_v(error_info),
|
||||
|
||||
Reference in New Issue
Block a user