From 7d5c1dbc5b3307e914ff8c17624fbb56b08778e7 Mon Sep 17 00:00:00 2001 From: Ido Yariv Date: Tue, 21 Aug 2012 17:17:13 +0300 Subject: [PATCH] --- yaml --- r: 328355 b: refs/heads/master c: d556023895c8968fd97ccb08300006b78975a23b h: refs/heads/master i: 328353: d9f72c773b32ff36c8d1145273730c29c82fa3aa 328351: 0ac31e065ef43958023046791659da64b4e05f53 v: v3 --- [refs] | 2 +- .../drivers/net/wireless/ti/wlcore/debugfs.c | 20 +++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 591b37ad33bf..84514b2458c0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 001e39a8effd5a9774153ca6ca67849a93b95852 +refs/heads/master: d556023895c8968fd97ccb08300006b78975a23b diff --git a/trunk/drivers/net/wireless/ti/wlcore/debugfs.c b/trunk/drivers/net/wireless/ti/wlcore/debugfs.c index 3d39784d639b..c86bb00c2488 100644 --- a/trunk/drivers/net/wireless/ti/wlcore/debugfs.c +++ b/trunk/drivers/net/wireless/ti/wlcore/debugfs.c @@ -1064,14 +1064,16 @@ static ssize_t dev_mem_read(struct file *file, mutex_lock(&wl->mutex); - if (unlikely(wl->state != WLCORE_STATE_ON)) { + if (unlikely(wl->state == WLCORE_STATE_OFF)) { ret = -EFAULT; goto skip_read; } - ret = wl1271_ps_elp_wakeup(wl); - if (ret < 0) - goto skip_read; + /* + * Don't fail if elp_wakeup returns an error, so the device's memory + * could be read even if the FW crashed + */ + wl1271_ps_elp_wakeup(wl); /* store current partition and switch partition */ memcpy(&old_part, &wl->curr_part, sizeof(old_part)); @@ -1149,14 +1151,16 @@ static ssize_t dev_mem_write(struct file *file, const char __user *user_buf, mutex_lock(&wl->mutex); - if (unlikely(wl->state != WLCORE_STATE_ON)) { + if (unlikely(wl->state == WLCORE_STATE_OFF)) { ret = -EFAULT; goto skip_write; } - ret = wl1271_ps_elp_wakeup(wl); - if (ret < 0) - goto skip_write; + /* + * Don't fail if elp_wakeup returns an error, so the device's memory + * could be read even if the FW crashed + */ + wl1271_ps_elp_wakeup(wl); /* store current partition and switch partition */ memcpy(&old_part, &wl->curr_part, sizeof(old_part));