diff options
Diffstat (limited to 'drivers/input/ff-core.c')
| -rw-r--r-- | drivers/input/ff-core.c | 26 | 
1 files changed, 15 insertions, 11 deletions
diff --git a/drivers/input/ff-core.c b/drivers/input/ff-core.c index 03078c08309..f50f6dd9227 100644 --- a/drivers/input/ff-core.c +++ b/drivers/input/ff-core.c @@ -23,7 +23,7 @@  /* #define DEBUG */ -#define debug(format, arg...) pr_debug("ff-core: " format "\n", ## arg) +#define pr_fmt(fmt) KBUILD_BASENAME ": " fmt  #include <linux/input.h>  #include <linux/module.h> @@ -116,7 +116,7 @@ int input_ff_upload(struct input_dev *dev, struct ff_effect *effect,  	if (effect->type < FF_EFFECT_MIN || effect->type > FF_EFFECT_MAX ||  	    !test_bit(effect->type, dev->ffbit)) { -		debug("invalid or not supported effect type in upload"); +		pr_debug("invalid or not supported effect type in upload\n");  		return -EINVAL;  	} @@ -124,7 +124,7 @@ int input_ff_upload(struct input_dev *dev, struct ff_effect *effect,  	    (effect->u.periodic.waveform < FF_WAVEFORM_MIN ||  	     effect->u.periodic.waveform > FF_WAVEFORM_MAX ||  	     !test_bit(effect->u.periodic.waveform, dev->ffbit))) { -		debug("invalid or not supported wave form in upload"); +		pr_debug("invalid or not supported wave form in upload\n");  		return -EINVAL;  	} @@ -138,8 +138,8 @@ int input_ff_upload(struct input_dev *dev, struct ff_effect *effect,  	if (effect->id == -1) {  		for (id = 0; id < ff->max_effects; id++) -		     if (!ff->effect_owners[id]) -			break; +			if (!ff->effect_owners[id]) +				break;  		if (id >= ff->max_effects) {  			ret = -ENOSPC; @@ -246,7 +246,7 @@ static int flush_effects(struct input_dev *dev, struct file *file)  	struct ff_device *ff = dev->ff;  	int i; -	debug("flushing now"); +	pr_debug("flushing now\n");  	mutex_lock(&ff->mutex); @@ -309,19 +309,23 @@ EXPORT_SYMBOL_GPL(input_ff_event);   * Once ff device is created you need to setup its upload, erase,   * playback and other handlers before registering input device   */ -int input_ff_create(struct input_dev *dev, int max_effects) +int input_ff_create(struct input_dev *dev, unsigned int max_effects)  {  	struct ff_device *ff; +	size_t ff_dev_size;  	int i;  	if (!max_effects) { -		printk(KERN_ERR -		       "ff-core: cannot allocate device without any effects\n"); +		pr_err("cannot allocate device without any effects\n");  		return -EINVAL;  	} -	ff = kzalloc(sizeof(struct ff_device) + -		     max_effects * sizeof(struct file *), GFP_KERNEL); +	ff_dev_size = sizeof(struct ff_device) + +				max_effects * sizeof(struct file *); +	if (ff_dev_size < max_effects) /* overflow */ +		return -EINVAL; + +	ff = kzalloc(ff_dev_size, GFP_KERNEL);  	if (!ff)  		return -ENOMEM;  | 
