From 6dfc2c26ecc4d43f04a97ae8cba2313a184718a6 Mon Sep 17 00:00:00 2001 From: Kiran Venkatappa Date: Wed, 13 Jun 2018 18:23:32 +0530 Subject: [PATCH] qcacmn: Add nbuf debug version for qdf_nbuf_unshare API skb_unshare may create copy and return different skb. If skb_unshare returns different skb, remove debug node for the original skb and add new debug node for the returned skb. Change-Id: Ib511cde241ea7a44bd726912c225452722d953a7 CRs-Fixed: 2260467 --- qdf/inc/qdf_nbuf.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/qdf/inc/qdf_nbuf.h b/qdf/inc/qdf_nbuf.h index a1ad58bd70a1..2b89b5eebbab 100644 --- a/qdf/inc/qdf_nbuf.h +++ b/qdf/inc/qdf_nbuf.h @@ -2734,11 +2734,34 @@ qdf_nbuf_linearize(qdf_nbuf_t buf) return __qdf_nbuf_linearize(buf); } +#ifdef NBUF_MEMORY_DEBUG +#define qdf_nbuf_unshare(d) \ + qdf_nbuf_unshare_debug(d, __FILE__, __LINE__) + +static inline qdf_nbuf_t +qdf_nbuf_unshare_debug(qdf_nbuf_t buf, uint8_t *file_name, uint32_t line_num) +{ + qdf_nbuf_t unshared_buf; + + unshared_buf = __qdf_nbuf_unshare(buf); + + if (qdf_likely(buf != unshared_buf)) { + qdf_net_buf_debug_delete_node(buf); + + qdf_net_buf_debug_add_node(unshared_buf, 0, + file_name, line_num); + } + + return unshared_buf; +} + +#else static inline qdf_nbuf_t qdf_nbuf_unshare(qdf_nbuf_t buf) { return __qdf_nbuf_unshare(buf); } +#endif static inline bool qdf_nbuf_is_cloned(qdf_nbuf_t buf)