diff options
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-subdev.c')
| -rw-r--r-- | drivers/media/v4l2-core/v4l2-subdev.c | 8 | 
1 files changed, 5 insertions, 3 deletions
| diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c index da78497ae5ed..43fefa73e0a3 100644 --- a/drivers/media/v4l2-core/v4l2-subdev.c +++ b/drivers/media/v4l2-core/v4l2-subdev.c @@ -17,6 +17,7 @@   */  #include <linux/ioctl.h> +#include <linux/mm.h>  #include <linux/slab.h>  #include <linux/types.h>  #include <linux/videodev2.h> @@ -577,13 +578,14 @@ v4l2_subdev_alloc_pad_config(struct v4l2_subdev *sd)  	if (!sd->entity.num_pads)  		return NULL; -	cfg = kcalloc(sd->entity.num_pads, sizeof(*cfg), GFP_KERNEL); +	cfg = kvmalloc_array(sd->entity.num_pads, sizeof(*cfg), +			     GFP_KERNEL | __GFP_ZERO);  	if (!cfg)  		return NULL;  	ret = v4l2_subdev_call(sd, pad, init_cfg, cfg);  	if (ret < 0 && ret != -ENOIOCTLCMD) { -		kfree(cfg); +		kvfree(cfg);  		return NULL;  	} @@ -593,7 +595,7 @@ EXPORT_SYMBOL_GPL(v4l2_subdev_alloc_pad_config);  void v4l2_subdev_free_pad_config(struct v4l2_subdev_pad_config *cfg)  { -	kfree(cfg); +	kvfree(cfg);  }  EXPORT_SYMBOL_GPL(v4l2_subdev_free_pad_config);  #endif /* CONFIG_MEDIA_CONTROLLER */ |