Re: [Freedreno] [PATCH] drm/msm/adreno: Remove VLA usage

2018-08-03 Thread Rob Clark
On Thu, Aug 2, 2018 at 7:24 PM, Kees Cook  wrote:
> On Fri, Jun 29, 2018 at 2:20 PM, Jordan Crouse  wrote:
>> On Fri, Jun 29, 2018 at 11:48:18AM -0700, Kees Cook wrote:
>>> In the quest to remove all stack VLA usage from the kernel[1], this
>>> switches to using a kasprintf()ed buffer. Return paths are updated
>>> to free the allocation.
>>>
>>> [1] 
>>> https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qpxydaacu1rq...@mail.gmail.com
>>
>> Thanks for doing this.
>>
>> Acked-by: Jordan Crouse 
>
> Hi Rob,
>
> Is this something you can take via your tree?
>

Oh, sorry, I missed this one, I'll pick it up shortly..

BR,
-R
___
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno


Re: [Freedreno] [PATCH] drm/msm/adreno: Remove VLA usage

2018-08-02 Thread Kees Cook
On Fri, Jun 29, 2018 at 2:20 PM, Jordan Crouse  wrote:
> On Fri, Jun 29, 2018 at 11:48:18AM -0700, Kees Cook wrote:
>> In the quest to remove all stack VLA usage from the kernel[1], this
>> switches to using a kasprintf()ed buffer. Return paths are updated
>> to free the allocation.
>>
>> [1] 
>> https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qpxydaacu1rq...@mail.gmail.com
>
> Thanks for doing this.
>
> Acked-by: Jordan Crouse 

Hi Rob,

Is this something you can take via your tree?

Thanks,

-Kees

-- 
Kees Cook
Pixel Security
___
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno


Re: [Freedreno] [PATCH] drm/msm/adreno: Remove VLA usage

