From 28803728da539a2f2c170f5181663b3411ba1e05 Mon Sep 17 00:00:00 2001 From: Houston Hoffman Date: Mon, 13 Jun 2016 11:04:08 -0700 Subject: [PATCH] qcacmn: Check null in qdf_nbuf_track_free Freeing a null pointer shouldn't do anything. Some code relies on this. Specifically, in a rare scenario, an allocation is made outside of a spinlock and may freed without being used or verified inside the spinlock. Change-Id: Ib5f8ecabc62454a0ca9b6723cd80ff2f701196c3 CRs-Fixed: 1024277 --- qdf/linux/src/qdf_nbuf.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/qdf/linux/src/qdf_nbuf.c b/qdf/linux/src/qdf_nbuf.c index c14556e07d67..0a3b6f05f984 100644 --- a/qdf/linux/src/qdf_nbuf.c +++ b/qdf/linux/src/qdf_nbuf.c @@ -717,6 +717,9 @@ static void qdf_nbuf_track_free(QDF_NBUF_TRACK *node) { unsigned long irq_flag; + if (!node) + return; + /* Try to shrink the freelist if free_list_count > than FREEQ_POOLSIZE * only shrink the freelist if it is bigger than twice the number of * nbufs in use. If the driver is stalling in a consistent bursty