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 --]
next 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.