On 2020-06-24 11:26, David Miller wrote:
From: Carl Huang
Date: Tue, 23 Jun 2020 11:22:03 +0800
@@ -168,6 +168,7 @@ static void __qrtr_node_release(struct kref *kref)
struct radix_tree_iter iter;
unsigned long flags;
void __rcu **slot;
+ struct qrtr_tx_flow *flow;
From: Carl Huang
Date: Tue, 23 Jun 2020 11:22:03 +0800
> @@ -168,6 +168,7 @@ static void __qrtr_node_release(struct kref *kref)
> struct radix_tree_iter iter;
> unsigned long flags;
> void __rcu **slot;
> + struct qrtr_tx_flow *flow;
Please retain the reverse christmas tree
The flow is allocated in qrtr_tx_wait, but not freed when qrtr node
is released. (*slot) becomes NULL after radix_tree_iter_delete is
called in __qrtr_node_release. The fix is to save (*slot) to a
vairable and then free it.
This memory leak is catched when kmemleak is enabled in kernel,
the report