diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-12-23 03:55:27 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-12-23 03:55:27 -0800 |
| commit | 8a97b8e1e05deab53f15f6f744ee8776737e3e28 (patch) | |
| tree | 9c5f8d05de42cecbb2cf8849bdc953b6937ff850 /drivers/usb/gadget/function | |
| parent | 711ba9b4ec9dfcd2b13c8639f9e3979bd2e17d4f (diff) | |
| parent | c2e31d922c522757be5275c591800f71b6210bc6 (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.c | 13 |
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); |
