msm: sdio: fix error handling of rx pending list of packet channels
Signed-off-by: Maya Erez <merez@codeaurora.org>
diff --git a/arch/arm/mach-msm/sdio_al.c b/arch/arm/mach-msm/sdio_al.c
index 60aae17..9ad8015 100644
--- a/arch/arm/mach-msm/sdio_al.c
+++ b/arch/arm/mach-msm/sdio_al.c
@@ -1013,8 +1013,13 @@
}
p = kzalloc(sizeof(*p), GFP_KERNEL);
- if (p == NULL)
+ if (p == NULL) {
+ pr_err(MODULE_NAME ":failed to allocate item for "
+ "rx_pending list. rx_avail=%d, rx_pending=%d.\n",
+ rx_avail, rx_pending);
+ new_packet_size = 0;
goto exit_err;
+ }
p->size = new_packet_size;
/* Add new packet as last */
list_add_tail(&p->list, &ch->rx_size_list_head);
@@ -1048,6 +1053,9 @@
struct rx_packet_size, list);
list_del(&p->list);
kfree(p);
+ } else {
+ pr_err(MODULE_NAME ":%s: ch %s: unexpected empty list!!\n",
+ __func__, ch->name);
}
if (list_empty(&ch->rx_size_list_head)) {
@@ -2572,8 +2580,11 @@
ret = sdio_memcpy_fromio(ch->func, data, PIPE_RX_FIFO_ADDR, len);
if (ret) {
- pr_err(MODULE_NAME ":sdio_read err=%d, len=%d, read_avail=%d\n",
- -ret, len, ch->read_avail);
+ pr_err(MODULE_NAME ":ch %s: sdio_read err=%d, len=%d, "
+ "read_avail=%d, last_read_avail=%d, last_old_read_avail=%d\n",
+ ch->name, -ret, len, ch->read_avail,
+ ch->statistics.last_read_avail,
+ ch->statistics.last_old_read_avail);
sdio_al_dev->is_err = true;
sdio_release_host(sdio_al_dev->card->sdio_func[0]);
return ret;