Joe Perches wrote: > On Fri, 2012-10-05 at 21:09 -0700, Christopher Heiny wrote: > [] > > Just some trivial comments: Thanks - see below for responses. > > diff --git a/drivers/input/rmi4/rmi_driver.c > > b/drivers/input/rmi4/rmi_driver.c > [] > > > @@ -0,0 +1,1529 @@ > > [] > > > +static ssize_t delay_write(struct file *filp, const char __user *buffer, > > + size_t size, loff_t *offset) { > > + struct driver_debugfs_data *data = filp->private_data; > > + struct rmi_device_platform_data *pdata = > > + data->rmi_dev->phys->dev->platform_data; > > + int retval; > > + char local_buf[size]; > > + unsigned int new_read_delay; > > + unsigned int new_write_delay; > > + unsigned int new_block_delay; > > + unsigned int new_pre_delay; > > + unsigned int new_post_delay; > > + > > + retval = copy_from_user(local_buf, buffer, size); > > + if (retval) > > + return -EFAULT; > > + > > + retval = sscanf(local_buf, "%u %u %u %u %u", &new_read_delay, > > + &new_write_delay, &new_block_delay, > > + &new_pre_delay, &new_post_delay); > > + if (retval != 5) { > > + dev_err(&data->rmi_dev->dev, > > + "Incorrect number of values provided for delay."); > > + return -EINVAL; > > + } > > + if (new_read_delay < 0) { > > These are unnecessary tests as unsigned values are never < 0. Right. Thought we'd taken care of most of the silliness like that, but obviously missed some. We'll recheck the codebase. [snip] > > +static ssize_t phys_read(struct file *filp, char __user *buffer, size_t > > size, + loff_t *offset) { > > + struct driver_debugfs_data *data = filp->private_data; > > + struct rmi_phys_info *info = &data->rmi_dev->phys->info; > > + int retval; > > + char local_buf[size]; > > size comes from where? possible stack overflow? Hmmmm. Good point. We'll look at this. [snip] > [] > > > + list_for_each_entry(entry, &data->rmi_functions.list, list) > > + if (entry->irq_mask) > > + process_one_interrupt(entry, irq_status, > > + data); > > style nit, it'd be nicer with braces. I agree with you, but checkpatch.pl doesn't. :-( > > > diff --git a/drivers/input/rmi4/rmi_driver.h > > b/drivers/input/rmi4/rmi_driver.h > [] > > > @@ -0,0 +1,438 @@ > > > > + > > +#define tricat(x, y, z) tricat_(x, y, z) > > + > > +#define tricat_(x, y, z) x##y##z > > I think these tricat macros are merely obfuscating > and don't need to be used. tricat is used internally by another collection of macros that helps generate sysfs files. In particular, it's used to generate the RMI4 register name symbols.-- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html