From: kernel test robot <lkp@intel.com>
To: Jarkko Sakkinen <jarkko@kernel.org>
Cc: oe-kbuild-all@lists.linux.dev
Subject: [jarkko-tpmdd:v4l2-loopback 2/3] drivers/media/v4l2-core/v4l2-loopback.c:2918:61: sparse: sparse: Using plain integer as NULL pointer
Date: Fri, 3 Jan 2025 12:51:17 +0800 [thread overview]
Message-ID: <202501031201.wsUl5GoV-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git v4l2-loopback
head: 77ded3bb83b3454b62521baaa44f0faabcf1aa39
commit: 62ee7cf235fa52381d3170035469abfd1057c6f7 [2/3] media: v4l2-loopback
config: i386-randconfig-061-20241230 (https://download.01.org/0day-ci/archive/20250103/202501031201.wsUl5GoV-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250103/202501031201.wsUl5GoV-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202501031201.wsUl5GoV-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
drivers/media/v4l2-core/v4l2-loopback.c:2030:40: sparse: sparse: symbol 'client_usage_ops' was not declared. Should it be static?
drivers/media/v4l2-core/v4l2-loopback.c:2173:13: sparse: sparse: restricted __poll_t degrades to integer
drivers/media/v4l2-core/v4l2-loopback.c:2291:27: sparse: sparse: cast removes address space '__user' of expression
drivers/media/v4l2-core/v4l2-loopback.c:2291:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] __user *to @@ got void * @@
drivers/media/v4l2-core/v4l2-loopback.c:2291:27: sparse: expected void [noderef] __user *to
drivers/media/v4l2-core/v4l2-loopback.c:2291:27: sparse: got void *
drivers/media/v4l2-core/v4l2-loopback.c:2345:65: sparse: sparse: cast removes address space '__user' of expression
drivers/media/v4l2-core/v4l2-loopback.c:2345:65: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void * @@
drivers/media/v4l2-core/v4l2-loopback.c:2345:65: sparse: expected void const [noderef] __user *from
drivers/media/v4l2-core/v4l2-loopback.c:2345:65: sparse: got void *
drivers/media/v4l2-core/v4l2-loopback.c:2873:59: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void * @@
drivers/media/v4l2-core/v4l2-loopback.c:2873:59: sparse: expected void const [noderef] __user *from
drivers/media/v4l2-core/v4l2-loopback.c:2873:59: sparse: got void *
drivers/media/v4l2-core/v4l2-loopback.c:2901:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const [noderef] __user *from @@ got void * @@
drivers/media/v4l2-core/v4l2-loopback.c:2901:51: sparse: expected void const [noderef] __user *from
drivers/media/v4l2-core/v4l2-loopback.c:2901:51: sparse: got void *
>> drivers/media/v4l2-core/v4l2-loopback.c:2918:61: sparse: sparse: Using plain integer as NULL pointer
drivers/media/v4l2-core/v4l2-loopback.c:2925:60: sparse: sparse: Using plain integer as NULL pointer
drivers/media/v4l2-core/v4l2-loopback.c:2946:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void [noderef] __user *to @@ got void * @@
drivers/media/v4l2-core/v4l2-loopback.c:2946:35: sparse: expected void [noderef] __user *to
drivers/media/v4l2-core/v4l2-loopback.c:2946:35: sparse: got void *
drivers/media/v4l2-core/v4l2-loopback.c:2989:27: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __poll_t ( *poll )( ... ) @@ got unsigned int ( * )( ... ) @@
drivers/media/v4l2-core/v4l2-loopback.c:2989:27: sparse: expected restricted __poll_t ( *poll )( ... )
drivers/media/v4l2-core/v4l2-loopback.c:2989:27: sparse: got unsigned int ( * )( ... )
drivers/media/v4l2-core/v4l2-loopback.c:3139:47: sparse: sparse: Using plain integer as NULL pointer
drivers/media/v4l2-core/v4l2-loopback.c:2636:53: sparse: sparse: self-comparison always evaluates to true
vim +2918 drivers/media/v4l2-core/v4l2-loopback.c
2851
2852 static long v4l2loopback_control_ioctl(struct file *file, unsigned int cmd,
2853 unsigned long parm)
2854 {
2855 struct v4l2_loopback_device *dev;
2856 struct v4l2_loopback_config conf;
2857 struct v4l2_loopback_config *confptr = &conf;
2858 int device_nr, capture_nr, output_nr;
2859 int ret;
2860
2861 ret = mutex_lock_killable(&v4l2loopback_ctl_mutex);
2862 if (ret)
2863 return ret;
2864
2865 ret = -EINVAL;
2866 switch (cmd) {
2867 default:
2868 ret = -ENOSYS;
2869 break;
2870 /* add a v4l2loopback device (pair), based on the user-provided specs */
2871 case V4L2LOOPBACK_CTL_ADD:
2872 if (parm) {
2873 if ((ret = copy_from_user(&conf, (void *)parm,
2874 sizeof(conf))) < 0)
2875 break;
2876 } else
2877 confptr = NULL;
2878 ret = v4l2_loopback_add(confptr, &device_nr);
2879 if (ret >= 0)
2880 ret = device_nr;
2881 break;
2882 /* remove a v4l2loopback device (both capture and output) */
2883 case V4L2LOOPBACK_CTL_REMOVE:
2884 ret = v4l2loopback_lookup((int)parm, &dev);
2885 if (ret >= 0 && dev) {
2886 int nr = ret;
2887 ret = -EBUSY;
2888 if (dev->open_count.counter > 0)
2889 break;
2890 idr_remove(&v4l2loopback_index_idr, nr);
2891 v4l2_loopback_remove(dev);
2892 ret = 0;
2893 };
2894 break;
2895 /* get information for a loopback device.
2896 * this is mostly about limits (which cannot be queried directly with VIDIOC_G_FMT and friends
2897 */
2898 case V4L2LOOPBACK_CTL_QUERY:
2899 if (!parm)
2900 break;
2901 if ((ret = copy_from_user(&conf, (void *)parm, sizeof(conf))) <
2902 0)
2903 break;
2904 capture_nr = output_nr = conf.output_nr;
2905 #ifdef SPLIT_DEVICES
2906 capture_nr = conf.capture_nr;
2907 #endif
2908 device_nr = (output_nr < 0) ? capture_nr : output_nr;
2909 MARK();
2910 /* get the device from either capture_nr or output_nr (whatever is valid) */
2911 if ((ret = v4l2loopback_lookup(device_nr, &dev)) < 0)
2912 break;
2913 MARK();
2914 /* if we got the device from output_nr and there is a valid capture_nr,
2915 * make sure that both refer to the same device (or bail out)
2916 */
2917 if ((device_nr != capture_nr) && (capture_nr >= 0) &&
> 2918 ((ret = v4l2loopback_lookup(capture_nr, 0)) < 0))
2919 break;
2920 MARK();
2921 /* if otoh, we got the device from capture_nr and there is a valid output_nr,
2922 * make sure that both refer to the same device (or bail out)
2923 */
2924 if ((device_nr != output_nr) && (output_nr >= 0) &&
2925 ((ret = v4l2loopback_lookup(output_nr, 0)) < 0))
2926 break;
2927 MARK();
2928
2929 /* v4l2_loopback_config identified a single device, so fetch the data */
2930 snprintf(conf.card_label, sizeof(conf.card_label), "%s",
2931 dev->card_label);
2932 MARK();
2933 conf.output_nr = dev->vdev->num;
2934 #ifdef SPLIT_DEVICES
2935 conf.capture_nr = dev->vdev->num;
2936 #endif
2937 conf.min_width = dev->min_width;
2938 conf.min_height = dev->min_height;
2939 conf.max_width = dev->max_width;
2940 conf.max_height = dev->max_height;
2941 conf.announce_all_caps = dev->announce_all_caps;
2942 conf.max_buffers = dev->buffers_number;
2943 conf.max_openers = dev->max_openers;
2944 conf.debug = debug;
2945 MARK();
2946 if (copy_to_user((void *)parm, &conf, sizeof(conf))) {
2947 ret = -EFAULT;
2948 break;
2949 }
2950 MARK();
2951 ret = 0;
2952 ;
2953 break;
2954 }
2955
2956 MARK();
2957 mutex_unlock(&v4l2loopback_ctl_mutex);
2958 MARK();
2959 return ret;
2960 }
2961
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2025-01-03 4:52 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-03 4:51 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-12-30 2:08 [jarkko-tpmdd:v4l2-loopback 2/3] drivers/media/v4l2-core/v4l2-loopback.c:2918:61: sparse: sparse: Using plain integer as NULL pointer kernel test robot
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=202501031201.wsUl5GoV-lkp@intel.com \
--to=lkp@intel.com \
--cc=jarkko@kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
/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.