summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/css_gr_gk20a.c
diff options
context:
space:
mode:
authorAlex Waterman <alexw@nvidia.com>2017-12-29 17:54:14 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2018-01-25 17:25:21 -0500
commit25aba34bbddc0080c8e12846596d07d09f186159 (patch)
tree5a27232f0c1105c02adb0bca7667a9550b9bb8df /drivers/gpu/nvgpu/gk20a/css_gr_gk20a.c
parent43dbbaaad7b49036a507b7e04af67b766adc41be (diff)
gpu: nvgpu: add speculative load barrier (channel IOCTLs)
Data can be speculatively loaded from memory and stay in cache even when bound check fails. This can lead to unintended information disclosure via side-channel analysis. To mitigate this problem insert a speculation barrier. bug 2039126 CVE-2017-5753 Change-Id: I6b8af794ea2156f0342ea6cc925051f49dbb1d6e Signed-off-by: Alex Waterman <alexw@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1640498 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: Richard Zhao <rizhao@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/css_gr_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/css_gr_gk20a.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/css_gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/css_gr_gk20a.c
index 40529471..114386a2 100644
--- a/drivers/gpu/nvgpu/gk20a/css_gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/css_gr_gk20a.c
@@ -31,13 +31,13 @@
31#include <nvgpu/dma.h> 31#include <nvgpu/dma.h>
32#include <nvgpu/mm.h> 32#include <nvgpu/mm.h>
33#include <nvgpu/sizes.h> 33#include <nvgpu/sizes.h>
34#include <nvgpu/barrier.h>
35#include <nvgpu/log.h>
36#include <nvgpu/bug.h>
34 37
35#include "gk20a.h" 38#include "gk20a.h"
36#include "css_gr_gk20a.h" 39#include "css_gr_gk20a.h"
37 40
38#include <nvgpu/log.h>
39#include <nvgpu/bug.h>
40
41#include <nvgpu/hw/gk20a/hw_perf_gk20a.h> 41#include <nvgpu/hw/gk20a/hw_perf_gk20a.h>
42#include <nvgpu/hw/gk20a/hw_mc_gk20a.h> 42#include <nvgpu/hw/gk20a/hw_mc_gk20a.h>
43 43
@@ -501,6 +501,8 @@ int gr_gk20a_css_attach(struct channel_gk20a *ch,
501 perfmon_count > CSS_MAX_PERFMON_IDS - CSS_FIRST_PERFMON_ID) 501 perfmon_count > CSS_MAX_PERFMON_IDS - CSS_FIRST_PERFMON_ID)
502 return -EINVAL; 502 return -EINVAL;
503 503
504 nvgpu_speculation_barrier();
505
504 gr = &g->gr; 506 gr = &g->gr;
505 507
506 nvgpu_mutex_acquire(&gr->cs_lock); 508 nvgpu_mutex_acquire(&gr->cs_lock);