| From 175897319779f4e4d0d4d3b24ad7c55c695f2720 Mon Sep 17 00:00:00 2001 |
| From: Tony Lindgren <tony@atomide.com> |
| Date: Fri, 30 Aug 2019 14:43:12 -0700 |
| Subject: [PATCH] phy: mapphone-mdm6600: Fix uninitialized status value |
| regression |
| |
| commit af5d44de571811a151510bfd1236407b7f551cd9 upstream. |
| |
| Only the used bits get cleared with bitmap_zero() when we call |
| gpiod_get_array_value_cansleep(). We must mask only the bits we're |
| using for ddata->status as the other bits in the bitmap may not be |
| initialized. |
| |
| And let's also drop useless debug code accidentally left over while |
| at it. |
| |
| Fixes: b9762bebc633 ("gpiolib: Pass bitmaps, not integer arrays, to get/set array") |
| Cc: Jacopo Mondi <jacopo@jmondi.org> |
| Cc: Janusz Krzysztofik <jmkrzyszt@gmail.com> |
| Cc: Linus Walleij <linus.walleij@linaro.org> |
| Cc: Marcel Partap <mpartap@gmx.net> |
| Cc: Merlijn Wajer <merlijn@wizzup.org> |
| Cc: Michael Scott <hashcode0f@gmail.com> |
| Cc: NeKit <nekit1000@gmail.com> |
| Cc: Pavel Machek <pavel@ucw.cz> |
| Cc: Sebastian Reichel <sre@kernel.org> |
| Signed-off-by: Tony Lindgren <tony@atomide.com> |
| Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/phy/motorola/phy-mapphone-mdm6600.c b/drivers/phy/motorola/phy-mapphone-mdm6600.c |
| index ee184d5607bd..f20524f0c21d 100644 |
| --- a/drivers/phy/motorola/phy-mapphone-mdm6600.c |
| +++ b/drivers/phy/motorola/phy-mapphone-mdm6600.c |
| @@ -200,7 +200,7 @@ static void phy_mdm6600_status(struct work_struct *work) |
| struct phy_mdm6600 *ddata; |
| struct device *dev; |
| DECLARE_BITMAP(values, PHY_MDM6600_NR_STATUS_LINES); |
| - int error, i, val = 0; |
| + int error; |
| |
| ddata = container_of(work, struct phy_mdm6600, status_work.work); |
| dev = ddata->dev; |
| @@ -212,16 +212,11 @@ static void phy_mdm6600_status(struct work_struct *work) |
| if (error) |
| return; |
| |
| - for (i = 0; i < PHY_MDM6600_NR_STATUS_LINES; i++) { |
| - val |= test_bit(i, values) << i; |
| - dev_dbg(ddata->dev, "XXX %s: i: %i values[i]: %i val: %i\n", |
| - __func__, i, test_bit(i, values), val); |
| - } |
| - ddata->status = values[0]; |
| + ddata->status = values[0] & ((1 << PHY_MDM6600_NR_STATUS_LINES) - 1); |
| |
| dev_info(dev, "modem status: %i %s\n", |
| ddata->status, |
| - phy_mdm6600_status_name[ddata->status & 7]); |
| + phy_mdm6600_status_name[ddata->status]); |
| complete(&ddata->ack); |
| } |
| |
| -- |
| 2.7.4 |
| |