diff --git a/drivers/gpu/nvgpu/common/mm/nvgpu_mem.c b/drivers/gpu/nvgpu/common/mm/nvgpu_mem.c index 2813f754b..d7f16e98d 100644 --- a/drivers/gpu/nvgpu/common/mm/nvgpu_mem.c +++ b/drivers/gpu/nvgpu/common/mm/nvgpu_mem.c @@ -38,6 +38,10 @@ u32 nvgpu_aperture_mask_raw(struct gk20a *g, enum nvgpu_aperture aperture, u32 sysmem_mask, u32 sysmem_coh_mask, u32 vidmem_mask) { + if ((aperture == APERTURE_INVALID) || (aperture >= APERTURE_MAX_ENUM)) { + nvgpu_do_assert_print(g, "Bad aperture"); + return 0; + } /* * Some iGPUs treat sysmem (i.e SoC DRAM) as vidmem. In these cases the * "sysmem" aperture should really be translated to VIDMEM. @@ -54,9 +58,11 @@ u32 nvgpu_aperture_mask_raw(struct gk20a *g, enum nvgpu_aperture aperture, case APERTURE_VIDMEM: return vidmem_mask; case APERTURE_INVALID: + case APERTURE_MAX_ENUM: + default: nvgpu_do_assert_print(g, "Bad aperture"); + return 0; } - return 0; } u32 nvgpu_aperture_mask(struct gk20a *g, struct nvgpu_mem *mem, diff --git a/drivers/gpu/nvgpu/include/nvgpu/nvgpu_mem.h b/drivers/gpu/nvgpu/include/nvgpu/nvgpu_mem.h index 639d01967..2b7c2ad99 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/nvgpu_mem.h +++ b/drivers/gpu/nvgpu/include/nvgpu/nvgpu_mem.h @@ -58,7 +58,9 @@ enum nvgpu_aperture { /* Don't use directly. Use APERTURE_SYSMEM, this is used internally. */ APERTURE_SYSMEM_COH, - APERTURE_VIDMEM + APERTURE_VIDMEM, + /* This should always be last in the list */ + APERTURE_MAX_ENUM }; struct nvgpu_mem { @@ -157,6 +159,8 @@ static inline const char *nvgpu_aperture_str(struct gk20a *g, return "SYSCOH"; case APERTURE_VIDMEM: return "VIDMEM"; + case APERTURE_MAX_ENUM: + return "UNKNOWN"; }; return "UNKNOWN"; }