net: qrtr: Fix passing invalid reference to qrtr_local_enqueue()
authorManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Tue, 19 May 2020 18:14:16 +0000 (23:44 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Jun 2020 06:16:29 +0000 (08:16 +0200)
[ Upstream commit d28ea1fbbf437054ef339afec241019f2c4e2bb6 ]

Once the traversal of the list is completed with list_for_each_entry(),
the iterator (node) will point to an invalid object. So passing this to
qrtr_local_enqueue() which is outside of the iterator block is erroneous
eventhough the object is not used.

So fix this by passing NULL to qrtr_local_enqueue().

Fixes: bdabad3e363d ("net: Add Qualcomm IPC router")
Reported-by: kbuild test robot <lkp@intel.com>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/qrtr/qrtr.c

index 41547c6..a825307 100644 (file)
@@ -571,7 +571,7 @@ static int qrtr_bcast_enqueue(struct qrtr_node *node, struct sk_buff *skb)
        }
        mutex_unlock(&qrtr_node_lock);
 
-       qrtr_local_enqueue(node, skb);
+       qrtr_local_enqueue(NULL, skb);
 
        return 0;
 }