diff options
Diffstat (limited to 'meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4972-drm-amdgpu-pm-Remove-VLA-usage.patch')
-rw-r--r-- | meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4972-drm-amdgpu-pm-Remove-VLA-usage.patch | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4972-drm-amdgpu-pm-Remove-VLA-usage.patch b/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4972-drm-amdgpu-pm-Remove-VLA-usage.patch deleted file mode 100644 index c74ec7c3..00000000 --- a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/4972-drm-amdgpu-pm-Remove-VLA-usage.patch +++ /dev/null @@ -1,174 +0,0 @@ -From 394cda92a7180bcee0d9ac775d14b653b0e2d01d Mon Sep 17 00:00:00 2001 -From: Kees Cook <keescook@chromium.org> -Date: Wed, 20 Jun 2018 11:26:47 -0700 -Subject: [PATCH 4972/5725] drm/amdgpu/pm: Remove VLA usage - -In the quest to remove all stack VLA usage from the kernel[1], this -uses the maximum sane buffer size and removes copy/paste code. - -[1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com - -Reviewed-by: Rex Zhu <rezhu@amd.com> -Signed-off-by: Kees Cook <keescook@chromium.org> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 100 ++++++++++++++------------------- - 1 file changed, 42 insertions(+), 58 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c -index f30e03f..a3ab2a2 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c -@@ -606,40 +606,59 @@ static ssize_t amdgpu_get_pp_dpm_sclk(struct device *dev, - return snprintf(buf, PAGE_SIZE, "\n"); - } - --static ssize_t amdgpu_set_pp_dpm_sclk(struct device *dev, -- struct device_attribute *attr, -- const char *buf, -- size_t count) -+/* -+ * Worst case: 32 bits individually specified, in octal at 12 characters -+ * per line (+1 for \n). -+ */ -+#define AMDGPU_MASK_BUF_MAX (32 * 13) -+ -+static ssize_t amdgpu_read_mask(const char *buf, size_t count, uint32_t *mask) - { -- struct drm_device *ddev = dev_get_drvdata(dev); -- struct amdgpu_device *adev = ddev->dev_private; - int ret; - long level; -- uint32_t mask = 0; - char *sub_str = NULL; - char *tmp; -- char buf_cpy[count]; -+ char buf_cpy[AMDGPU_MASK_BUF_MAX + 1]; - const char delimiter[3] = {' ', '\n', '\0'}; -+ size_t bytes; - -- memcpy(buf_cpy, buf, count+1); -+ *mask = 0; -+ -+ bytes = min(count, sizeof(buf_cpy) - 1); -+ memcpy(buf_cpy, buf, bytes); -+ buf_cpy[bytes] = '\0'; - tmp = buf_cpy; - while (tmp[0]) { -- sub_str = strsep(&tmp, delimiter); -+ sub_str = strsep(&tmp, delimiter); - if (strlen(sub_str)) { - ret = kstrtol(sub_str, 0, &level); -- -- if (ret) { -- count = -EINVAL; -- goto fail; -- } -- mask |= 1 << level; -+ if (ret) -+ return -EINVAL; -+ *mask |= 1 << level; - } else - break; - } -+ -+ return 0; -+} -+ -+static ssize_t amdgpu_set_pp_dpm_sclk(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, -+ size_t count) -+{ -+ struct drm_device *ddev = dev_get_drvdata(dev); -+ struct amdgpu_device *adev = ddev->dev_private; -+ int ret; -+ uint32_t mask = 0; -+ -+ ret = amdgpu_read_mask(buf, count, &mask); -+ if (ret) -+ return ret; -+ - if (adev->powerplay.pp_funcs->force_clock_level) - amdgpu_dpm_force_clock_level(adev, PP_SCLK, mask); - --fail: - return count; - } - -@@ -664,32 +683,15 @@ static ssize_t amdgpu_set_pp_dpm_mclk(struct device *dev, - struct drm_device *ddev = dev_get_drvdata(dev); - struct amdgpu_device *adev = ddev->dev_private; - int ret; -- long level; - uint32_t mask = 0; -- char *sub_str = NULL; -- char *tmp; -- char buf_cpy[count]; -- const char delimiter[3] = {' ', '\n', '\0'}; - -- memcpy(buf_cpy, buf, count+1); -- tmp = buf_cpy; -- while (tmp[0]) { -- sub_str = strsep(&tmp, delimiter); -- if (strlen(sub_str)) { -- ret = kstrtol(sub_str, 0, &level); -+ ret = amdgpu_read_mask(buf, count, &mask); -+ if (ret) -+ return ret; - -- if (ret) { -- count = -EINVAL; -- goto fail; -- } -- mask |= 1 << level; -- } else -- break; -- } - if (adev->powerplay.pp_funcs->force_clock_level) - amdgpu_dpm_force_clock_level(adev, PP_MCLK, mask); - --fail: - return count; - } - -@@ -714,33 +716,15 @@ static ssize_t amdgpu_set_pp_dpm_pcie(struct device *dev, - struct drm_device *ddev = dev_get_drvdata(dev); - struct amdgpu_device *adev = ddev->dev_private; - int ret; -- long level; - uint32_t mask = 0; -- char *sub_str = NULL; -- char *tmp; -- char buf_cpy[count]; -- const char delimiter[3] = {' ', '\n', '\0'}; -- -- memcpy(buf_cpy, buf, count+1); -- tmp = buf_cpy; - -- while (tmp[0]) { -- sub_str = strsep(&tmp, delimiter); -- if (strlen(sub_str)) { -- ret = kstrtol(sub_str, 0, &level); -+ ret = amdgpu_read_mask(buf, count, &mask); -+ if (ret) -+ return ret; - -- if (ret) { -- count = -EINVAL; -- goto fail; -- } -- mask |= 1 << level; -- } else -- break; -- } - if (adev->powerplay.pp_funcs->force_clock_level) - amdgpu_dpm_force_clock_level(adev, PP_PCIE, mask); - --fail: - return count; - } - --- -2.7.4 - |