summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_hdcp.c
diff options
context:
space:
mode:
authorRadhakrishna Sripada2018-04-05 00:59:57 +0200
committerJani Nikula2018-04-06 08:57:31 +0200
commit46a67c4d16ec86ca84a93f7dc92c54138e38a129 (patch)
tree1a07dd0fcfac847f4acd96481bd76142071af719 /drivers/gpu/drm/i915/intel_hdcp.c
parentdrm/i915: Only call finish_reset after a prepare_reset (diff)
downloadkernel-qcow2-linux-46a67c4d16ec86ca84a93f7dc92c54138e38a129.tar.gz
kernel-qcow2-linux-46a67c4d16ec86ca84a93f7dc92c54138e38a129.tar.xz
kernel-qcow2-linux-46a67c4d16ec86ca84a93f7dc92c54138e38a129.zip
drm/i915: Fix memory leak in intel_hdcp auth
Static code analysis tool reported memory leak in intel_hdcp_auth_downstream. Fixing the memory leak. v2: Rebase, move free to a cleanup label(Jani) Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Anusha Srivatsa <anusha.srivatsa@intel.com> Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com> Reviewed-by: Anusha Srivatsa <anusha.srivatsa@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180404225957.7457-1-radhakrishna.sripada@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/intel_hdcp.c')
-rw-r--r--drivers/gpu/drm/i915/intel_hdcp.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/intel_hdcp.c b/drivers/gpu/drm/i915/intel_hdcp.c
index 98a9c81e2dc1..2db5da550a1c 100644
--- a/drivers/gpu/drm/i915/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/intel_hdcp.c
@@ -435,7 +435,7 @@ int intel_hdcp_auth_downstream(struct intel_digital_port *intel_dig_port,
ret = shim->read_ksv_fifo(intel_dig_port, num_downstream, ksv_fifo);
if (ret)
- return ret;
+ goto err;
/*
* When V prime mismatches, DP Spec mandates re-read of
@@ -451,12 +451,15 @@ int intel_hdcp_auth_downstream(struct intel_digital_port *intel_dig_port,
if (i == tries) {
DRM_ERROR("V Prime validation failed.(%d)\n", ret);
- return ret;
+ goto err;
}
DRM_DEBUG_KMS("HDCP is enabled (%d downstream devices)\n",
num_downstream);
- return 0;
+ ret = 0;
+err:
+ kfree(ksv_fifo);
+ return ret;
}
/* Implements Part 1 of the HDCP authorization procedure */