diff --git a/qdf/inc/qdf_nbuf.h b/qdf/inc/qdf_nbuf.h index 9b86c1b27a..3c62da74f0 100644 --- a/qdf/inc/qdf_nbuf.h +++ b/qdf/inc/qdf_nbuf.h @@ -651,7 +651,7 @@ qdf_nbuf_set_send_complete_flag(qdf_nbuf_t buf, bool flag) __qdf_nbuf_set_send_complete_flag(buf, flag); } -#ifdef NBUF_MEMORY_DEBUG +#ifdef NBUF_MAP_UNMAP_DEBUG /** * qdf_nbuf_map_check_for_leaks() - check for nbut map leaks * @@ -739,7 +739,7 @@ void qdf_nbuf_unmap_nbytes_single_debug(qdf_device_t osdev, qdf_nbuf_unmap_nbytes_single_debug(osdev, buf, dir, nbytes, \ __FILE__, __LINE__) -#else /* NBUF_MEMORY_DEBUG */ +#else /* NBUF_MAP_UNMAP_DEBUG */ static inline void qdf_nbuf_map_check_for_leaks(void) {} @@ -794,7 +794,7 @@ qdf_nbuf_unmap_nbytes_single( { return __qdf_nbuf_unmap_nbytes_single(osdev, buf, dir, nbytes); } -#endif /* NBUF_MEMORY_DEBUG */ +#endif /* NBUF_MAP_UNMAP_DEBUG */ /** * qdf_nbuf_queue_head_dequeue() - dequeue nbuf from the head of queue diff --git a/qdf/linux/src/qdf_nbuf.c b/qdf/linux/src/qdf_nbuf.c index 31ff0418d6..61996f9d5b 100644 --- a/qdf/linux/src/qdf_nbuf.c +++ b/qdf/linux/src/qdf_nbuf.c @@ -577,7 +577,9 @@ qdf_nbuf_history_add(qdf_nbuf_t nbuf, const char *file, uint32_t line, event->type = type; event->timestamp = qdf_get_log_timestamp(); } +#endif /* NBUF_MEMORY_DEBUG */ +#ifdef NBUF_MAP_UNMAP_DEBUG struct qdf_nbuf_map_metadata { struct hlist_node node; qdf_nbuf_t nbuf; @@ -853,7 +855,35 @@ void qdf_nbuf_unmap_nbytes_single_debug(qdf_device_t osdev, } qdf_export_symbol(qdf_nbuf_unmap_nbytes_single_debug); -#endif /* NBUF_MEMORY_DEBUG */ + +static void qdf_nbuf_panic_on_free_if_mapped(qdf_nbuf_t nbuf, uint8_t *file, + uint32_t line) +{ + struct qdf_nbuf_map_metadata *meta; + + qdf_spin_lock_irqsave(&qdf_nbuf_map_lock); + meta = qdf_nbuf_meta_get(nbuf); + if (meta) + QDF_DEBUG_PANIC( + "Nbuf freed @ %s:%u while mapped from %s:%u", + kbasename(file), line, meta->file, meta->line); + qdf_spin_unlock_irqrestore(&qdf_nbuf_map_lock); +} +#else +static inline void qdf_nbuf_map_tracking_init(void) +{ +} + +static inline void qdf_nbuf_map_tracking_deinit(void) +{ +} + +static inline void qdf_nbuf_panic_on_free_if_mapped(qdf_nbuf_t nbuf, + uint8_t *file, + uint32_t line) +{ +} +#endif /* NBUF_MAP_UNMAP_DEBUG */ /** * __qdf_nbuf_map() - map a buffer to local bus address space @@ -2627,16 +2657,7 @@ void qdf_nbuf_free_debug(qdf_nbuf_t nbuf, uint8_t *file, uint32_t line) /* Remove SKB from internal QDF tracking table */ if (qdf_likely(nbuf)) { - struct qdf_nbuf_map_metadata *meta; - - qdf_spin_lock_irqsave(&qdf_nbuf_map_lock); - meta = qdf_nbuf_meta_get(nbuf); - if (meta) - QDF_DEBUG_PANIC( - "Nbuf freed @ %s:%u while mapped from %s:%u", - kbasename(file), line, meta->file, meta->line); - qdf_spin_unlock_irqrestore(&qdf_nbuf_map_lock); - + qdf_nbuf_panic_on_free_if_mapped(nbuf, file, line); qdf_net_buf_debug_delete_node(nbuf); qdf_nbuf_history_add(nbuf, file, line, QDF_NBUF_FREE); }