Thread (8 messages) 8 messages, 3 authors, 2015-05-16

[PATCH 1/4] ipvs: fix memory leak in ip_vs_ctl.c

flat view
STALE4168d SUPERSEDED: 1 (1M)

From: Pablo Neira Ayuso <pablo@netfilter.org>
Date: 2015-05-16 18:42:39
Also in: netfilter-devel
Subsystem: ipvs, netfilter, networking [general], the rest · Maintainers: Simon Horman, Julian Anastasov, Pablo Neira Ayuso, Florian Westphal, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds

Revision v1 of 275 in this series; 1 review trailer (1 from subsystem maintainers).

Revisions (275)
  1. v1
  2. v1
  3. v1
  4. v1
  5. v1
  6. v1
  7. v1
  8. v1
  9. v1
  10. v1
  11. v1
  12. v1
  13. v1
  14. v1
  15. v1
  16. v1
  17. v1
  18. v1
  19. v1
  20. v1
  21. v1
  22. v1
  23. v1 current
  24. v1
  25. v1
  26. v1
  27. v1
  28. v1
  29. v1
  30. v1
  31. v1
  32. v1
  33. v1
  34. v1
  35. v1
  36. v1
  37. v1
  38. v1
  39. v1
  40. v1
  41. v1
  42. v1
  43. v1
  44. v1
  45. v1
  46. v1
  47. v1
  48. v1
  49. v1
  50. v1
  51. v1
  52. v1
  53. v1
  54. v1
  55. v1
  56. v1
  57. v1
  58. v1
  59. v1
  60. v1
  61. v1
  62. v1
  63. v1
  64. v1
  65. v1
  66. v1
  67. v1
  68. v1
  69. v1
  70. v1
  71. v1
  72. v1
  73. v1
  74. v1
  75. v1
  76. v1
  77. v1
  78. v1
  79. v1
  80. v1
  81. v1
  82. v1
  83. v1
  84. v1
  85. v1
  86. v1
  87. v1
  88. v1
  89. v1
  90. v1
  91. v1
  92. v1
  93. v1
  94. v1
  95. v1
  96. v1
  97. v1
  98. v1
  99. v1
  100. v1
  101. v1
  102. v1
  103. v1
  104. v1
  105. v1
  106. v1
  107. v1
  108. v1
  109. v1
  110. v1
  111. v1
  112. v1
  113. v1
  114. v1
  115. v1
  116. v1
  117. v1
  118. v1
  119. v1
  120. v1
  121. v1
  122. v1
  123. v1
  124. v1
  125. v1
  126. v1
  127. v1
  128. v1
  129. v1
  130. v1
  131. v1
  132. v1
  133. v1
  134. v1
  135. v1
  136. v1
  137. v1
  138. v1
  139. v1
  140. v1
  141. v1
  142. v1
  143. v1
  144. v1
  145. v2 [diff vs current]
  146. v1
  147. v1
  148. v1
  149. v1
  150. v1
  151. v1
  152. v1
  153. v1
  154. v1
  155. v1
  156. v1
  157. v2 [diff vs current]
  158. v1
  159. v1
  160. v1
  161. v1
  162. v1
  163. v1
  164. v1
  165. v1
  166. v1
  167. v1
  168. v1
  169. v1
  170. v1
  171. v1
  172. v1
  173. v1
  174. v1
  175. v1
  176. v1
  177. v1
  178. v1
  179. v1
  180. v1
  181. v1
  182. v1
  183. v1
  184. v1
  185. v1
  186. v1
  187. v1
  188. v1
  189. v1
  190. v1
  191. v1
  192. v1
  193. v1
  194. v1
  195. v1
  196. v1
  197. v1
  198. v1
  199. v1
  200. v1
  201. v1
  202. v1
  203. v1
  204. v1
  205. v1
  206. v1
  207. v1
  208. v1
  209. v1
  210. v1
  211. v1
  212. v1
  213. v2 [diff vs current]
  214. v1
  215. v1
  216. v1
  217. v2 [diff vs current]
  218. v1
  219. v1
  220. v1
  221. v1
  222. v1
  223. v2 [diff vs current]
  224. v1
  225. v1
  226. v1
  227. v1
  228. v1
  229. v2 [diff vs current]
  230. v3 [diff vs current]
  231. v1
  232. v1
  233. v1
  234. v1
  235. v1
  236. v1
  237. v1
  238. v1
  239. v1
  240. v2 [diff vs current]
  241. v1
  242. v1
  243. v1
  244. v2 [diff vs current]
  245. v1
  246. v1
  247. v1
  248. v1
  249. v1
  250. v1
  251. v2 [diff vs current]
  252. v1
  253. v1
  254. v1
  255. v1
  256. v1
  257. v1
  258. v1
  259. v1
  260. v1
  261. v1
  262. v1
  263. v2 [diff vs current]
  264. v1
  265. v2 [diff vs current]
  266. v1
  267. v1
  268. v1
  269. v1
  270. v2 [diff vs current]
  271. v1
  272. v1
  273. v2 [diff vs current]
  274. v2 [diff vs current]
  275. v2 [diff vs current]
From: Tommi Rantala <redacted>

Fix memory leak introduced in commit a0840e2e165a ("IPVS: netns,
ip_vs_ctl local vars moved to ipvs struct."):

unreferenced object 0xffff88005785b800 (size 2048):
  comm "(-localed)", pid 1434, jiffies 4294755650 (age 1421.089s)
  hex dump (first 32 bytes):
    bb 89 0b 83 ff ff ff ff b0 78 f0 4e 00 88 ff ff  .........x.N....
    04 00 00 00 a4 01 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<ffffffff8262ea8e>] kmemleak_alloc+0x4e/0xb0
    [<ffffffff811fba74>] __kmalloc_track_caller+0x244/0x430
    [<ffffffff811b88a0>] kmemdup+0x20/0x50
    [<ffffffff823276b7>] ip_vs_control_net_init+0x1f7/0x510
    [<ffffffff8231d630>] __ip_vs_init+0x100/0x250
    [<ffffffff822363a1>] ops_init+0x41/0x190
    [<ffffffff82236583>] setup_net+0x93/0x150
    [<ffffffff82236cc2>] copy_net_ns+0x82/0x140
    [<ffffffff810ab13d>] create_new_namespaces+0xfd/0x190
    [<ffffffff810ab49a>] unshare_nsproxy_namespaces+0x5a/0xc0
    [<ffffffff810833e3>] SyS_unshare+0x173/0x310
    [<ffffffff8265cbd7>] system_call_fastpath+0x12/0x6f
    [<ffffffffffffffff>] 0xffffffffffffffff

Fixes: a0840e2e165a ("IPVS: netns, ip_vs_ctl local vars moved to ipvs struct.")
Signed-off-by: Tommi Rantala <redacted>
Acked-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Simon Horman <horms@verge.net.au>
---
 net/netfilter/ipvs/ip_vs_ctl.c |    3 +++
 1 file changed, 3 insertions(+)
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
index 4953267..285eae3 100644
--- a/net/netfilter/ipvs/ip_vs_ctl.c
+++ b/net/netfilter/ipvs/ip_vs_ctl.c
@@ -3823,6 +3823,9 @@ static void __net_exit ip_vs_control_net_cleanup_sysctl(struct net *net)
 	cancel_work_sync(&ipvs->defense_work.work);
 	unregister_net_sysctl_table(ipvs->sysctl_hdr);
 	ip_vs_stop_estimator(net, &ipvs->tot_stats);
+
+	if (!net_eq(net, &init_net))
+		kfree(ipvs->sysctl_tbl);
 }
 
 #else
-- 
1.7.10.4
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help