From: Lorenzo Bianconi <lorenzo@kernel.org>
To: kvalo@codeaurora.org
Cc: linux-wireless@vger.kernel.org, nbd@nbd.name,
lorenzo.bianconi@redhat.com, sean.wang@mediatek.com
Subject: Re: [PATCH wireless-drivers] mt76: mt7663u: fix memory leaks in mt7663u_probe
Date: Sun, 21 Jun 2020 18:01:25 +0200 [thread overview]
Message-ID: <20200621160125.GA271428@localhost.localdomain> (raw)
In-Reply-To: <f649a8c804e436a86f5482cca450a94b8ed86441.1592754254.git.lorenzo@kernel.org>
[-- Attachment #1: Type: text/plain, Size: 3341 bytes --]
> Fix the two following memory leaks in mt7663u_probe:
> 1- if device power-own times out, remove ieee80211 hw device.
> 2- if mt76u queues allocation fails, remove pending urbs.
Hi Kalle,
please drop this version since I spotted an issue, I am sending a v2.
Regards,
Lorenzo
>
> Fixes: eb99cc95c3b65 ("mt76: mt7615: introduce mt7663u support")
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---
> .../net/wireless/mediatek/mt76/mt7615/usb.c | 10 ++++-----
> drivers/net/wireless/mediatek/mt76/usb.c | 22 ++++++++++++++-----
> 2 files changed, 22 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/usb.c b/drivers/net/wireless/mediatek/mt76/mt7615/usb.c
> index a50077eb24d7..18a4dd59b7e4 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7615/usb.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7615/usb.c
> @@ -329,25 +329,25 @@ static int mt7663u_probe(struct usb_interface *usb_intf,
> if (!mt76_poll_msec(dev, MT_CONN_ON_MISC, MT_TOP_MISC2_FW_PWR_ON,
> FW_STATE_PWR_ON << 1, 500)) {
> dev_err(dev->mt76.dev, "Timeout for power on\n");
> - return -EIO;
> + goto error;
> }
>
> alloc_queues:
> ret = mt76u_alloc_mcu_queue(&dev->mt76);
> if (ret)
> - goto error;
> + goto error_free_q;
>
> ret = mt76u_alloc_queues(&dev->mt76);
> if (ret)
> - goto error;
> + goto error_free_q;
>
> ret = mt7663u_register_device(dev);
> if (ret)
> - goto error_freeq;
> + goto error_free_q;
>
> return 0;
>
> -error_freeq:
> +error_free_q:
> mt76u_queues_deinit(&dev->mt76);
> error:
> mt76u_deinit(&dev->mt76);
> diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c
> index fb97ea25b4d4..2e89b0514ff6 100644
> --- a/drivers/net/wireless/mediatek/mt76/usb.c
> +++ b/drivers/net/wireless/mediatek/mt76/usb.c
> @@ -1066,11 +1066,16 @@ static int mt76u_alloc_tx(struct mt76_dev *dev)
>
> static void mt76u_free_tx(struct mt76_dev *dev)
> {
> - struct mt76_queue *q;
> - int i, j;
> + int i;
>
> for (i = 0; i < IEEE80211_NUM_ACS; i++) {
> + struct mt76_queue *q;
> + int j;
> +
> q = dev->q_tx[i].q;
> + if (!q)
> + continue;
> +
> for (j = 0; j < q->ndesc; j++)
> usb_free_urb(q->entry[j].urb);
> }
> @@ -1078,17 +1083,22 @@ static void mt76u_free_tx(struct mt76_dev *dev)
>
> void mt76u_stop_tx(struct mt76_dev *dev)
> {
> - struct mt76_queue_entry entry;
> - struct mt76_queue *q;
> - int i, j, ret;
> + int ret;
>
> ret = wait_event_timeout(dev->tx_wait, !mt76_has_tx_pending(&dev->phy),
> HZ / 5);
> if (!ret) {
> + struct mt76_queue_entry entry;
> + struct mt76_queue *q;
> + int i, j;
> +
> dev_err(dev->dev, "timed out waiting for pending tx\n");
>
> for (i = 0; i < IEEE80211_NUM_ACS; i++) {
> q = dev->q_tx[i].q;
> + if (!q)
> + continue;
> +
> for (j = 0; j < q->ndesc; j++)
> usb_kill_urb(q->entry[j].urb);
> }
> @@ -1100,6 +1110,8 @@ void mt76u_stop_tx(struct mt76_dev *dev)
> */
> for (i = 0; i < IEEE80211_NUM_ACS; i++) {
> q = dev->q_tx[i].q;
> + if (!q)
> + continue;
>
> /* Assure we are in sync with killed tasklet. */
> spin_lock_bh(&q->lock);
> --
> 2.26.2
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
prev parent reply other threads:[~2020-06-21 16:01 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-21 15:51 [PATCH wireless-drivers] mt76: mt7663u: fix memory leaks in mt7663u_probe Lorenzo Bianconi
2020-06-21 16:01 ` Lorenzo Bianconi [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200621160125.GA271428@localhost.localdomain \
--to=lorenzo@kernel.org \
--cc=kvalo@codeaurora.org \
--cc=linux-wireless@vger.kernel.org \
--cc=lorenzo.bianconi@redhat.com \
--cc=nbd@nbd.name \
--cc=sean.wang@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox