diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2021-05-20 15:05:18 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2021-05-20 17:57:32 +0100 |
commit | e56360d6a119f531506658ea87238e48ad4c95c2 (patch) | |
tree | fa3662a6b8408a710b8e9cb6af95bbd96a8ad784 /drivers/base/regmap | |
parent | 9dee1f9fc504c48b6b02d8726cc9c868cf41f7be (diff) |
regmap: mdio: Don't modify output if error happened
regmap_mdio_read() breaks the principle of "no touch output till it's known
that the operation succeeds". Refactor it accordingly.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20210520120518.30490-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/base/regmap')
-rw-r--r-- | drivers/base/regmap/regmap-mdio.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/base/regmap/regmap-mdio.c b/drivers/base/regmap/regmap-mdio.c index 5f18fe409f56..5ec208279913 100644 --- a/drivers/base/regmap/regmap-mdio.c +++ b/drivers/base/regmap/regmap-mdio.c @@ -11,9 +11,11 @@ static int regmap_mdio_read(void *context, unsigned int reg, unsigned int *val) int ret; ret = mdiobus_read(mdio_dev->bus, mdio_dev->addr, reg); - *val = ret & 0xffff; + if (ret < 0) + return ret; - return ret < 0 ? ret : 0; + *val = ret & 0xffff; + return 0; } static int regmap_mdio_write(void *context, unsigned int reg, unsigned int val) |