media: v4l: Safely to call v4l2_subdev_cleanup on an uninitialised subdev
authorSakari Ailus <sakari.ailus@linux.intel.com>
Thu, 7 Dec 2023 10:00:02 +0000 (12:00 +0200)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 13 Dec 2023 12:21:20 +0000 (13:21 +0100)
Graciously handle an uninitialised (but still zeroed) sub-device in
v4l2_subdev_cleanup(). The list_empty() check there is unnecessary, too,
so replace that by cheking whether the lists's next field is NULL.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/v4l2-core/v4l2-subdev.c

index 4fbefe4..1fa1acf 100644 (file)
@@ -1521,7 +1521,8 @@ void v4l2_subdev_cleanup(struct v4l2_subdev *sd)
        __v4l2_subdev_state_free(sd->active_state);
        sd->active_state = NULL;
 
-       if (list_empty(&sd->async_subdev_endpoint_list))
+       /* Uninitialised sub-device, bail out here. */
+       if (!sd->async_subdev_endpoint_list.next)
                return;
 
        list_for_each_entry_safe(ase, ase_tmp, &sd->async_subdev_endpoint_list,