staging: atomisp: memory allocation cleanups
Subsystems (5)
v2 cover staging: atomisp: memory allocation cleanups
Patch series performs minor code cleanups using coccinelle to simplify memory allocation tests and remove redundant OOM log messages.
Changes in v2:
Rebase and re-send patches
Aishwarya Pant (2):
staging: atomisp2: cleanup null check on memory allocation
staging: atomisp: cleanup out of memory messages
drivers/staging/media/atomisp/i2c/ap1302.c | 4 +-- drivers/staging/media/atomisp/i2c/gc0310.c | 4 +-- drivers/staging/media/atomisp/i2c/gc2235.c | 4 +-- drivers/staging/media/atomisp/i2c/imx/imx.c | 4 +-- drivers/staging/media/atomisp/i2c/lm3554.c | 4 +-- drivers/staging/media/atomisp/i2c/mt9m114.c | 4 +-- drivers/staging/media/atomisp/i2c/ov2680.c | 4 +-- drivers/staging/media/atomisp/i2c/ov2722.c | 4 +-- drivers/staging/media/atomisp/i2c/ov5693/ov5693.c | 4 +-- drivers/staging/media/atomisp/i2c/ov8858.c | 6 +--- .../media/atomisp/pci/atomisp2/atomisp_fops.c | 4 +-- .../media/atomisp/pci/atomisp2/atomisp_ioctl.c | 9 ++---- .../media/atomisp/pci/atomisp2/css2400/sh_css.c | 36 +++++++++++----------- .../atomisp/pci/atomisp2/css2400/sh_css_firmware.c | 6 ++-- .../pci/atomisp2/css2400/sh_css_param_shading.c | 4 +-- .../media/atomisp/pci/atomisp2/hmm/hmm_bo.c | 10 ++---- .../atomisp/pci/atomisp2/hmm/hmm_dynamic_pool.c | 6 +--- .../atomisp/pci/atomisp2/hmm/hmm_reserved_pool.c | 5 +-- .../media/atomisp/pci/atomisp2/hmm/hmm_vm.c | 4 +-- .../platform/intel-mid/atomisp_gmin_platform.c | 4 +-- 20 files changed, 41 insertions(+), 89 deletions(-)
Signature · 1 line
2.11.0
PATCH v2 1/2 staging: atomisp2: cleanup null check on memory allocation
For memory allocation functions that fail with a NULL return value, it is preferred to use the (!x) test in place of (x == NULL).
Changes in atomisp2/css2400/sh_css.c were done by hand.
Done with the help of the following cocci script:
@@
type T;
T* p;
statement s,s1;
@@
p =
\(devm_kzalloc\|devm_ioremap\|usb_alloc_urb\|alloc_netdev\|dev_alloc_skb\|
kmalloc\|kmalloc_array\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\| kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\|devm_kzalloc\)(...)
...when != p
if (
- p == NULL
+ !p
) s
else s1
--
Changes in atomisp2/css2400/sh_css.c were done by hand, the above script was not able to match the pattern if (a->b != null).
v2 changes:
None, just rebase and re-send
--- .../media/atomisp/pci/atomisp2/css2400/sh_css.c | 36 +++++++++++----------- .../atomisp/pci/atomisp2/css2400/sh_css_firmware.c | 6 ++-- .../pci/atomisp2/css2400/sh_css_param_shading.c | 2 +- 3 files changed, 22 insertions(+), 22 deletions(-)
drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c +18 -18
@@ -5607,13 +5607,13 @@ static enum ia_css_err load_video_binaries(struct ia_css_pipe *pipe) mycs->num_yuv_scaler = cas_scaler_descr.num_stage; mycs->yuv_scaler_binary =kzalloc (cas_scaler_descr.num_stage *sizeof (struct ia_css_binary ),GFP_KERNEL ); -if (mycs->yuv_scaler_binary ==NULL ) { +if (!mycs->yuv_scaler_binary) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ;return err; } mycs->is_output_stage =kzalloc (cas_scaler_descr.num_stage *sizeof (bool ),GFP_KERNEL ); -if (mycs->is_output_stage ==NULL ) { +if (!mycs->is_output_stage) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ;return err; }
@@ -6258,14 +6258,14 @@ static enum ia_css_err load_primary_binaries( mycs->num_yuv_scaler = cas_scaler_descr.num_stage; mycs->yuv_scaler_binary =kzalloc (cas_scaler_descr.num_stage *sizeof (struct ia_css_binary ),GFP_KERNEL ); -if (mycs->yuv_scaler_binary ==NULL ) { +if (!mycs->yuv_scaler_binary) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ;IA_CSS_LEAVE_ERR_PRIVATE (err);return err; } mycs->is_output_stage =kzalloc (cas_scaler_descr.num_stage *sizeof (bool ),GFP_KERNEL ); -if (mycs->is_output_stage ==NULL ) { +if (!mycs->is_output_stage) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ;IA_CSS_LEAVE_ERR_PRIVATE (err);return err;
@@ -6982,27 +6982,27 @@ static enum ia_css_err ia_css_pipe_create_cas_scaler_desc_single_output( } descr->in_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->in_info ==NULL ) { +if (!descr->in_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->internal_out_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->internal_out_info ==NULL ) { +if (!descr->internal_out_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->out_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->out_info ==NULL ) { +if (!descr->out_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->vf_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->vf_info ==NULL ) { +if (!descr->vf_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->is_output_stage =kmalloc (descr->num_stage *sizeof (bool ),GFP_KERNEL ); -if (descr->is_output_stage ==NULL ) { +if (!descr->is_output_stage) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; }
@@ -7118,22 +7118,22 @@ static enum ia_css_err ia_css_pipe_create_cas_scaler_desc(struct ia_css_pipe *pi descr->num_stage = num_stages; descr->in_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->in_info ==NULL ) { +if (!descr->in_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->internal_out_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->internal_out_info ==NULL ) { +if (!descr->internal_out_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->out_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->out_info ==NULL ) { +if (!descr->out_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->vf_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->vf_info ==NULL ) { +if (!descr->vf_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; }
@@ -7276,13 +7276,13 @@ load_yuvpp_binaries(struct ia_css_pipe *pipe) mycs->num_yuv_scaler = cas_scaler_descr.num_stage; mycs->yuv_scaler_binary =kzalloc (cas_scaler_descr.num_stage *sizeof (struct ia_css_binary ),GFP_KERNEL ); -if (mycs->yuv_scaler_binary ==NULL ) { +if (!mycs->yuv_scaler_binary) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } mycs->is_output_stage =kzalloc (cas_scaler_descr.num_stage *sizeof (bool ),GFP_KERNEL ); -if (mycs->is_output_stage ==NULL ) { +if (!mycs->is_output_stage) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; }
@@ -7383,7 +7383,7 @@ load_yuvpp_binaries(struct ia_css_pipe *pipe) } mycs->vf_pp_binary =kzalloc (mycs->num_vf_pp *sizeof (struct ia_css_binary ),GFP_KERNEL ); -if (mycs->vf_pp_binary ==NULL ) { +if (!mycs->vf_pp_binary) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; }
@@ -9445,7 +9445,7 @@ ia_css_stream_create(const struct ia_css_stream_config *stream_config,/* allocate the stream instance */ curr_stream =kmalloc (sizeof (struct ia_css_stream ),GFP_KERNEL ); -if (curr_stream ==NULL ) { +if (!curr_stream) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ;IA_CSS_LEAVE_ERR (err);return err;
@@ -9457,7 +9457,7 @@ ia_css_stream_create(const struct ia_css_stream_config *stream_config,/* allocate pipes */ curr_stream->num_pipes = num_pipes; curr_stream->pipes =kzalloc (num_pipes *sizeof (struct ia_css_pipe *),GFP_KERNEL ); -if (curr_stream->pipes ==NULL ) { +if (!curr_stream->pipes) { curr_stream->num_pipes =0 ;kfree (curr_stream); curr_stream =NULL ;
drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css_firmware.c +3 -3
@@ -147,7 +147,7 @@ sh_css_load_blob_info(const char *fw, const struct ia_css_fw_info *bi, struct iachar *parambuf =kmalloc (paramstruct_size + configstruct_size + statestruct_size,GFP_KERNEL ); -if (parambuf ==NULL ) +if (!parambuf)return IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; bd->mem_offsets.array[IA_CSS_PARAM_CLASS_PARAM ].ptr =NULL ;
@@ -229,14 +229,14 @@ sh_css_load_firmware(const char *fw_data, sh_css_blob_info =kmalloc ( (sh_css_num_binaries -NUM_OF_SPS ) *sizeof (*sh_css_blob_info),GFP_KERNEL ); -if (sh_css_blob_info ==NULL ) +if (!sh_css_blob_info)return IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; }else { sh_css_blob_info =NULL ; } fw_minibuffer =kzalloc (sh_css_num_binaries *sizeof (struct fw_param ),GFP_KERNEL ); -if (fw_minibuffer ==NULL ) +if (!fw_minibuffer)return IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ;for (i =0 ; i < sh_css_num_binaries; i++) {
drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css_param_shading.c +1 -1
@@ -365,7 +365,7 @@ ia_css_shading_table_alloc(IA_CSS_ENTER ("" ); me =kmalloc (sizeof (*me),GFP_KERNEL ); -if (me ==NULL ) { +if (!me) {IA_CSS_ERROR ("out of memory" );return me; }
Signature · 1 line
2.11.0
PATCH v2 2/2 staging: atomisp: cleanup out of memory messages
In reply to Aishwarya PantLogging of explicit out of memory messages is redundant since memory allocation failures produce a backtrace.
Done with the help of the following cocci script:
@@
expression ex, ret;
statement s;
constant char[] c;
constant err;
identifier f, l;
@@
ex = \(kmalloc\|kmalloc_array\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\| kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\|devm_kzalloc\)(...) ... when != ex
if (
(
!ex
|
unlikely(!ex)
)
)
- {
- f(..., c, ...);
(
return ex;
|
return;
|
return err;
|
goto l;
)
- }
else s
Another case where if branch has multiple statements was handled with the following condition:
{
...
- f(..., c, ...);
...
}
---
v2 changes:
None, just rebase and re-send
drivers/staging/media/atomisp/i2c/ap1302.c | 4 +---
drivers/staging/media/atomisp/i2c/gc0310.c | 4 +--- drivers/staging/media/atomisp/i2c/gc2235.c | 4 +--- drivers/staging/media/atomisp/i2c/imx/imx.c | 4 +--- drivers/staging/media/atomisp/i2c/lm3554.c | 4 +--- drivers/staging/media/atomisp/i2c/mt9m114.c | 4 +--- drivers/staging/media/atomisp/i2c/ov2680.c | 4 +--- drivers/staging/media/atomisp/i2c/ov2722.c | 4 +--- drivers/staging/media/atomisp/i2c/ov5693/ov5693.c | 4 +--- drivers/staging/media/atomisp/i2c/ov8858.c | 6 +----- drivers/staging/media/atomisp/pci/atomisp2/atomisp_fops.c | 4 +--- drivers/staging/media/atomisp/pci/atomisp2/atomisp_ioctl.c | 9 ++------- .../media/atomisp/pci/atomisp2/css2400/sh_css_param_shading.c | 4 +--- drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm_bo.c | 10 ++-------- .../staging/media/atomisp/pci/atomisp2/hmm/hmm_dynamic_pool.c | 6 +----- .../staging/media/atomisp/pci/atomisp2/hmm/hmm_reserved_pool.c | 5 +---- drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm_vm.c | 4 +--- .../media/atomisp/platform/intel-mid/atomisp_gmin_platform.c | 4 +--- 18 files changed, 20 insertions(+), 68 deletions(-)
drivers/staging/media/atomisp/i2c/ap1302.c +1 -3
@@ -1153,10 +1153,8 @@ static int ap1302_probe(struct i2c_client *client,/* allocate device & init sub device */ dev =devm_kzalloc (&client->dev,sizeof (*dev),GFP_KERNEL ); -if (!dev) { -dev_err (&client->dev,"%s: out of memory\n" , __func__); +if (!dev)return -ENOMEM ; - }mutex_init (&dev->input_lock);
drivers/staging/media/atomisp/i2c/gc0310.c +1 -3
@@ -1385,10 +1385,8 @@ static int gc0310_probe(struct i2c_client *client,pr_info ("%s S\n" , __func__); dev =kzalloc (sizeof (*dev),GFP_KERNEL ); -if (!dev) { -dev_err (&client->dev,"out of memory\n" ); +if (!dev)return -ENOMEM ; - }mutex_init (&dev->input_lock);
drivers/staging/media/atomisp/i2c/gc2235.c +1 -3
@@ -1123,10 +1123,8 @@ static int gc2235_probe(struct i2c_client *client,unsigned int i; dev =kzalloc (sizeof (*dev),GFP_KERNEL ); -if (!dev) { -dev_err (&client->dev,"out of memory\n" ); +if (!dev)return -ENOMEM ; - }mutex_init (&dev->input_lock);
drivers/staging/media/atomisp/i2c/imx/imx.c +1 -3
@@ -2365,10 +2365,8 @@ static int imx_probe(struct i2c_client *client,/* allocate sensor device & init sub device */ dev =kzalloc (sizeof (*dev),GFP_KERNEL ); -if (!dev) { -v4l2_err (client,"%s: out of memory\n" , __func__); +if (!dev)return -ENOMEM ; - }mutex_init (&dev->input_lock);
drivers/staging/media/atomisp/i2c/lm3554.c +1 -3
@@ -871,10 +871,8 @@ static int lm3554_probe(struct i2c_client *client,int ret; flash =kzalloc (sizeof (*flash),GFP_KERNEL ); -if (!flash) { -dev_err (&client->dev,"out of memory\n" ); +if (!flash)return -ENOMEM ; - } flash->pdata = client->dev.platform_data;
drivers/staging/media/atomisp/i2c/mt9m114.c +1 -3
@@ -1863,10 +1863,8 @@ static int mt9m114_probe(struct i2c_client *client,/* Setup sensor configuration structure */ dev =kzalloc (sizeof (*dev),GFP_KERNEL ); -if (!dev) { -dev_err (&client->dev,"out of memory\n" ); +if (!dev)return -ENOMEM ; - }v4l2_i2c_subdev_init (&dev->sd, client, &mt9m114_ops); pdata = client->dev.platform_data;
drivers/staging/media/atomisp/i2c/ov2680.c +1 -3
@@ -1447,10 +1447,8 @@ static int ov2680_probe(struct i2c_client *client,unsigned int i; dev =kzalloc (sizeof (*dev),GFP_KERNEL ); -if (!dev) { -dev_err (&client->dev,"out of memory\n" ); +if (!dev)return -ENOMEM ; - }mutex_init (&dev->input_lock);
drivers/staging/media/atomisp/i2c/ov2722.c +1 -3
@@ -1285,10 +1285,8 @@ static int ov2722_probe(struct i2c_client *client,struct acpi_device *adev; dev =kzalloc (sizeof (*dev),GFP_KERNEL ); -if (!dev) { -dev_err (&client->dev,"out of memory\n" ); +if (!dev)return -ENOMEM ; - }mutex_init (&dev->input_lock);
drivers/staging/media/atomisp/i2c/ov5693/ov5693.c +1 -3
@@ -1965,10 +1965,8 @@ static int ov5693_probe(struct i2c_client *client, } dev =kzalloc (sizeof (*dev),GFP_KERNEL ); -if (!dev) { -dev_err (&client->dev,"out of memory\n" ); +if (!dev)return -ENOMEM ; - }mutex_init (&dev->input_lock);
drivers/staging/media/atomisp/i2c/ov8858.c +1 -5
@@ -480,8 +480,6 @@ static int ov8858_priv_int_data_init(struct v4l2_subdev *sd)if (!dev->otp_data) { dev->otp_data =devm_kzalloc (&client->dev, size,GFP_KERNEL );if (!dev->otp_data) { -dev_err (&client->dev,"%s: can't allocate memory" , - __func__); r = -ENOMEM ; goto error3; }
@@ -2094,10 +2092,8 @@ static int ov8858_probe(struct i2c_client *client,/* allocate sensor device & init sub device */ dev =kzalloc (sizeof (*dev),GFP_KERNEL ); -if (!dev) { -dev_err (&client->dev,"%s: out of memory\n" , __func__); +if (!dev)return -ENOMEM ; - }mutex_init (&dev->input_lock);
drivers/staging/media/atomisp/pci/atomisp2/atomisp_fops.c +1 -3
@@ -1137,10 +1137,8 @@ static int remove_pad_from_frame(struct atomisp_device *isp,ia_css_ptr store = load; buffer =kmalloc (width*sizeof (load),GFP_KERNEL ); -if (!buffer) { -dev_err (isp->dev,"out of memory.\n" ); +if (!buffer)return -ENOMEM ; - } load +=ISP_LEFT_PAD ;for (i =0 ; i < height; i++) {
drivers/staging/media/atomisp/pci/atomisp2/atomisp_ioctl.c +2 -7
@@ -943,10 +943,8 @@ int atomisp_alloc_css_stat_bufs(struct atomisp_sub_device *asd,dev_dbg (isp->dev,"allocating %d 3a buffers\n" , count);while (count--) { s3a_buf =kzalloc (sizeof (struct atomisp_s3a_buf ),GFP_KERNEL ); -if (!s3a_buf) { -dev_err (isp->dev,"s3a stat buf alloc failed\n" ); +if (!s3a_buf) goto error; - }if (atomisp_css_allocate_stat_buffers ( asd, stream_id, s3a_buf,NULL ,NULL )) {
@@ -965,7 +963,6 @@ int atomisp_alloc_css_stat_bufs(struct atomisp_sub_device *asd,while (count--) { dis_buf =kzalloc (sizeof (struct atomisp_dis_buf ),GFP_KERNEL );if (!dis_buf) { -dev_err (isp->dev,"dis stat buf alloc failed\n" );kfree (s3a_buf); goto error; }
@@ -990,10 +987,8 @@ int atomisp_alloc_css_stat_bufs(struct atomisp_sub_device *asd,while (count--) { md_buf =kzalloc (sizeof (struct atomisp_metadata_buf ),GFP_KERNEL ); -if (!md_buf) { -dev_err (isp->dev,"metadata buf alloc failed\n" ); +if (!md_buf) goto error; - }if (atomisp_css_allocate_stat_buffers ( asd, stream_id,NULL ,NULL , md_buf)) {
drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css_param_shading.c +1 -3
@@ -365,10 +365,8 @@ ia_css_shading_table_alloc(IA_CSS_ENTER ("" ); me =kmalloc (sizeof (*me),GFP_KERNEL ); -if (!me) { -IA_CSS_ERROR ("out of memory" ); +if (!me)return me; - } me->width = width; me->height = height;
drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm_bo.c +2 -8
@@ -727,10 +727,8 @@ static int alloc_private_pages(struct hmm_buffer_object *bo, bo->page_obj =kmalloc_array (pgnr,sizeof (struct hmm_page_object ),GFP_KERNEL ); -if (unlikely (!bo->page_obj)) { -dev_err (atomisp_dev,"out of memory for bo->page_obj\n" ); +if (unlikely (!bo->page_obj))return -ENOMEM ; - } i =0 ; alloc_pgnr =0 ;
@@ -991,15 +989,12 @@ static int alloc_user_pages(struct hmm_buffer_object *bo,struct page **pages; pages =kmalloc_array (bo->pgnr,sizeof (struct page *),GFP_KERNEL ); -if (unlikely (!pages)) { -dev_err (atomisp_dev,"out of memory for pages...\n" ); +if (unlikely (!pages))return -ENOMEM ; - } bo->page_obj =kmalloc_array (bo->pgnr,sizeof (struct hmm_page_object ),GFP_KERNEL );if (unlikely (!bo->page_obj)) { -dev_err (atomisp_dev,"out of memory for bo->page_obj...\n" );kfree (pages);return -ENOMEM ; }
@@ -1366,7 +1361,6 @@ void *hmm_bo_vmap(struct hmm_buffer_object *bo, bool cached) pages =kmalloc_array (bo->pgnr,sizeof (*pages),GFP_KERNEL );if (unlikely (!pages)) {mutex_unlock (&bo->mutex); -dev_err (atomisp_dev,"out of memory for pages...\n" );return NULL ; }
drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm_dynamic_pool.c +1 -5
@@ -116,8 +116,6 @@ static void free_pages_to_dynamic_pool(void *pool, hmm_page =kmem_cache_zalloc (dypool_info->pgptr_cache,GFP_KERNEL );if (!hmm_page) { -dev_err (atomisp_dev,"out of memory for hmm_page.\n" ); -/* free page directly */ ret =set_pages_wb (page_obj->page,1 );if (ret)
@@ -151,10 +149,8 @@ static int hmm_dynamic_pool_init(void **pool, unsigned int pool_size) dypool_info =kmalloc (sizeof (struct hmm_dynamic_pool_info ),GFP_KERNEL ); -if (unlikely (!dypool_info)) { -dev_err (atomisp_dev,"out of memory for repool_info.\n" ); +if (unlikely (!dypool_info))return -ENOMEM ; - } dypool_info->pgptr_cache = kmem_cache_create("pgptr_cache", sizeof(struct hmm_page), 0,
drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm_reserved_pool.c +1 -4
@@ -92,15 +92,12 @@ static int hmm_reserved_pool_setup(struct hmm_reserved_pool_info **repool_info, pool_info =kmalloc (sizeof (struct hmm_reserved_pool_info ),GFP_KERNEL ); -if (unlikely (!pool_info)) { -dev_err (atomisp_dev,"out of memory for repool_info.\n" ); +if (unlikely (!pool_info))return -ENOMEM ; - } pool_info->pages =kmalloc (sizeof (struct page *) * pool_size,GFP_KERNEL );if (unlikely (!pool_info->pages)) { -dev_err (atomisp_dev,"out of memory for repool_info->pages.\n" );kfree (pool_info);return -ENOMEM ; }
drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm_vm.c +1 -3
@@ -89,10 +89,8 @@ static struct hmm_vm_node *alloc_hmm_vm_node(unsigned int pgnr,struct hmm_vm_node *node; node =kmem_cache_alloc (vm->cache,GFP_KERNEL ); -if (!node) { -dev_err (atomisp_dev,"out of memory.\n" ); +if (!node)return NULL ; - }INIT_LIST_HEAD (&node->list); node->pgnr = pgnr;
drivers/staging/media/atomisp/platform/intel-mid/atomisp_gmin_platform.c +1 -3
@@ -739,10 +739,8 @@ int camera_sensor_csi(struct v4l2_subdev *sd, u32 port,if (flag) { csi =kzalloc (sizeof (*csi),GFP_KERNEL ); -if (!csi) { -dev_err (&client->dev,"out of memory\n" ); +if (!csi)return -ENOMEM ; - } csi->port = port; csi->num_lanes = lanes; csi->input_format = format;
Signature · 1 line
2.11.0
Re: [Outreachy kernel] [PATCH v2 1/2] staging: atomisp2: cleanup null check on memory allocation
In reply to Aishwarya PantQuoted 19 lines · Aishwarya Pant
For memory allocation functions that fail with a NULL return value, it is preferred to use the (!x) test in place of (x == NULL).
Changes in
atomisp2/css2400/sh_css.cwere done by hand.Done with the help of the following cocci script:
@@
type T;
T* p;
statement s,s1;
@@p =
\(devm_kzalloc\|devm_ioremap\|usb_alloc_urb\|alloc_netdev\|dev_alloc_skb\|
kmalloc\|kmalloc_array\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\| kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\|devm_kzalloc\)(...)
...when != p
Quoted 7 lines
if (
- p == NULL
+ !p
) s
else s1Signed-off-by Aishwarya Pant <[email protected]>
Quoted 206 lines
--
Changes inatomisp2/css2400/sh_css.cwere done by hand, the above script was not able to match the pattern if (a->b!= null).v2 changes:
None, just rebase and re-send--- .../media/atomisp/pci/atomisp2/css2400/sh_css.c | 36 +++++++++++----------- .../atomisp/pci/atomisp2/css2400/sh_css_firmware.c | 6 ++-- .../pci/atomisp2/css2400/sh_css_param_shading.c | 2 +- 3 files changed, 22 insertions(+), 22 deletions(-)drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c +18
-18@@ -5607,13 +5607,13 @@ static enum ia_css_err load_video_binaries(struct ia_css_pipe *pipe) mycs->num_yuv_scaler = cas_scaler_descr.num_stage; mycs->yuv_scaler_binary =kzalloc (cas_scaler_descr.num_stage *sizeof (struct ia_css_binary ),GFP_KERNEL ); -if (mycs->yuv_scaler_binary ==NULL ) { +if (!mycs->yuv_scaler_binary) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ;return err; } mycs->is_output_stage =kzalloc (cas_scaler_descr.num_stage *sizeof (bool ),GFP_KERNEL ); -if (mycs->is_output_stage ==NULL ) { +if (!mycs->is_output_stage) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ;return err; }@@ -6258,14 +6258,14 @@ static enum ia_css_err load_primary_binaries( mycs->num_yuv_scaler = cas_scaler_descr.num_stage; mycs->yuv_scaler_binary =kzalloc (cas_scaler_descr.num_stage *sizeof (struct ia_css_binary ),GFP_KERNEL ); -if (mycs->yuv_scaler_binary ==NULL ) { +if (!mycs->yuv_scaler_binary) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ;IA_CSS_LEAVE_ERR_PRIVATE (err);return err; } mycs->is_output_stage =kzalloc (cas_scaler_descr.num_stage *sizeof (bool ),GFP_KERNEL ); -if (mycs->is_output_stage ==NULL ) { +if (!mycs->is_output_stage) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ;IA_CSS_LEAVE_ERR_PRIVATE (err);return err;@@ -6982,27 +6982,27 @@ static enum ia_css_err ia_css_pipe_create_cas_scaler_desc_single_output( } descr->in_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->in_info ==NULL ) { +if (!descr->in_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->internal_out_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->internal_out_info ==NULL ) { +if (!descr->internal_out_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->out_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->out_info ==NULL ) { +if (!descr->out_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->vf_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->vf_info ==NULL ) { +if (!descr->vf_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->is_output_stage =kmalloc (descr->num_stage *sizeof (bool ),GFP_KERNEL ); -if (descr->is_output_stage ==NULL ) { +if (!descr->is_output_stage) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; }@@ -7118,22 +7118,22 @@ static enum ia_css_err ia_css_pipe_create_cas_scaler_desc(struct ia_css_pipe *pi descr->num_stage = num_stages; descr->in_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->in_info ==NULL ) { +if (!descr->in_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->internal_out_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->internal_out_info ==NULL ) { +if (!descr->internal_out_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->out_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->out_info ==NULL ) { +if (!descr->out_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } descr->vf_info =kmalloc (descr->num_stage *sizeof (struct ia_css_frame_info ),GFP_KERNEL ); -if (descr->vf_info ==NULL ) { +if (!descr->vf_info) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; }@@ -7276,13 +7276,13 @@ load_yuvpp_binaries(struct ia_css_pipe *pipe) mycs->num_yuv_scaler = cas_scaler_descr.num_stage; mycs->yuv_scaler_binary =kzalloc (cas_scaler_descr.num_stage *sizeof (struct ia_css_binary ),GFP_KERNEL ); -if (mycs->yuv_scaler_binary ==NULL ) { +if (!mycs->yuv_scaler_binary) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; } mycs->is_output_stage =kzalloc (cas_scaler_descr.num_stage *sizeof (bool ),GFP_KERNEL ); -if (mycs->is_output_stage ==NULL ) { +if (!mycs->is_output_stage) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; }@@ -7383,7 +7383,7 @@ load_yuvpp_binaries(struct ia_css_pipe *pipe) } mycs->vf_pp_binary =kzalloc (mycs->num_vf_pp *sizeof (struct ia_css_binary ),GFP_KERNEL ); -if (mycs->vf_pp_binary ==NULL ) { +if (!mycs->vf_pp_binary) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; goto ERR; }@@ -9445,7 +9445,7 @@ ia_css_stream_create(const struct ia_css_stream_config *stream_config,/* allocate the stream instance */ curr_stream =kmalloc (sizeof (struct ia_css_stream ),GFP_KERNEL ); -if (curr_stream ==NULL ) { +if (!curr_stream) { err =IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ;IA_CSS_LEAVE_ERR (err);return err;@@ -9457,7 +9457,7 @@ ia_css_stream_create(const struct ia_css_stream_config *stream_config,/* allocate pipes */ curr_stream->num_pipes = num_pipes; curr_stream->pipes =kzalloc (num_pipes *sizeof (struct ia_css_pipe *),GFP_KERNEL ); -if (curr_stream->pipes ==NULL ) { +if (!curr_stream->pipes) { curr_stream->num_pipes =0 ;kfree (curr_stream); curr_stream =NULL ;drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css_firmware.c +3
-3@@ -147,7 +147,7 @@ sh_css_load_blob_info(const char *fw, const struct ia_css_fw_info *bi, struct iachar *parambuf =kmalloc (paramstruct_size + configstruct_size + statestruct_size,GFP_KERNEL ); -if (parambuf ==NULL ) +if (!parambuf)return IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; bd->mem_offsets.array[IA_CSS_PARAM_CLASS_PARAM ].ptr =NULL ;@@ -229,14 +229,14 @@ sh_css_load_firmware(const char *fw_data, sh_css_blob_info =kmalloc ( (sh_css_num_binaries -NUM_OF_SPS ) *sizeof (*sh_css_blob_info),GFP_KERNEL ); -if (sh_css_blob_info ==NULL ) +if (!sh_css_blob_info)return IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ; }else { sh_css_blob_info =NULL ; } fw_minibuffer =kzalloc (sh_css_num_binaries *sizeof (struct fw_param ),GFP_KERNEL ); -if (fw_minibuffer ==NULL ) +if (!fw_minibuffer)return IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY ;for (i =0 ; i < sh_css_num_binaries; i++) {drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css_param_shading.c +1
-2@@ -365,7 +365,7 @@ ia_css_shading_table_alloc(IA_CSS_ENTER ("" ); me =kmalloc (sizeof (*me),GFP_KERNEL ); -if (me ==NULL ) { +if (!me) {IA_CSS_ERROR ("out of memory" );return me; } --2.11.0
--
You received this message because you are subscribed to the Google Groups "outreachy-kernel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/94b66136d4007e3219fba5714c01eb934c833588.1507989088.git.aishpant%40gmail.com.
For more options, visit https://groups.google.com/d/optout.
Hi Aishwarya,
Quoted 9 lines · Aishwarya Pant
Patch series performs minor code cleanups using coccinelle to simplify memory allocation tests and remove redundant OOM log messages.
Changes in v2:
Rebase and re-send patchesAishwarya Pant (2):
staging: atomisp2: cleanup null check on memory allocation
staging: atomisp: cleanup out of memory messages
Thank you for the update, but the patches still don't apply.
Some patches have been merged since I last reviewed these and I've already sent a pull request for the branch.
Could you rebase your patches on this branch, please?
<URL:https://git.linuxtv.org/sailus/media_tree.git/log/?h=atomisp-next>
Normally it'll be "atomisp".
Signature · 4 lines
Kind regards, Sakari Ailus e-mail: [email protected]