| From fe53775c697fbc6b5e905c8ba3d8145f224bc6ab Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 9 Apr 2021 19:38:06 +0530 |
| Subject: gpio: zynq: Check return value of irq_get_irq_data |
| |
| From: Srinivas Neeli <srinivas.neeli@xilinx.com> |
| |
| [ Upstream commit 35d7b72a632bc7afb15356f44005554af8697904 ] |
| |
| In two different instances the return value of "irq_get_irq_data" |
| API was neither captured nor checked. |
| Fixed it by capturing the return value and then checking for any error. |
| |
| Addresses-Coverity: "returned_null" |
| Signed-off-by: Srinivas Neeli <srinivas.neeli@xilinx.com> |
| Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/gpio/gpio-zynq.c | 10 ++++++++++ |
| 1 file changed, 10 insertions(+) |
| |
| diff --git a/drivers/gpio/gpio-zynq.c b/drivers/gpio/gpio-zynq.c |
| index fb8684d70fe3..c288a7502de2 100644 |
| --- a/drivers/gpio/gpio-zynq.c |
| +++ b/drivers/gpio/gpio-zynq.c |
| @@ -736,6 +736,11 @@ static int __maybe_unused zynq_gpio_suspend(struct device *dev) |
| struct zynq_gpio *gpio = dev_get_drvdata(dev); |
| struct irq_data *data = irq_get_irq_data(gpio->irq); |
| |
| + if (!data) { |
| + dev_err(dev, "irq_get_irq_data() failed\n"); |
| + return -EINVAL; |
| + } |
| + |
| if (!device_may_wakeup(dev)) |
| disable_irq(gpio->irq); |
| |
| @@ -753,6 +758,11 @@ static int __maybe_unused zynq_gpio_resume(struct device *dev) |
| struct irq_data *data = irq_get_irq_data(gpio->irq); |
| int ret; |
| |
| + if (!data) { |
| + dev_err(dev, "irq_get_irq_data() failed\n"); |
| + return -EINVAL; |
| + } |
| + |
| if (!device_may_wakeup(dev)) |
| enable_irq(gpio->irq); |
| |
| -- |
| 2.30.2 |
| |