Skip to content

Commit 8d8c68b

Browse files
Kuen-Han Tsaigregkh
authored andcommitted
usb: gadget: f_rndis: Protect RNDIS options with mutex
The class/subclass/protocol options are suspectible to race conditions as they can be accessed concurrently through configfs. Use existing mutex to protect these options. This issue was identified during code inspection. Fixes: 73517cf ("usb: gadget: add RNDIS configfs options for class/subclass/protocol") Cc: stable@vger.kernel.org Signed-off-by: Kuen-Han Tsai <khtsai@google.com> Link: https://patch.msgid.link/20260320-usb-net-lifecycle-v1-2-4886b578161b@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent caa2792 commit 8d8c68b

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

drivers/usb/gadget/function/f_rndis.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
/* #define VERBOSE_DEBUG */
1313

14+
#include <linux/cleanup.h>
1415
#include <linux/slab.h>
1516
#include <linux/kernel.h>
1617
#include <linux/module.h>
@@ -678,9 +679,11 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)
678679
return -ENOMEM;
679680
}
680681

681-
rndis_iad_descriptor.bFunctionClass = rndis_opts->class;
682-
rndis_iad_descriptor.bFunctionSubClass = rndis_opts->subclass;
683-
rndis_iad_descriptor.bFunctionProtocol = rndis_opts->protocol;
682+
scoped_guard(mutex, &rndis_opts->lock) {
683+
rndis_iad_descriptor.bFunctionClass = rndis_opts->class;
684+
rndis_iad_descriptor.bFunctionSubClass = rndis_opts->subclass;
685+
rndis_iad_descriptor.bFunctionProtocol = rndis_opts->protocol;
686+
}
684687

685688
/*
686689
* in drivers/usb/gadget/configfs.c:configfs_composite_bind()

0 commit comments

Comments
 (0)