re: Input: edt-ft5x06 - switch to newer gpio framework

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Franklin S Cooper Jr,

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

The patch 13c23cd18bd1: "Input: edt-ft5x06 - switch to newer gpio 
framework" from Sep 11, 2015, leads to the following Smatch complaint:

drivers/input/touchscreen/edt-ft5x06.c:988 edt_ft5x06_ts_probe()
	 error: we previously assumed 'tsdata->wake_gpio' could be null (see line 908)

drivers/input/touchscreen/edt-ft5x06.c
   907	
   908		if (tsdata->wake_gpio) {
                    ^^^^^^^^^^^^^^^^^
Patch introduces a new NULL check.

   909			usleep_range(5000, 6000);
   910			gpiod_set_value_cansleep(tsdata->wake_gpio, 1);
   911		}
   912	
   913		if (tsdata->reset_gpio) {
   914			usleep_range(5000, 6000);
   915			gpiod_set_value_cansleep(tsdata->reset_gpio, 0);
   916			msleep(300);
   917		}
   918	
   919		input = devm_input_allocate_device(&client->dev);
   920		if (!input) {
   921			dev_err(&client->dev, "failed to allocate input device.\n");
   922			return -ENOMEM;
   923		}
   924	
   925		mutex_init(&tsdata->mutex);
   926		tsdata->client = client;
   927		tsdata->input = input;
   928		tsdata->factory_mode = false;
   929	
   930		error = edt_ft5x06_ts_identify(client, tsdata, fw_version);
   931		if (error) {
   932			dev_err(&client->dev, "touchscreen probe failed\n");
   933			return error;
   934		}
   935	
   936		edt_ft5x06_ts_set_regs(tsdata);
   937		edt_ft5x06_ts_get_defaults(&client->dev, tsdata);
   938		edt_ft5x06_ts_get_parameters(tsdata);
   939	
   940		dev_dbg(&client->dev,
   941			"Model \"%s\", Rev. \"%s\", %dx%d sensors\n",
   942			tsdata->name, fw_version, tsdata->num_x, tsdata->num_y);
   943	
   944		input->name = tsdata->name;
   945		input->id.bustype = BUS_I2C;
   946		input->dev.parent = &client->dev;
   947	
   948		input_set_abs_params(input, ABS_MT_POSITION_X,
   949				     0, tsdata->num_x * 64 - 1, 0, 0);
   950		input_set_abs_params(input, ABS_MT_POSITION_Y,
   951				     0, tsdata->num_y * 64 - 1, 0, 0);
   952	
   953		touchscreen_parse_properties(input, true);
   954	
   955		error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, INPUT_MT_DIRECT);
   956		if (error) {
   957			dev_err(&client->dev, "Unable to init MT slots.\n");
   958			return error;
   959		}
   960	
   961		input_set_drvdata(input, tsdata);
   962		i2c_set_clientdata(client, tsdata);
   963	
   964		irq_flags = irq_get_trigger_type(client->irq);
   965		if (irq_flags == IRQF_TRIGGER_NONE)
   966			irq_flags = IRQF_TRIGGER_FALLING;
   967		irq_flags |= IRQF_ONESHOT;
   968	
   969		error = devm_request_threaded_irq(&client->dev, client->irq,
   970						NULL, edt_ft5x06_ts_isr, irq_flags,
   971						client->name, tsdata);
   972		if (error) {
   973			dev_err(&client->dev, "Unable to request touchscreen IRQ.\n");
   974			return error;
   975		}
   976	
   977		error = sysfs_create_group(&client->dev.kobj, &edt_ft5x06_attr_group);
   978		if (error)
   979			return error;
   980	
   981		error = input_register_device(input);
   982		if (error)
   983			goto err_remove_attrs;
   984	
   985		edt_ft5x06_ts_prepare_debugfs(tsdata, dev_driver_string(&client->dev));
   986		device_init_wakeup(&client->dev, 1);
   987	
   988		dev_dbg(&client->dev,
   989			"EDT FT5x06 initialized: IRQ %d, WAKE pin %d, Reset pin %d.\n",
   990			client->irq, desc_to_gpio(tsdata->wake_gpio),
                                                  ^^^^^^^^^^^^^^^^^
Patch introduces a new unchecked dereference, (inside the function call).

regards,
dan carpenter
--
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



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux