From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Hulk Robot <hulkci@huawei.com>,
Mao Wenan <maowenan@huawei.com>,
"David S. Miller" <davem@davemloft.net>
Subject: [PATCH 5.0 09/43] net: hsr: fix memory leak in hsr_dev_finalize()
Date: Mon, 18 Mar 2019 10:24:01 +0100 [thread overview]
Message-ID: <20190318083716.147391757@linuxfoundation.org> (raw)
In-Reply-To: <20190318083715.877441740@linuxfoundation.org>
5.0-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mao Wenan <maowenan@huawei.com>
[ Upstream commit 3dc6da493a29dbeda9f13b637bd9c02c414b2261 ]
If hsr_add_port(hsr, hsr_dev, HSR_PT_MASTER) failed to
add port, it directly returns res and forgets to free the node
that allocated in hsr_create_self_node(), and forgets to delete
the node->mac_list linked in hsr->self_node_db.
BUG: memory leak
unreferenced object 0xffff8881cfa0c780 (size 64):
comm "syz-executor.0", pid 2077, jiffies 4294717969 (age 2415.377s)
hex dump (first 32 bytes):
e0 c7 a0 cf 81 88 ff ff 00 02 00 00 00 00 ad de ................
00 e6 49 cd 81 88 ff ff c0 9b 87 d0 81 88 ff ff ..I.............
backtrace:
[<00000000e2ff5070>] hsr_dev_finalize+0x736/0x960 [hsr]
[<000000003ed2e597>] hsr_newlink+0x2b2/0x3e0 [hsr]
[<000000003fa8c6b6>] __rtnl_newlink+0xf1f/0x1600 net/core/rtnetlink.c:3182
[<000000001247a7ad>] rtnl_newlink+0x66/0x90 net/core/rtnetlink.c:3240
[<00000000e7d1b61d>] rtnetlink_rcv_msg+0x54e/0xb90 net/core/rtnetlink.c:5130
[<000000005556bd3a>] netlink_rcv_skb+0x129/0x340 net/netlink/af_netlink.c:2477
[<00000000741d5ee6>] netlink_unicast_kernel net/netlink/af_netlink.c:1310 [inline]
[<00000000741d5ee6>] netlink_unicast+0x49a/0x650 net/netlink/af_netlink.c:1336
[<000000009d56f9b7>] netlink_sendmsg+0x88b/0xdf0 net/netlink/af_netlink.c:1917
[<0000000046b35c59>] sock_sendmsg_nosec net/socket.c:621 [inline]
[<0000000046b35c59>] sock_sendmsg+0xc3/0x100 net/socket.c:631
[<00000000d208adc9>] __sys_sendto+0x33e/0x560 net/socket.c:1786
[<00000000b582837a>] __do_sys_sendto net/socket.c:1798 [inline]
[<00000000b582837a>] __se_sys_sendto net/socket.c:1794 [inline]
[<00000000b582837a>] __x64_sys_sendto+0xdd/0x1b0 net/socket.c:1794
[<00000000c866801d>] do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
[<00000000fea382d9>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
[<00000000e01dacb3>] 0xffffffffffffffff
Fixes: c5a759117210 ("net/hsr: Use list_head (and rcu) instead of array for slave devices.")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Mao Wenan <maowenan@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/hsr/hsr_device.c | 4 +++-
net/hsr/hsr_framereg.c | 12 ++++++++++++
net/hsr/hsr_framereg.h | 1 +
3 files changed, 16 insertions(+), 1 deletion(-)
--- a/net/hsr/hsr_device.c
+++ b/net/hsr/hsr_device.c
@@ -486,7 +486,7 @@ int hsr_dev_finalize(struct net_device *
res = hsr_add_port(hsr, hsr_dev, HSR_PT_MASTER);
if (res)
- return res;
+ goto err_add_port;
res = register_netdevice(hsr_dev);
if (res)
@@ -506,6 +506,8 @@ int hsr_dev_finalize(struct net_device *
fail:
hsr_for_each_port(hsr, port)
hsr_del_port(port);
+err_add_port:
+ hsr_del_node(&hsr->self_node_db);
return res;
}
--- a/net/hsr/hsr_framereg.c
+++ b/net/hsr/hsr_framereg.c
@@ -124,6 +124,18 @@ int hsr_create_self_node(struct list_hea
return 0;
}
+void hsr_del_node(struct list_head *self_node_db)
+{
+ struct hsr_node *node;
+
+ rcu_read_lock();
+ node = list_first_or_null_rcu(self_node_db, struct hsr_node, mac_list);
+ rcu_read_unlock();
+ if (node) {
+ list_del_rcu(&node->mac_list);
+ kfree(node);
+ }
+}
/* Allocate an hsr_node and add it to node_db. 'addr' is the node's AddressA;
* seq_out is used to initialize filtering of outgoing duplicate frames
--- a/net/hsr/hsr_framereg.h
+++ b/net/hsr/hsr_framereg.h
@@ -16,6 +16,7 @@
struct hsr_node;
+void hsr_del_node(struct list_head *self_node_db);
struct hsr_node *hsr_add_node(struct list_head *node_db, unsigned char addr[],
u16 seq_out);
struct hsr_node *hsr_get_node(struct hsr_port *port, struct sk_buff *skb,
next prev parent reply other threads:[~2019-03-18 9:46 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-18 9:23 [PATCH 5.0 00/43] 5.0.3-stable review Greg Kroah-Hartman
2019-03-18 9:23 ` [PATCH 5.0 01/43] connector: fix unsafe usage of ->real_parent Greg Kroah-Hartman
2019-03-18 9:23 ` [PATCH 5.0 02/43] fou, fou6: avoid uninit-value in gue_err() and gue6_err() Greg Kroah-Hartman
2019-03-18 9:23 ` [PATCH 5.0 03/43] gro_cells: make sure device is up in gro_cells_receive() Greg Kroah-Hartman
2019-03-18 9:23 ` [PATCH 5.0 04/43] ipv4/route: fail early when inet dev is missing Greg Kroah-Hartman
2019-03-18 9:23 ` [PATCH 5.0 05/43] l2tp: fix infoleak in l2tp_ip6_recvmsg() Greg Kroah-Hartman
2019-03-18 9:23 ` [PATCH 5.0 06/43] lan743x: Fix RX Kernel Panic Greg Kroah-Hartman
2019-03-18 9:23 ` [PATCH 5.0 07/43] lan743x: Fix TX Stall Issue Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 08/43] net: hns3: add dma_rmb() for rx description Greg Kroah-Hartman
2019-03-18 9:24 ` Greg Kroah-Hartman [this message]
2019-03-18 9:24 ` [PATCH 5.0 10/43] net/hsr: fix possible crash in add_timer() Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 11/43] net: sit: fix UBSAN Undefined behaviour in check_6rd Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 12/43] net/x25: fix use-after-free in x25_device_event() Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 13/43] net/x25: reset state in x25_connect() Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 14/43] pptp: dst_release sk_dst_cache in pptp_sock_destruct Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 15/43] ravb: Decrease TxFIFO depth of Q3 and Q2 to one Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 16/43] route: set the deleted fnhe fnhe_daddr to 0 in ip_del_fnhe to fix a race Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 17/43] rxrpc: Fix client call queueing, waiting for channel Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 18/43] sctp: remove sched init from sctp_stream_init Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 19/43] tcp: do not report TCP_CM_INQ of 0 for closed connections Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 20/43] tcp: Dont access TCP_SKB_CB before initializing it Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 21/43] tcp: handle inet_csk_reqsk_queue_add() failures Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 22/43] vxlan: Fix GRO cells race condition between receive and link delete Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 23/43] vxlan: test dev->flags & IFF_UP before calling gro_cells_receive() Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 24/43] net/mlx4_core: Fix reset flow when in command polling mode Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 25/43] net/mlx4_core: Fix locking in SRIOV mode when switching between events and polling Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 26/43] net/mlx4_core: Fix qp mtt size calculation Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 27/43] net: dsa: mv88e6xxx: Set correct interface mode for CPU/DSA ports Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 28/43] net: hns3: fix to stop multiple HNS reset due to the AER changes Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 29/43] vsock/virtio: fix kernel panic from virtio_transport_reset_no_sock Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 30/43] net: sched: flower: insert new filter to idr after setting its mask Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 31/43] f2fs: wait on atomic writes to count F2FS_CP_WB_DATA Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 32/43] perf/x86: Fixup typo in stub functions Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 33/43] ALSA: bebob: use more identical mod_alias for Saffire Pro 10 I/O against Liquid Saffire 56 Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 34/43] ALSA: firewire-motu: fix construction of PCM frame for capture direction Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 35/43] ALSA: hda: Extend i915 component bind timeout Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 36/43] ALSA: hda - add more quirks for HP Z2 G4 and HP Z240 Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 37/43] ALSA: hda/realtek: Enable audio jacks of ASUS UX362FA with ALC294 Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 38/43] ALSA: hda/realtek - Reduce click noise on Dell Precision 5820 headphone Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 39/43] ALSA: hda/realtek: Enable headset MIC of Acer TravelMate X514-51T with ALC255 Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 40/43] perf/x86/intel: Fix memory corruption Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 41/43] perf/x86/intel: Make dev_attr_allow_tsx_force_abort static Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 42/43] Its wrong to add len to sector_nr in raid10 reshape twice Greg Kroah-Hartman
2019-03-18 9:24 ` [PATCH 5.0 43/43] drm: Block fb changes for async plane updates Greg Kroah-Hartman
2019-03-19 2:26 ` [PATCH 5.0 00/43] 5.0.3-stable review Guenter Roeck
2019-03-19 12:19 ` Greg Kroah-Hartman
2019-03-19 2:54 ` Naresh Kamboju
2019-03-19 12:20 ` Greg Kroah-Hartman
2019-03-19 10:34 ` Jon Hunter
2019-03-19 12:17 ` Greg Kroah-Hartman
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=20190318083716.147391757@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=davem@davemloft.net \
--cc=hulkci@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maowenan@huawei.com \
--cc=stable@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).