summaryrefslogtreecommitdiff
path: root/drivers/usb/gadget/function
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-12-23 03:55:27 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-12-23 03:55:27 -0800
commit8a97b8e1e05deab53f15f6f744ee8776737e3e28 (patch)
tree9c5f8d05de42cecbb2cf8849bdc953b6937ff850 /drivers/usb/gadget/function
parent711ba9b4ec9dfcd2b13c8639f9e3979bd2e17d4f (diff)
parentc2e31d922c522757be5275c591800f71b6210bc6 (diff)
Merge "usb: gadget: f_qc_rndis: Fix double-free in qcrndis_free_inst"
Diffstat (limited to 'drivers/usb/gadget/function')
-rw-r--r--drivers/usb/gadget/function/f_qc_rndis.c13
1 files changed, 1 insertions, 12 deletions
diff --git a/drivers/usb/gadget/function/f_qc_rndis.c b/drivers/usb/gadget/function/f_qc_rndis.c
index ede1c8dd51a6..5ebac7ece209 100644
--- a/drivers/usb/gadget/function/f_qc_rndis.c
+++ b/drivers/usb/gadget/function/f_qc_rndis.c
@@ -1347,19 +1347,16 @@ static struct miscdevice rndis_qc_device = {
static void qcrndis_free_inst(struct usb_function_instance *f)
{
- struct f_rndis_qc *rndis;
struct f_rndis_qc_opts *opts = container_of(f,
struct f_rndis_qc_opts, func_inst);
unsigned long flags;
- rndis = opts->rndis;
misc_deregister(&rndis_qc_device);
ipa_data_free(USB_IPA_FUNC_RNDIS);
spin_lock_irqsave(&rndis_lock, flags);
- kfree(rndis);
- _rndis_qc = NULL;
kfree(opts->rndis);
+ _rndis_qc = NULL;
kfree(opts);
spin_unlock_irqrestore(&rndis_lock, flags);
}
@@ -1441,13 +1438,6 @@ static struct usb_function_instance *qcrndis_alloc_inst(void)
return &opts->func_inst;
}
-static void rndis_qc_cleanup(void)
-{
- pr_info("rndis QC cleanup\n");
-
- misc_deregister(&rndis_qc_device);
-}
-
void *rndis_qc_get_ipa_rx_cb(void)
{
return rndis_ipa_params.ipa_rx_notify;
@@ -1485,7 +1475,6 @@ static int __init usb_qcrndis_init(void)
static void __exit usb_qcrndis_exit(void)
{
usb_function_unregister(&rndis_bamusb_func);
- rndis_qc_cleanup();
}
module_init(usb_qcrndis_init);