From 877ee6d3051f02f3a0f26698667ab7c31fea7580 Mon Sep 17 00:00:00 2001 From: Vedashree Vidwans Date: Tue, 10 Dec 2019 14:43:35 -0800 Subject: [PATCH] gpu: nvgpu: check fb_flush() return value Currently, ioctl_flush_l2 function and fecs_trace_poll() do not check error value returned by fb_flush(). This patch checks if fb_flush() returns an error and passes this error value up the stack. Jira NVGPU-3475 Change-Id: I42208e3532873cf4088b350d31d867a96bea47be Signed-off-by: Vedashree Vidwans Reviewed-on: https://git-master.nvidia.com/r/2259647 Reviewed-by: svc-mobile-coverity Reviewed-by: svc-mobile-misra Reviewed-by: svc-mobile-cert Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Thomas Fleury Reviewed-by: Alex Waterman Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/gr/fecs_trace.c | 6 +++++- drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/nvgpu/common/gr/fecs_trace.c b/drivers/gpu/nvgpu/common/gr/fecs_trace.c index 5f99c16bc..365b107ae 100644 --- a/drivers/gpu/nvgpu/common/gr/fecs_trace.c +++ b/drivers/gpu/nvgpu/common/gr/fecs_trace.c @@ -516,7 +516,11 @@ int nvgpu_gr_fecs_trace_poll(struct gk20a *g) read, g->ops.gr.fecs_trace.get_read_index(g), write, cnt); /* Ensure all FECS writes have made it to SYSMEM */ - g->ops.mm.cache.fb_flush(g); + err = g->ops.mm.cache.fb_flush(g); + if (err != 0) { + nvgpu_err(g, "mm.cache.fb_flush() failed err=%d", err); + goto done; + } if (nvgpu_is_enabled(g, NVGPU_FECS_TRACE_FEATURE_CONTROL)) { /* Bits 30:0 of MAILBOX1 represents actual read pointer value */ diff --git a/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c b/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c index ed82bdebb..b2b01d7a6 100644 --- a/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c +++ b/drivers/gpu/nvgpu/os/linux/ioctl_ctrl.c @@ -656,7 +656,11 @@ static int nvgpu_gpu_ioctl_l2_fb_ops(struct gk20a *g, } if (args->fb_flush) { - g->ops.mm.cache.fb_flush(g); + err = g->ops.mm.cache.fb_flush(g); + if (err != 0) { + nvgpu_err(g, "mm.cache.fb_flush() failed err=%d", err); + return err; + } } return err;