]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
media: v4l: Make media_entity_to_video_device() NULL-safe
authorSakari Ailus <sakari.ailus@linux.intel.com>
Wed, 11 Jun 2025 12:40:42 +0000 (15:40 +0300)
committerHans Verkuil <hverkuil@xs4all.nl>
Thu, 10 Jul 2025 09:32:23 +0000 (11:32 +0200)
Make media_entity_to_video_device(NULL) return NULL, instead of an invalid
pointer value.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
include/media/v4l2-dev.h

index 1b6222fab24eda96cbe459b435431c01f7259366..a69801274800f4f9add723b51fe0a31331e88f97 100644 (file)
@@ -313,10 +313,16 @@ struct video_device {
  * media_entity_to_video_device - Returns a &struct video_device from
  *     the &struct media_entity embedded on it.
  *
- * @__entity: pointer to &struct media_entity
- */
-#define media_entity_to_video_device(__entity) \
-       container_of(__entity, struct video_device, entity)
+ * @__entity: pointer to &struct media_entity, may be NULL
+ */
+#define media_entity_to_video_device(__entity)                         \
+({                                                                     \
+       typeof(__entity) __me_vdev_ent = __entity;                      \
+                                                                       \
+       __me_vdev_ent ?                                                 \
+               container_of(__me_vdev_ent,  struct video_device, entity) : \
+               NULL;                                                   \
+})
 
 /**
  * to_video_device - Returns a &struct video_device from the