media: core: v4l2-ioctl: check if ioctl is known to avoid NULL name
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Thu, 26 Oct 2023 11:54:01 +0000 (13:54 +0200)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Thu, 23 Nov 2023 12:01:32 +0000 (13:01 +0100)
When ioctl debugging is turned on, the v4l_printk_ioctl() is used
to log the ioctl that is called. It uses an array of ioctl information
to log the ioctl name and it correctly checks for out-of-bound indexing
of that array. However, the array may have holes since not all ioctl
numbers are used. In that case the name of the ioctl is NULL.

It is harmless (printk handles NULL pointers), but not intended. Instead
use the v4l2_is_known_ioctl() function to determine if the ioctl
information is available or not.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/v4l2-core/v4l2-ioctl.c

index 4d90424cbfc4eb545a3e904a280e78a41b6cfe61..33076af4dfdbd4d6298085801cf23ebc353225ae 100644 (file)
@@ -2951,7 +2951,7 @@ void v4l_printk_ioctl(const char *prefix, unsigned int cmd)
                type = "v4l2_int";
                break;
        case 'V':
-               if (_IOC_NR(cmd) >= V4L2_IOCTLS) {
+               if (!v4l2_is_known_ioctl(cmd)) {
                        type = "v4l2";
                        break;
                }