2018-07-02 Thread SF Markus Elfring
> @@ -91,12 +93,13 @@  static int zap_shader_load_mdt(struct msm_gpu *gpu, 
> const char *fwname)
>   ret = qcom_mdt_load(dev, fw, fwname, GPU_PAS_ID,
>   mem_region, mem_phys, mem_size, NULL);
>   } else {
> - char newname[strlen("qcom/") + strlen(fwname) + 1];
> + char *newname;
> 
> - sprintf(newname, "qcom/%s", fwname);
> + newname = kasprintf(GFP_KERNEL, "qcom/%s", fwname);
> 
>   ret = qcom_mdt_load(dev, fw, newname, GPU_PAS_ID,
>   mem_region, mem_phys, mem_size, NULL);

I have taken another look also at this update suggestion.
Now I wonder why the return value is not checked for the added name construction
in the way as it is specified for the function “adreno_request_fw”.
Will another condition check make sense at this place?

Regards,
Markus
___
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno


Re: [Freedreno] [PATCH] drm/msm/adreno: Remove VLA usage

2018-06-29 Thread Jordan Crouse
On Fri, Jun 29, 2018 at 11:48:18AM -0700, Kees Cook wrote:
> In the quest to remove all stack VLA usage from the kernel[1], this
> switches to using a kasprintf()ed buffer. Return paths are updated
> to free the allocation.
> 
> [1] 
> https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qpxydaacu1rq...@mail.gmail.com

Thanks for doing this.

Acked-by: Jordan Crouse 

> Signed-off-by: Kees Cook 
> ---
>  drivers/gpu/drm/msm/adreno/a5xx_gpu.c   |  7 +--
>  drivers/gpu/drm/msm/adreno/adreno_gpu.c | 28 +
>  2 files changed, 24 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c 
> b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
> index d39400e5bc42..f5f76f8151f9 100644
> --- a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
> +++ b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
> @@ -11,6 +11,7 @@
>   *
>   */
>  
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -19,6 +20,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  #include "msm_gem.h"
>  #include "msm_mmu.h"
>  #include "a5xx_gpu.h"
> @@ -91,12 +93,13 @@ static int zap_shader_load_mdt(struct msm_gpu *gpu, const 
> char *fwname)
>   ret = qcom_mdt_load(dev, fw, fwname, GPU_PAS_ID,
>   mem_region, mem_phys, mem_size, NULL);
>   } else {
> - char newname[strlen("qcom/") + strlen(fwname) + 1];
> + char *newname;
>  
> - sprintf(newname, "qcom/%s", fwname);
> + newname = kasprintf(GFP_KERNEL, "qcom/%s", fwname);
>  
>   ret = qcom_mdt_load(dev, fw, newname, GPU_PAS_ID,
>   mem_region, mem_phys, mem_size, NULL);
> + kfree(newname);
>   }
>   if (ret)
>   goto out;
> diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c 
> b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> index bcbf9f2a29f9..bfaafdfc7eb2 100644
> --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
> @@ -17,7 +17,9 @@
>   * this program.  If not, see .
>   */
>  
> +#include 
>  #include 
> +#include 
>  #include "adreno_gpu.h"
>  #include "msm_gem.h"
>  #include "msm_mmu.h"
> @@ -70,10 +72,12 @@ adreno_request_fw(struct adreno_gpu *adreno_gpu, const 
> char *fwname)
>  {
>   struct drm_device *drm = adreno_gpu->base.dev;
>   const struct firmware *fw = NULL;
> - char newname[strlen("qcom/") + strlen(fwname) + 1];
> + char *newname;
>   int ret;
>  
> - sprintf(newname, "qcom/%s", fwname);
> + newname = kasprintf(GFP_KERNEL, "qcom/%s", fwname);
> + if (!newname)
> + return ERR_PTR(-ENOMEM);
>  
>   /*
>* Try first to load from qcom/$fwfile using a direct load (to avoid
> @@ -87,11 +91,12 @@ adreno_request_fw(struct adreno_gpu *adreno_gpu, const 
> char *fwname)
>   dev_info(drm->dev, "loaded %s from new location\n",
>   newname);
>   adreno_gpu->fwloc = FW_LOCATION_NEW;
> - return fw;
> + goto out;
>   } else if (adreno_gpu->fwloc != FW_LOCATION_UNKNOWN) {
>   dev_err(drm->dev, "failed to load %s: %d\n",
>   newname, ret);
> - return ERR_PTR(ret);
> + fw = ERR_PTR(ret);
> + goto out;
>   }
>   }
>  
> @@ -106,11 +111,12 @@ adreno_request_fw(struct adreno_gpu *adreno_gpu, const 
> char *fwname)
>   dev_info(drm->dev, "loaded %s from legacy location\n",
>   newname);
>   adreno_gpu->fwloc = FW_LOCATION_LEGACY;
> - return fw;
> + goto out;
>   } else if (adreno_gpu->fwloc != FW_LOCATION_UNKNOWN) {
>   dev_err(drm->dev, "failed to load %s: %d\n",
>   fwname, ret);
> - return ERR_PTR(ret);
> + fw = ERR_PTR(ret);
> + goto out;
>   }
>   }
>  
> @@ -126,16 +132,20 @@ adreno_request_fw(struct adreno_gpu *adreno_gpu, const 
> char *fwname)
>   dev_info(drm->dev, "loaded %s with helper\n",
>   newname);
>   adreno_gpu->fwloc = FW_LOCATION_HELPER;
> - return fw;
> + goto out;
>   } else if (adreno_gpu->fwloc != FW_LOCATION_UNKNOWN) {
>   dev_err(drm->dev, "failed to load %s: %d\n",
>   newname, ret);
> - return ERR_PTR(ret);
> + fw = ERR_PTR(ret);
> + goto out;
>   }
>   }
>  
>   dev_err(drm->dev, "failed to load %s\n", fwname);
> - return ERR_PTR(-ENOENT);
> + fw = ERR_PTR(-ENOENT);
> +out:
> + kfree(newname);
> + return 

Re: [Freedreno] [PATCH] drm/msm/adreno: Remove VLA usage

2018-06-29 Thread Jordan Crouse
On Fri, Jun 29, 2018 at 10:47:31PM +0200, Arnd Bergmann wrote:
> On Fri, Jun 29, 2018 at 8:48 PM, Kees Cook  wrote:
> > In the quest to remove all stack VLA usage from the kernel[1], this
> > switches to using a kasprintf()ed buffer. Return paths are updated
> > to free the allocation.
> >
> > [1] 
> > https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qpxydaacu1rq...@mail.gmail.com
> >
> > Signed-off-by: Kees Cook 
> > ---
> >  drivers/gpu/drm/msm/adreno/a5xx_gpu.c   |  7 +--
> >  drivers/gpu/drm/msm/adreno/adreno_gpu.c | 28 +
> >  2 files changed, 24 insertions(+), 11 deletions(-)
> 
> This seems fine, though using a fixed-length string is probably just
> as well here,
> given that the 'fwname' variable is always set to the constant string
> "a530_zap.mdt"
> at the moment, which is not very long.

We could make it fixed but since this code is only called once this
feels safer.

Jordan

-- 
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
___
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno


Re: [Freedreno] [PATCH] drm/msm/adreno: Remove VLA usage

2018-06-29 Thread Arnd Bergmann
On Fri, Jun 29, 2018 at 8:48 PM, Kees Cook  wrote:
> In the quest to remove all stack VLA usage from the kernel[1], this
> switches to using a kasprintf()ed buffer. Return paths are updated
> to free the allocation.
>
> [1] 
> https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qpxydaacu1rq...@mail.gmail.com
>
> Signed-off-by: Kees Cook 
> ---
>  drivers/gpu/drm/msm/adreno/a5xx_gpu.c   |  7 +--
>  drivers/gpu/drm/msm/adreno/adreno_gpu.c | 28 +
>  2 files changed, 24 insertions(+), 11 deletions(-)

This seems fine, though using a fixed-length string is probably just
as well here,
given that the 'fwname' variable is always set to the constant string
"a530_zap.mdt"
at the moment, which is not very long.

Reviewed-by: Arnd Bergmann 

   Arnd
___
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno