re: Input: add Cypress TTSP capacitive multi-touch screen support

2 messages, 2 authors, 2012-02-10 · open the first message on its own page

re: Input: add Cypress TTSP capacitive multi-touch screen support

From: Dan Carpenter <hidden>
Date: 2012-02-01 09:40:50

Hello Javier Martinez Canillas,

This is a semi-automatic email about new static checker warnings.

The patch 4065d1e7b216: "Input: add Cypress TTSP capacitive 
multi-touch screen support" from Jan 31, 2012, leads to the following 
Smatch complaint:

drivers/input/touchscreen/cyttsp_core.c +526 cyttsp_probe()
	 warn: variable dereferenced before check 'dev' (see line 521)

drivers/input/touchscreen/cyttsp_core.c
   520	{
   521		const struct cyttsp_platform_data *pdata = dev->platform_data;
                                                           ^^^^^
dereference.

   522		struct cyttsp *ts;
   523		struct input_dev *input_dev;
   524		int error;
   525	
   526		if (!dev || !bus_ops || !pdata || !pdata->name || irq <= 0) {
                    ^^^^
check.

   527			error = -EINVAL;
   528			goto err_out;

"dev" is never NULL here so the check can be removed probably.

regards,
dan carpenter

Re: Input: add Cypress TTSP capacitive multi-touch screen support

From: Javier Martinez Canillas <javier@dowhile0.org>
Date: 2012-02-10 00:04:01

On Wed, Feb 1, 2012 at 10:40 AM, Dan Carpenter [off-list ref] wrote:
Hello Javier Martinez Canillas,

This is a semi-automatic email about new static checker warnings.

The patch 4065d1e7b216: "Input: add Cypress TTSP capacitive
multi-touch screen support" from Jan 31, 2012, leads to the following
Smatch complaint:

drivers/input/touchscreen/cyttsp_core.c +526 cyttsp_probe()
        warn: variable dereferenced before check 'dev' (see line 521)

drivers/input/touchscreen/cyttsp_core.c
  520  {
  521          const struct cyttsp_platform_data *pdata = dev->platform_data;
                                                          ^^^^^
dereference.

  522          struct cyttsp *ts;
  523          struct input_dev *input_dev;
  524          int error;
  525
  526          if (!dev || !bus_ops || !pdata || !pdata->name || irq <= 0) {
                   ^^^^
check.

  527                  error = -EINVAL;
  528                  goto err_out;

"dev" is never NULL here so the check can be removed probably.

regards,
dan carpenter
Hello Dan,

Thank you for running smatch on this driver.
dev is never NULL since both i2c and spi bus drivers pass as an
argument a pointer to a member of an previously allocated structure
(struct i2c_client and struct spi_device respectively).

But you are right that is wrong to check after dereferencing the
pointer. Instead of remove the !dev check I will move the pdata
assignment after the check. I'll send a patch now to fix the issue.

Thank you and best regards,
Javier
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help