media: media-device: fix ioctl function types
PATCH 1/1 media: media-device: fix ioctl function types
This change fixes function types for media device ioctls to avoid indirect call mismatches with Control-Flow Integrity checking.
--- drivers/media/media-device.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-)
drivers/media/media-device.c +11 -10
@@ -54,9 +54,10 @@ static int media_device_close(struct file *filp)return 0 ; } -static int media_device_get_info (struct media_device *dev, -struct media_device_info *info) +static long media_device_get_info (struct media_device *dev,void *arg) { +struct media_device_info *info = (struct media_device_info *)arg; +memset (info,0 ,sizeof (*info));if (dev->driver_name[0 ])
@@ -93,9 +94,9 @@ static struct media_entity *find_entity(struct media_device *mdev, u32 id)return NULL ; } -static long media_device_enum_entities (struct media_device *mdev, -struct media_entity_desc *entd) +static long media_device_enum_entities (struct media_device *mdev,void *arg) { +struct media_entity_desc *entd = (struct media_entity_desc *)arg;struct media_entity *ent; ent =find_entity (mdev, entd->id);
@@ -146,9 +147,9 @@ static void media_device_kpad_to_upad(const struct media_pad *kpad, upad->flags = kpad->flags; } -static long media_device_enum_links (struct media_device *mdev, -struct media_links_enum *links) +static long media_device_enum_links (struct media_device *mdev,void *arg) { +struct media_links_enum *links = (struct media_links_enum *)arg;struct media_entity *entity; entity =find_entity (mdev, links->entity);
@@ -195,9 +196,9 @@ static long media_device_enum_links(struct media_device *mdev,return 0 ; } -static long media_device_setup_link (struct media_device *mdev, -struct media_link_desc *linkd) +static long media_device_setup_link (struct media_device *mdev,void *arg) { +struct media_link_desc *linkd = (struct media_link_desc *)arg;struct media_link *link =NULL ;struct media_entity *source;struct media_entity *sink;
@@ -225,9 +226,9 @@ static long media_device_setup_link(struct media_device *mdev,return __media_entity_setup_link (link, linkd->flags); } -static long media_device_get_topology (struct media_device *mdev, -struct media_v2_topology *topo) +static long media_device_get_topology (struct media_device *mdev,void *arg) { +struct media_v2_topology *topo = (struct media_v2_topology *)arg;struct media_entity *entity;struct media_interface *intf;struct media_pad *pad;
Signature · 1 line
2.17.0.441.gb46fe60e1d-goog
Quoted 4 lines · Sami Tolvanen
This change fixes function types for media device ioctls to avoid indirect call mismatches with Control-Flow Integrity checking.
Signed-off-by Sami Tolvanen <[email protected]>
Thanks for sending these!
-Kees
Quoted 72 lines
--- drivers/media/media-device.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-)drivers/media/media-device.c +11
-11@@ -54,9 +54,10 @@ static int media_device_close(struct file *filp)return 0 ; } -static int media_device_get_info (struct media_device *dev, -struct media_device_info *info) +static long media_device_get_info (struct media_device *dev,void *arg) { +struct media_device_info *info = (struct media_device_info *)arg; +memset (info,0 ,sizeof (*info));if (dev->driver_name[0 ])@@ -93,9 +94,9 @@ static struct media_entity *find_entity(struct media_device *mdev, u32 id)return NULL ; } -static long media_device_enum_entities (struct media_device *mdev, -struct media_entity_desc *entd) +static long media_device_enum_entities (struct media_device *mdev,void *arg) { +struct media_entity_desc *entd = (struct media_entity_desc *)arg;struct media_entity *ent; ent =find_entity (mdev, entd->id);@@ -146,9 +147,9 @@ static void media_device_kpad_to_upad(const struct media_pad *kpad, upad->flags = kpad->flags; } -static long media_device_enum_links (struct media_device *mdev, -struct media_links_enum *links) +static long media_device_enum_links (struct media_device *mdev,void *arg) { +struct media_links_enum *links = (struct media_links_enum *)arg;struct media_entity *entity; entity =find_entity (mdev, links->entity);@@ -195,9 +196,9 @@ static long media_device_enum_links(struct media_device *mdev,return 0 ; } -static long media_device_setup_link (struct media_device *mdev, -struct media_link_desc *linkd) +static long media_device_setup_link (struct media_device *mdev,void *arg) { +struct media_link_desc *linkd = (struct media_link_desc *)arg;struct media_link *link =NULL ;struct media_entity *source;struct media_entity *sink;@@ -225,9 +226,9 @@ static long media_device_setup_link(struct media_device *mdev,return __media_entity_setup_link (link, linkd->flags); } -static long media_device_get_topology (struct media_device *mdev, -struct media_v2_topology *topo) +static long media_device_get_topology (struct media_device *mdev,void *arg) { +struct media_v2_topology *topo = (struct media_v2_topology *)arg;struct media_entity *entity;struct media_interface *intf;struct media_pad *pad; --2.17.0.441.gb46fe60e1d-goog
Signature · 2 lines
Kees Cook Pixel Security
Moi,
Quoted 13 lines · Sami Tolvanen
This change fixes function types for media device ioctls to avoid indirect call mismatches with Control-Flow Integrity checking.
Signed-off-by Sami Tolvanen <[email protected]>--- drivers/media/media-device.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-)drivers/media/media-device.c +0
-0
drivers/media/media-device.c static int media_device_close(struct file *filp) · line 59
Quoted 8 lines
drivers/media/media-device.c +2
-2@@ -54,9 +54,10 @@ static int media_device_close(struct file *filp)return 0 ; } -static int media_device_get_info (struct media_device *dev, -struct media_device_info *info) +static long media_device_get_info (struct media_device *dev,void *arg) { +struct media_device_info *info = (struct media_device_info *)arg;
How about removing the cast? It's not really needed.
Same below.
Quoted 52 lines
drivers/media/media-device.c +9
-8+memset (info,0 ,sizeof (*info));if (dev->driver_name[0 ])@@ -93,9 +94,9 @@ static struct media_entity *find_entity(struct media_device *mdev, u32 id)return NULL ; } -static long media_device_enum_entities (struct media_device *mdev, -struct media_entity_desc *entd) +static long media_device_enum_entities (struct media_device *mdev,void *arg) { +struct media_entity_desc *entd = (struct media_entity_desc *)arg;struct media_entity *ent; ent =find_entity (mdev, entd->id);@@ -146,9 +147,9 @@ static void media_device_kpad_to_upad(const struct media_pad *kpad, upad->flags = kpad->flags; } -static long media_device_enum_links (struct media_device *mdev, -struct media_links_enum *links) +static long media_device_enum_links (struct media_device *mdev,void *arg) { +struct media_links_enum *links = (struct media_links_enum *)arg;struct media_entity *entity; entity =find_entity (mdev, links->entity);@@ -195,9 +196,9 @@ static long media_device_enum_links(struct media_device *mdev,return 0 ; } -static long media_device_setup_link (struct media_device *mdev, -struct media_link_desc *linkd) +static long media_device_setup_link (struct media_device *mdev,void *arg) { +struct media_link_desc *linkd = (struct media_link_desc *)arg;struct media_link *link =NULL ;struct media_entity *source;struct media_entity *sink;@@ -225,9 +226,9 @@ static long media_device_setup_link(struct media_device *mdev,return __media_entity_setup_link (link, linkd->flags); } -static long media_device_get_topology (struct media_device *mdev, -struct media_v2_topology *topo) +static long media_device_get_topology (struct media_device *mdev,void *arg) { +struct media_v2_topology *topo = (struct media_v2_topology *)arg;struct media_entity *entity;struct media_interface *intf;struct media_pad *pad;
Signature · 2 lines
Sakari Ailus e-mail: [email protected]
PATCH v2 1/1 media: media-device: fix ioctl function types
This change fixes function types for media device ioctls to avoid indirect call mismatches with Control-Flow Integrity checking.
--- drivers/media/media-device.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-)
drivers/media/media-device.c +11 -10
@@ -54,9 +54,10 @@ static int media_device_close(struct file *filp)return 0 ; } -static int media_device_get_info (struct media_device *dev, -struct media_device_info *info) +static long media_device_get_info (struct media_device *dev,void *arg) { +struct media_device_info *info = arg; +memset (info,0 ,sizeof (*info));if (dev->driver_name[0 ])
@@ -93,9 +94,9 @@ static struct media_entity *find_entity(struct media_device *mdev, u32 id)return NULL ; } -static long media_device_enum_entities (struct media_device *mdev, -struct media_entity_desc *entd) +static long media_device_enum_entities (struct media_device *mdev,void *arg) { +struct media_entity_desc *entd = arg;struct media_entity *ent; ent =find_entity (mdev, entd->id);
@@ -146,9 +147,9 @@ static void media_device_kpad_to_upad(const struct media_pad *kpad, upad->flags = kpad->flags; } -static long media_device_enum_links (struct media_device *mdev, -struct media_links_enum *links) +static long media_device_enum_links (struct media_device *mdev,void *arg) { +struct media_links_enum *links = arg;struct media_entity *entity; entity =find_entity (mdev, links->entity);
@@ -195,9 +196,9 @@ static long media_device_enum_links(struct media_device *mdev,return 0 ; } -static long media_device_setup_link (struct media_device *mdev, -struct media_link_desc *linkd) +static long media_device_setup_link (struct media_device *mdev,void *arg) { +struct media_link_desc *linkd = arg;struct media_link *link =NULL ;struct media_entity *source;struct media_entity *sink;
@@ -225,9 +226,9 @@ static long media_device_setup_link(struct media_device *mdev,return __media_entity_setup_link (link, linkd->flags); } -static long media_device_get_topology (struct media_device *mdev, -struct media_v2_topology *topo) +static long media_device_get_topology (struct media_device *mdev,void *arg) { +struct media_v2_topology *topo = arg;struct media_entity *entity;struct media_interface *intf;struct media_pad *pad;
Signature · 1 line
2.17.0.441.gb46fe60e1d-goog
Quoted 4 lines · Sami Tolvanen
This change fixes function types for media device ioctls to avoid indirect call mismatches with Control-Flow Integrity checking.
Signed-off-by Sami Tolvanen <[email protected]>
Kiitos!
Signature · 2 lines
Sakari Ailus e-mail: [email protected]
Hi Sami,
This is unchanged from the previous version, right? I've already added that to a pull request.
If this v2 has changes, then let me know asap.
Regards,
Hans
Quoted 74 lines · Sami Tolvanen
This change fixes function types for media device ioctls to avoid indirect call mismatches with Control-Flow Integrity checking.
Signed-off-by Sami Tolvanen <[email protected]>--- drivers/media/media-device.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-)drivers/media/media-device.c +11
-10@@ -54,9 +54,10 @@ static int media_device_close(struct file *filp)return 0 ; } -static int media_device_get_info (struct media_device *dev, -struct media_device_info *info) +static long media_device_get_info (struct media_device *dev,void *arg) { +struct media_device_info *info = arg; +memset (info,0 ,sizeof (*info));if (dev->driver_name[0 ])@@ -93,9 +94,9 @@ static struct media_entity *find_entity(struct media_device *mdev, u32 id)return NULL ; } -static long media_device_enum_entities (struct media_device *mdev, -struct media_entity_desc *entd) +static long media_device_enum_entities (struct media_device *mdev,void *arg) { +struct media_entity_desc *entd = arg;struct media_entity *ent; ent =find_entity (mdev, entd->id);@@ -146,9 +147,9 @@ static void media_device_kpad_to_upad(const struct media_pad *kpad, upad->flags = kpad->flags; } -static long media_device_enum_links (struct media_device *mdev, -struct media_links_enum *links) +static long media_device_enum_links (struct media_device *mdev,void *arg) { +struct media_links_enum *links = arg;struct media_entity *entity; entity =find_entity (mdev, links->entity);@@ -195,9 +196,9 @@ static long media_device_enum_links(struct media_device *mdev,return 0 ; } -static long media_device_setup_link (struct media_device *mdev, -struct media_link_desc *linkd) +static long media_device_setup_link (struct media_device *mdev,void *arg) { +struct media_link_desc *linkd = arg;struct media_link *link =NULL ;struct media_entity *source;struct media_entity *sink;@@ -225,9 +226,9 @@ static long media_device_setup_link(struct media_device *mdev,return __media_entity_setup_link (link, linkd->flags); } -static long media_device_get_topology (struct media_device *mdev, -struct media_v2_topology *topo) +static long media_device_get_topology (struct media_device *mdev,void *arg) { +struct media_v2_topology *topo = arg;struct media_entity *entity;struct media_interface *intf;struct media_pad *pad;
Quoted 4 lines · Hans Verkuil
Hi Sami,
This is unchanged from the previous version, right? I've already added that to a pull request.
Casting has been removed from the void pointers as I suggested. That's the difference.
Quoted 83 lines
If this v2 has changes, then let me know asap.
Regards,
Hans
Quoted 74 lines · Sami Tolvanen
This change fixes function types for media device ioctls to avoid indirect call mismatches with Control-Flow Integrity checking.
Signed-off-by Sami Tolvanen <[email protected]>--- drivers/media/media-device.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-)drivers/media/media-device.c +11
-10@@ -54,9 +54,10 @@ static int media_device_close(struct file *filp)return 0 ; } -static int media_device_get_info (struct media_device *dev, -struct media_device_info *info) +static long media_device_get_info (struct media_device *dev,void *arg) { +struct media_device_info *info = arg; +memset (info,0 ,sizeof (*info));if (dev->driver_name[0 ])@@ -93,9 +94,9 @@ static struct media_entity *find_entity(struct media_device *mdev, u32 id)return NULL ; } -static long media_device_enum_entities (struct media_device *mdev, -struct media_entity_desc *entd) +static long media_device_enum_entities (struct media_device *mdev,void *arg) { +struct media_entity_desc *entd = arg;struct media_entity *ent; ent =find_entity (mdev, entd->id);@@ -146,9 +147,9 @@ static void media_device_kpad_to_upad(const struct media_pad *kpad, upad->flags = kpad->flags; } -static long media_device_enum_links (struct media_device *mdev, -struct media_links_enum *links) +static long media_device_enum_links (struct media_device *mdev,void *arg) { +struct media_links_enum *links = arg;struct media_entity *entity; entity =find_entity (mdev, links->entity);@@ -195,9 +196,9 @@ static long media_device_enum_links(struct media_device *mdev,return 0 ; } -static long media_device_setup_link (struct media_device *mdev, -struct media_link_desc *linkd) +static long media_device_setup_link (struct media_device *mdev,void *arg) { +struct media_link_desc *linkd = arg;struct media_link *link =NULL ;struct media_entity *source;struct media_entity *sink;@@ -225,9 +226,9 @@ static long media_device_setup_link(struct media_device *mdev,return __media_entity_setup_link (link, linkd->flags); } -static long media_device_get_topology (struct media_device *mdev, -struct media_v2_topology *topo) +static long media_device_get_topology (struct media_device *mdev,void *arg) { +struct media_v2_topology *topo = arg;struct media_entity *entity;struct media_interface *intf;struct media_pad *pad;
Signature · 2 lines
Sakari Ailus e-mail: [email protected]