# Re: \[RFC PATCH 3/3\] usbnet: Fix memory leak when rx\_submit() fails

- From: Bjørn Mork \<bjorn@mork.no\>
- Date: 2017-09-19 17:41:19 
- List: netdev
- Page: https://ratatoskr.run/netdev/2017/09/5091037
- Thread: https://ratatoskr.run/netdev/2017/09/5091037/t.md

```text
Douglas Anderson [ref] writes:

> If rx_submit() returns an error code then nobody calls usb_free_urb().
> That means it's leaked.

Nope.  rx_submit() will call usb_free_urb() before returning an error:


static int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
..
	if (!skb) {
		netif_dbg(dev, rx_err, dev->net, "no rx skb\n");
		usbnet_defer_kevent (dev, EVENT_RX_MEMORY);
		usb_free_urb (urb);
		return -ENOMEM;
	}
..
	if (retval) {
		dev_kfree_skb_any (skb);
		usb_free_urb (urb);
	}





Bjørn
```
