diff mbox series

[net] net: hso: add failure handler for add_net_device

Message ID 20210902083609.1679146-1-william.xuanziyang@huawei.com (mailing list archive)
State Accepted
Commit ecdc28defc46af476566fffd9e5cb4495a2f176e
Delegated to: Netdev Maintainers
Headers show
Series [net] net: hso: add failure handler for add_net_device | expand

Checks

Context Check Description
netdev/cover_letter success Link
netdev/fixes_present success Link
netdev/patch_count success Link
netdev/tree_selection success Clearly marked for net
netdev/subject_prefix success Link
netdev/cc_maintainers fail 3 blamed authors not CCed: jgarzik@redhat.com gregkh@linuxfoundation.org alan@lxorguk.ukuu.org.uk; 7 maintainers not CCed: jgarzik@redhat.com alan@lxorguk.ukuu.org.uk gregkh@linuxfoundation.org kernel@esmil.dk mail@anirudhrb.com dan.carpenter@oracle.com jirislaby@kernel.org
netdev/source_inline success Was 0 now: 0
netdev/verify_signedoff success Link
netdev/module_param success Was 0 now: 0
netdev/build_32bit success Errors and warnings before: 5 this patch: 5
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/verify_fixes success Link
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 29 lines checked
netdev/build_allmodconfig_warn success Errors and warnings before: 5 this patch: 5
netdev/header_inline success Link

Commit Message

Ziyang Xuan (William) Sept. 2, 2021, 8:36 a.m. UTC
If the network devices connected to the system beyond
HSO_MAX_NET_DEVICES. add_net_device() in hso_create_net_device()
will be failed for the network_table is full. It will lead to
business failure which rely on network_table, for example,
hso_suspend() and hso_resume(). It will also lead to memory leak
because resource release process can not search the hso_device
object from network_table in hso_free_interface().

Add failure handler for add_net_device() in hso_create_net_device()
to solve the above problems.

Fixes: 72dc1c096c70 ("HSO: add option hso driver")
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
---
 drivers/net/usb/hso.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org Sept. 2, 2021, 11 a.m. UTC | #1
Hello:

This patch was applied to netdev/net.git (refs/heads/master):

On Thu, 2 Sep 2021 16:36:09 +0800 you wrote:
> If the network devices connected to the system beyond
> HSO_MAX_NET_DEVICES. add_net_device() in hso_create_net_device()
> will be failed for the network_table is full. It will lead to
> business failure which rely on network_table, for example,
> hso_suspend() and hso_resume(). It will also lead to memory leak
> because resource release process can not search the hso_device
> object from network_table in hso_free_interface().
> 
> [...]

Here is the summary with links:
  - [net] net: hso: add failure handler for add_net_device
    https://git.kernel.org/netdev/net/c/ecdc28defc46

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
diff mbox series

Patch

diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index 24bc1e678b7b..422a07fd8814 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -2535,13 +2535,17 @@  static struct hso_device *hso_create_net_device(struct usb_interface *interface,
 	if (!hso_net->mux_bulk_tx_buf)
 		goto err_free_tx_urb;
 
-	add_net_device(hso_dev);
+	result = add_net_device(hso_dev);
+	if (result) {
+		dev_err(&interface->dev, "Failed to add net device\n");
+		goto err_free_tx_buf;
+	}
 
 	/* registering our net device */
 	result = register_netdev(net);
 	if (result) {
 		dev_err(&interface->dev, "Failed to register device\n");
-		goto err_free_tx_buf;
+		goto err_rmv_ndev;
 	}
 
 	hso_log_port(hso_dev);
@@ -2550,8 +2554,9 @@  static struct hso_device *hso_create_net_device(struct usb_interface *interface,
 
 	return hso_dev;
 
-err_free_tx_buf:
+err_rmv_ndev:
 	remove_net_device(hso_dev);
+err_free_tx_buf:
 	kfree(hso_net->mux_bulk_tx_buf);
 err_free_tx_urb:
 	usb_free_urb(hso_net->mux_bulk_tx_urb);