| From ff854a3c75a3251cf5123a67f524fa1712310fbe Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 29 May 2018 21:02:12 +0200 |
| Subject: usb: gadget: uvc: configfs: Prevent format changes after linking |
| header |
| |
| From: Joel Pepper <joel.pepper@rwth-aachen.de> |
| |
| [ Upstream commit cb2200f7af8341aaf0c6abd7ba37e4c667c41639 ] |
| |
| While checks are in place to avoid attributes and children of a format |
| being manipulated after the format is linked into the streaming header, |
| the linked flag was never actually set, invalidating the protections. |
| Update the flag as appropriate in the header link calls. |
| |
| Signed-off-by: Joel Pepper <joel.pepper@rwth-aachen.de> |
| Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> |
| Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/usb/gadget/function/uvc_configfs.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| diff --git a/drivers/usb/gadget/function/uvc_configfs.c b/drivers/usb/gadget/function/uvc_configfs.c |
| index dc4edba95a478..9478a7cdb1433 100644 |
| --- a/drivers/usb/gadget/function/uvc_configfs.c |
| +++ b/drivers/usb/gadget/function/uvc_configfs.c |
| @@ -766,6 +766,7 @@ static int uvcg_streaming_header_allow_link(struct config_item *src, |
| format_ptr->fmt = target_fmt; |
| list_add_tail(&format_ptr->entry, &src_hdr->formats); |
| ++src_hdr->num_fmt; |
| + ++target_fmt->linked; |
| |
| out: |
| mutex_unlock(&opts->lock); |
| @@ -803,6 +804,8 @@ static void uvcg_streaming_header_drop_link(struct config_item *src, |
| break; |
| } |
| |
| + --target_fmt->linked; |
| + |
| out: |
| mutex_unlock(&opts->lock); |
| mutex_unlock(su_mutex); |
| -- |
| 2.20.1 |
| |