Home Home > GIT Browse > stable
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2019-05-17 06:38:43 +0200
committerJiri Slaby <jslaby@suse.cz>2019-05-17 06:38:48 +0200
commit847473abab08c0b87ab7487ae2a331c4520b9165 (patch)
tree84a76534cfa8121c462bcbe3b55762e34559f770
parent9a7aacaeb0e3521d75b5743d92c93b65b3ea7b64 (diff)
net: dsa: Fix error cleanup path in dsa_init_module
-rw-r--r--patches.kernel.org/5.1.3-019-net-dsa-Fix-error-cleanup-path-in-dsa_init_modu.patch89
-rw-r--r--series.conf1
2 files changed, 90 insertions, 0 deletions
diff --git a/patches.kernel.org/5.1.3-019-net-dsa-Fix-error-cleanup-path-in-dsa_init_modu.patch b/patches.kernel.org/5.1.3-019-net-dsa-Fix-error-cleanup-path-in-dsa_init_modu.patch
new file mode 100644
index 0000000000..ba0193b4d7
--- /dev/null
+++ b/patches.kernel.org/5.1.3-019-net-dsa-Fix-error-cleanup-path-in-dsa_init_modu.patch
@@ -0,0 +1,89 @@
+From: YueHaibing <yuehaibing@huawei.com>
+Date: Mon, 6 May 2019 23:25:29 +0800
+Subject: [PATCH] net: dsa: Fix error cleanup path in dsa_init_module
+References: bnc#1012628
+Patch-mainline: 5.1.3
+Git-commit: 68be930249d051fd54d3d99156b3dcadcb2a1f9b
+
+[ Upstream commit 68be930249d051fd54d3d99156b3dcadcb2a1f9b ]
+
+BUG: unable to handle kernel paging request at ffffffffa01c5430
+PGD 3270067 P4D 3270067 PUD 3271063 PMD 230bc5067 PTE 0
+Oops: 0000 [#1
+CPU: 0 PID: 6159 Comm: modprobe Not tainted 5.1.0+ #33
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
+RIP: 0010:raw_notifier_chain_register+0x16/0x40
+Code: 63 f8 66 90 e9 5d ff ff ff 90 90 90 90 90 90 90 90 90 90 90 55 48 8b 07 48 89 e5 48 85 c0 74 1c 8b 56 10 3b 50 10 7e 07 eb 12 <39> 50 10 7c 0d 48 8d 78 08 48 8b 40 08 48 85 c0 75 ee 48 89 46 08
+RSP: 0018:ffffc90001c33c08 EFLAGS: 00010282
+RAX: ffffffffa01c5420 RBX: ffffffffa01db420 RCX: 4fcef45928070a8b
+RDX: 0000000000000000 RSI: ffffffffa01db420 RDI: ffffffffa01b0068
+RBP: ffffc90001c33c08 R08: 000000003e0a33d0 R09: 0000000000000000
+R10: 0000000000000000 R11: 0000000094443661 R12: ffff88822c320700
+R13: ffff88823109be80 R14: 0000000000000000 R15: ffffc90001c33e78
+FS: 00007fab8bd08540(0000) GS:ffff888237a00000(0000) knlGS:0000000000000000
+CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: ffffffffa01c5430 CR3: 00000002297ea000 CR4: 00000000000006f0
+Call Trace:
+ register_netdevice_notifier+0x43/0x250
+ ? 0xffffffffa01e0000
+ dsa_slave_register_notifier+0x13/0x70 [dsa_core
+ ? 0xffffffffa01e0000
+ dsa_init_module+0x2e/0x1000 [dsa_core
+ do_one_initcall+0x6c/0x3cc
+ ? do_init_module+0x22/0x1f1
+ ? rcu_read_lock_sched_held+0x97/0xb0
+ ? kmem_cache_alloc_trace+0x325/0x3b0
+ do_init_module+0x5b/0x1f1
+ load_module+0x1db1/0x2690
+ ? m_show+0x1d0/0x1d0
+ __do_sys_finit_module+0xc5/0xd0
+ __x64_sys_finit_module+0x15/0x20
+ do_syscall_64+0x6b/0x1d0
+ entry_SYSCALL_64_after_hwframe+0x49/0xbe
+
+Cleanup allocated resourses if there are errors,
+otherwise it will trgger memleak.
+
+Fixes: c9eb3e0f8701 ("net: dsa: Add support for learning FDB through notification")
+Signed-off-by: YueHaibing <yuehaibing@huawei.com>
+Reviewed-by: Vivien Didelot <vivien.didelot@gmail.com>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ net/dsa/dsa.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c
+index 36de4f2a3366..cb080efdc7b3 100644
+--- a/net/dsa/dsa.c
++++ b/net/dsa/dsa.c
+@@ -344,15 +344,22 @@ static int __init dsa_init_module(void)
+
+ rc = dsa_slave_register_notifier();
+ if (rc)
+- return rc;
++ goto register_notifier_fail;
+
+ rc = dsa_legacy_register();
+ if (rc)
+- return rc;
++ goto legacy_register_fail;
+
+ dev_add_pack(&dsa_pack_type);
+
+ return 0;
++
++legacy_register_fail:
++ dsa_slave_unregister_notifier();
++register_notifier_fail:
++ destroy_workqueue(dsa_owq);
++
++ return rc;
+ }
+ module_init(dsa_init_module);
+
+--
+2.21.0
+
diff --git a/series.conf b/series.conf
index 633602774d..b3f63e3ae6 100644
--- a/series.conf
+++ b/series.conf
@@ -104,6 +104,7 @@
patches.kernel.org/5.1.3-016-dpaa_eth-fix-SG-frame-cleanup.patch
patches.kernel.org/5.1.3-017-fib_rules-return-0-directly-if-an-exactly-same-.patch
patches.kernel.org/5.1.3-018-ipv4-Fix-raw-socket-lookup-for-local-traffic.patch
+ patches.kernel.org/5.1.3-019-net-dsa-Fix-error-cleanup-path-in-dsa_init_modu.patch
########################################################
# Build fixes that apply to the vanilla kernel too.