All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [linux-next:master 2460/4407] drivers/media/i2c/ov8865.c:2852 ov8865_probe() warn: passing zero to 'PTR_ERR'
Date: Tue, 19 Jan 2021 20:39:22 +0800	[thread overview]
Message-ID: <202101192012.Nh0e1okh-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 12666 bytes --]

CC: kbuild-all(a)lists.01.org
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
CC: Mauro Carvalho Chehab <mchehab@kernel.org>
CC: linux-media(a)vger.kernel.org
CC: "Kévin L'hôpital" <kevin.lhopital@bootlin.com>
CC: Sakari Ailus <sakari.ailus@linux.intel.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   b4bb878f3eb3e604ebfe83bbc17eb7af8d99cbf4
commit: 11c0d8fdccc56fa15cb15906480b4737c31dd085 [2460/4407] media: i2c: Add support for the OV8865 image sensor
:::::: branch date: 6 hours ago
:::::: commit date: 7 days ago
config: i386-randconfig-m021-20210119 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/media/i2c/ov8865.c:2852 ov8865_probe() warn: passing zero to 'PTR_ERR'

vim +/PTR_ERR +2852 drivers/media/i2c/ov8865.c

11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2780  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2781  static int ov8865_probe(struct i2c_client *client)
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2782  {
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2783  	struct device *dev = &client->dev;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2784  	struct fwnode_handle *handle;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2785  	struct ov8865_sensor *sensor;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2786  	struct v4l2_subdev *subdev;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2787  	struct media_pad *pad;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2788  	unsigned long rate;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2789  	int ret;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2790  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2791  	sensor = devm_kzalloc(dev, sizeof(*sensor), GFP_KERNEL);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2792  	if (!sensor)
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2793  		return -ENOMEM;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2794  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2795  	sensor->dev = dev;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2796  	sensor->i2c_client = client;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2797  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2798  	/* Graph Endpoint */
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2799  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2800  	handle = fwnode_graph_get_next_endpoint(dev_fwnode(dev), NULL);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2801  	if (!handle) {
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2802  		dev_err(dev, "unable to find enpoint node\n");
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2803  		return -EINVAL;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2804  	}
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2805  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2806  	sensor->endpoint.bus_type = V4L2_MBUS_CSI2_DPHY;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2807  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2808  	ret = v4l2_fwnode_endpoint_alloc_parse(handle, &sensor->endpoint);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2809  	fwnode_handle_put(handle);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2810  	if (ret) {
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2811  		dev_err(dev, "failed to parse endpoint node\n");
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2812  		return ret;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2813  	}
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2814  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2815  	/* GPIOs */
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2816  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2817  	sensor->powerdown = devm_gpiod_get_optional(dev, "powerdown",
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2818  						    GPIOD_OUT_HIGH);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2819  	if (IS_ERR(sensor->powerdown)) {
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2820  		ret = PTR_ERR(sensor->powerdown);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2821  		goto error_endpoint;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2822  	}
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2823  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2824  	sensor->reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2825  	if (IS_ERR(sensor->reset)) {
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2826  		ret = PTR_ERR(sensor->reset);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2827  		goto error_endpoint;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2828  	}
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2829  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2830  	/* Regulators */
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2831  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2832  	/* DVDD: digital core */
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2833  	sensor->dvdd = devm_regulator_get(dev, "dvdd");
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2834  	if (IS_ERR(sensor->dvdd)) {
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2835  		dev_err(dev, "cannot get DVDD (digital core) regulator\n");
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2836  		ret = PTR_ERR(sensor->dvdd);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2837  		goto error_endpoint;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2838  	}
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2839  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2840  	/* DOVDD: digital I/O */
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2841  	sensor->dovdd = devm_regulator_get(dev, "dovdd");
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2842  	if (IS_ERR(sensor->dvdd)) {
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2843  		dev_err(dev, "cannot get DOVDD (digital I/O) regulator\n");
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2844  		ret = PTR_ERR(sensor->dvdd);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2845  		goto error_endpoint;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2846  	}
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2847  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2848  	/* AVDD: analog */
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2849  	sensor->avdd = devm_regulator_get(dev, "avdd");
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2850  	if (IS_ERR(sensor->avdd)) {
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2851  		dev_err(dev, "cannot get AVDD (analog) regulator\n");
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31 @2852  		ret = PTR_ERR(sensor->dvdd);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2853  		goto error_endpoint;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2854  	}
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2855  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2856  	/* External Clock */
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2857  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2858  	sensor->extclk = devm_clk_get(dev, NULL);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2859  	if (IS_ERR(sensor->extclk)) {
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2860  		dev_err(dev, "failed to get external clock\n");
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2861  		ret = PTR_ERR(sensor->extclk);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2862  		goto error_endpoint;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2863  	}
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2864  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2865  	rate = clk_get_rate(sensor->extclk);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2866  	if (rate != OV8865_EXTCLK_RATE) {
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2867  		dev_err(dev, "clock rate %lu Hz is unsupported\n", rate);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2868  		ret = -EINVAL;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2869  		goto error_endpoint;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2870  	}
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2871  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2872  	/* Subdev, entity and pad */
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2873  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2874  	subdev = &sensor->subdev;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2875  	v4l2_i2c_subdev_init(subdev, client, &ov8865_subdev_ops);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2876  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2877  	subdev->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2878  	subdev->entity.function = MEDIA_ENT_F_CAM_SENSOR;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2879  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2880  	pad = &sensor->pad;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2881  	pad->flags = MEDIA_PAD_FL_SOURCE;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2882  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2883  	ret = media_entity_pads_init(&subdev->entity, 1, pad);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2884  	if (ret)
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2885  		goto error_entity;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2886  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2887  	/* Mutex */
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2888  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2889  	mutex_init(&sensor->mutex);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2890  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2891  	/* Sensor */
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2892  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2893  	ret = ov8865_ctrls_init(sensor);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2894  	if (ret)
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2895  		goto error_mutex;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2896  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2897  	ret = ov8865_state_init(sensor);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2898  	if (ret)
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2899  		goto error_ctrls;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2900  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2901  	/* Runtime PM */
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2902  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2903  	pm_runtime_enable(sensor->dev);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2904  	pm_runtime_set_suspended(sensor->dev);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2905  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2906  	/* V4L2 subdev register */
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2907  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2908  	ret = v4l2_async_register_subdev_sensor_common(subdev);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2909  	if (ret)
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2910  		goto error_pm;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2911  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2912  	return 0;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2913  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2914  error_pm:
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2915  	pm_runtime_disable(sensor->dev);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2916  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2917  error_ctrls:
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2918  	v4l2_ctrl_handler_free(&sensor->ctrls.handler);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2919  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2920  error_mutex:
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2921  	mutex_destroy(&sensor->mutex);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2922  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2923  error_entity:
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2924  	media_entity_cleanup(&sensor->subdev.entity);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2925  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2926  error_endpoint:
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2927  	v4l2_fwnode_endpoint_free(&sensor->endpoint);
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2928  
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2929  	return ret;
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2930  }
11c0d8fdccc56fa1 Paul Kocialkowski 2020-12-31  2931  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 29927 bytes --]

             reply	other threads:[~2021-01-19 12:39 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-19 12:39 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2021-01-19 18:57 [linux-next:master 2460/4407] drivers/media/i2c/ov8865.c:2852 ov8865_probe() warn: passing zero to 'PTR_ERR' Dan Carpenter
2021-01-19 18:57 ` Dan Carpenter
2021-01-19 18:57 ` Dan Carpenter
2021-01-20 10:43 ` Paul Kocialkowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202101192012.Nh0e1okh-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.