From: Pierre-Louis Bossart <pierre-louis.boss...@linux.intel.com>

In the existing code we may read a negative error value but still mask
it and write it back.

Make sure all reads are tested and errors not propagated further.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.boss...@linux.intel.com>
Reviewed-by: Kai Vehmanen <kai.vehma...@linux.intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovet...@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.l...@linux.intel.com>
---
 drivers/soundwire/bus.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c
index 04eb879de145..1c01cc192cbd 100644
--- a/drivers/soundwire/bus.c
+++ b/drivers/soundwire/bus.c
@@ -875,8 +875,12 @@ static int sdw_slave_clk_stop_prepare(struct sdw_slave 
*slave,
                if (wake_en)
                        val |= SDW_SCP_SYSTEMCTRL_WAKE_UP_EN;
        } else {
-               val = sdw_read_no_pm(slave, SDW_SCP_SYSTEMCTRL);
-
+               ret = sdw_read_no_pm(slave, SDW_SCP_SYSTEMCTRL);
+               if (ret < 0) {
+                       dev_err(&slave->dev, "SDW_SCP_SYSTEMCTRL read 
failed:%d\n", ret);
+                       return ret;
+               }
+               val = ret;
                val &= ~(SDW_SCP_SYSTEMCTRL_CLK_STP_PREP);
        }
 
@@ -895,8 +899,12 @@ static int sdw_bus_wait_for_clk_prep_deprep(struct sdw_bus 
*bus, u16 dev_num)
        int val;
 
        do {
-               val = sdw_bread_no_pm(bus, dev_num, SDW_SCP_STAT) &
-                       SDW_SCP_STAT_CLK_STP_NF;
+               val = sdw_bread_no_pm(bus, dev_num, SDW_SCP_STAT);
+               if (val < 0) {
+                       dev_err(bus->dev, "SDW_SCP_STAT bread failed:%d\n", 
val);
+                       return val;
+               }
+               val &= SDW_SCP_STAT_CLK_STP_NF;
                if (!val) {
                        dev_info(bus->dev, "clock stop prep/de-prep done 
slave:%d",
                                 dev_num);
-- 
2.17.1

Reply via email to