From e6f2f9ad64c009f5a77233657e11d53fc7a06ce8 Mon Sep 17 00:00:00 2001 From: c_cgodav Date: Wed, 15 Mar 2017 10:10:40 +0530 Subject: [PATCH] qcacmn: Fix memory overrun issues in smartlog CE dump Fix the memory over run by removing the extra "END" ascii print as it overruns the available memory. Tests Done: Ran Pollux_ACFG_MIPS_3Radio_Channel_Change_120s_Rev_1.0.0.0 for ~20hrs Ran PDT_Pollux_Reboot_Rev_1.0.0.1 for ~36hrs Change-Id: Id71fe8c95a41369f55d53ece043a0b00e62c5d4f --- hif/src/ce/ce_service.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/hif/src/ce/ce_service.c b/hif/src/ce/ce_service.c index 5d0e031c3ce6..ed94b7714085 100644 --- a/hif/src/ce/ce_service.c +++ b/hif/src/ce/ce_service.c @@ -3092,7 +3092,6 @@ static uint8_t *hif_log_src_ce_dump(struct CE_ring_state *src_ring, len = sizeof(struct CE_ring_state); available_buf = buf_sz - (buf_cur - buf_init); if (available_buf < (len + GUARD_SPACE)) { - snprintf(buf_cur, available_buf, "END"); buf_cur = buf_init; } @@ -3110,8 +3109,6 @@ static uint8_t *hif_log_src_ce_dump(struct CE_ring_state *src_ring, + LOG_ID_SZ + sizeof(skb_cp_len); available_buf = buf_sz - (buf_cur - buf_init); if (available_buf < (len + GUARD_SPACE)) { - buf_cur += snprintf(buf_cur, available_buf, - "END"); buf_cur = buf_init; } qdf_mem_copy(buf_cur, src_desc, @@ -3131,8 +3128,6 @@ static uint8_t *hif_log_src_ce_dump(struct CE_ring_state *src_ring, len = sizeof(struct CE_src_desc) + LOG_ID_SZ; available_buf = buf_sz - (buf_cur - buf_init); if (available_buf < (len + GUARD_SPACE)) { - buf_cur += snprintf(buf_cur, available_buf, - "END"); buf_cur = buf_init; } qdf_mem_copy(buf_cur, src_desc, @@ -3175,7 +3170,6 @@ static uint8_t *hif_log_dest_ce_dump(struct CE_ring_state *dest_ring, len = sizeof(struct CE_ring_state); available_buf = buf_sz - (buf_cur - buf_init); if (available_buf < (len + GUARD_SPACE)) { - snprintf(buf_cur, available_buf, "END"); buf_cur = buf_init; } @@ -3184,6 +3178,7 @@ static uint8_t *hif_log_dest_ce_dump(struct CE_ring_state *dest_ring, for (entry = 0; entry < dest_ring->nentries; entry++) { dest_desc = CE_DEST_RING_TO_DESC(dest_ring_base, entry); + nbuf = dest_ring->per_transfer_context[entry]; if (nbuf) { uint32_t skb_len = qdf_nbuf_len(nbuf); @@ -3194,8 +3189,6 @@ static uint8_t *hif_log_dest_ce_dump(struct CE_ring_state *dest_ring, available_buf = buf_sz - (buf_cur - buf_init); if (available_buf < (len + GUARD_SPACE)) { - buf_cur += snprintf(buf_cur, available_buf, - "END"); buf_cur = buf_init; } @@ -3214,8 +3207,6 @@ static uint8_t *hif_log_dest_ce_dump(struct CE_ring_state *dest_ring, len = sizeof(struct CE_dest_desc) + LOG_ID_SZ; available_buf = buf_sz - (buf_cur - buf_init); if (available_buf < (len + GUARD_SPACE)) { - buf_cur += snprintf(buf_cur, available_buf, - "END"); buf_cur = buf_init; } qdf_mem_copy(buf_cur, dest_desc, @@ -3251,8 +3242,6 @@ uint8_t *hif_log_dump_ce(struct hif_softc *scn, uint8_t *buf_cur, } else if (dest_ring) { buf_cur = hif_log_dest_ce_dump(dest_ring, buf_cur, buf_init, buf_sz, skb_sz); - } else { - qdf_print("Cannot print Ring for Unused CE%d\n", ce); } return buf_cur;