OSDN Git Service
(root)
/
uclinux-h8
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
65ad3ef
)
mac80211: mesh: Free ie data when leaving mesh
author
Remi Pommarel
<repk@triplefau.lt>
Sat, 4 Jul 2020 13:50:07 +0000
(15:50 +0200)
committer
Johannes Berg
<johannes.berg@intel.com>
Thu, 30 Jul 2020 08:23:35 +0000
(10:23 +0200)
At ieee80211_join_mesh() some ie data could have been allocated (see
copy_mesh_setup()) and need to be cleaned up when leaving the mesh.
This fixes the following kmemleak report:
unreferenced object 0xffff0000116bc600 (size 128):
comm "wpa_supplicant", pid 608, jiffies
4294898983
(age 293.484s)
hex dump (first 32 bytes):
30 14 01 00 00 0f ac 04 01 00 00 0f ac 04 01 00 0...............
00 0f ac 08 00 00 00 00 c4 65 40 00 00 00 00 00 .........e@.....
backtrace:
[<
00000000bebe439d
>] __kmalloc_track_caller+0x1c0/0x330
[<
00000000a349dbe1
>] kmemdup+0x28/0x50
[<
0000000075d69baa
>] ieee80211_join_mesh+0x6c/0x3b8 [mac80211]
[<
00000000683bb98b
>] __cfg80211_join_mesh+0x1e8/0x4f0 [cfg80211]
[<
0000000072cb507f
>] nl80211_join_mesh+0x520/0x6b8 [cfg80211]
[<
0000000077e9bcf9
>] genl_family_rcv_msg+0x374/0x680
[<
00000000b1bd936d
>] genl_rcv_msg+0x78/0x108
[<
0000000022c53788
>] netlink_rcv_skb+0xb0/0x1c0
[<
0000000011af8ec9
>] genl_rcv+0x34/0x48
[<
0000000069e41f53
>] netlink_unicast+0x268/0x2e8
[<
00000000a7517316
>] netlink_sendmsg+0x320/0x4c0
[<
0000000069cba205
>] ____sys_sendmsg+0x354/0x3a0
[<
00000000e06bab0f
>] ___sys_sendmsg+0xd8/0x120
[<
0000000037340728
>] __sys_sendmsg+0xa4/0xf8
[<
000000004fed9776
>] __arm64_sys_sendmsg+0x44/0x58
[<
000000001c1e5647
>] el0_svc_handler+0xd0/0x1a0
Fixes:
c80d545da3f7
(mac80211: Let userspace enable and configure vendor specific path selection.)
Signed-off-by: Remi Pommarel <repk@triplefau.lt>
Link:
https://lore.kernel.org/r/20200704135007.27292-1-repk@triplefau.lt
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/cfg.c
patch
|
blob
|
history
diff --git
a/net/mac80211/cfg.c
b/net/mac80211/cfg.c
index
9b36054
..
1079a07
100644
(file)
--- a/
net/mac80211/cfg.c
+++ b/
net/mac80211/cfg.c
@@
-2166,6
+2166,7
@@
static int ieee80211_leave_mesh(struct wiphy *wiphy, struct net_device *dev)
ieee80211_stop_mesh(sdata);
mutex_lock(&sdata->local->mtx);
ieee80211_vif_release_channel(sdata);
+ kfree(sdata->u.mesh.ie);
mutex_unlock(&sdata->local->mtx);
return 0;