| From c4f15912e09485c8759746ebdf6b3be29d6d1241 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 27 Mar 2021 08:36:50 +0100 |
| Subject: usb: gadget: s3c: Fix incorrect resources releasing |
| |
| From: Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
| |
| [ Upstream commit 42067ccd9eb2077979ac3ce8b7b95c694bd09e14 ] |
| |
| Since commit 188db4435ac6 ("usb: gadget: s3c: use platform resources"), |
| 'request_mem_region()' and 'ioremap()' are no more used, so they don't need |
| to be undone in the error handling path of the probe and in the remove |
| function. |
| |
| Remove these calls and the unneeded 'rsrc_start' and 'rsrc_len' global |
| variables. |
| |
| Fixes: 188db4435ac6 ("usb: gadget: s3c: use platform resources") |
| Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> |
| Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> |
| Link: https://lore.kernel.org/r/b317638464f188159bd8eea44427dd359e480625.1616830026.git.christophe.jaillet@wanadoo.fr |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/usb/gadget/udc/s3c2410_udc.c | 14 +++----------- |
| 1 file changed, 3 insertions(+), 11 deletions(-) |
| |
| diff --git a/drivers/usb/gadget/udc/s3c2410_udc.c b/drivers/usb/gadget/udc/s3c2410_udc.c |
| index 1d3ebb07ccd4..b81979b3bdb6 100644 |
| --- a/drivers/usb/gadget/udc/s3c2410_udc.c |
| +++ b/drivers/usb/gadget/udc/s3c2410_udc.c |
| @@ -54,8 +54,6 @@ static struct clk *udc_clock; |
| static struct clk *usb_bus_clock; |
| static void __iomem *base_addr; |
| static int irq_usbd; |
| -static u64 rsrc_start; |
| -static u64 rsrc_len; |
| static struct dentry *s3c2410_udc_debugfs_root; |
| |
| static inline u32 udc_read(u32 reg) |
| @@ -1775,7 +1773,7 @@ static int s3c2410_udc_probe(struct platform_device *pdev) |
| base_addr = devm_platform_ioremap_resource(pdev, 0); |
| if (IS_ERR(base_addr)) { |
| retval = PTR_ERR(base_addr); |
| - goto err_mem; |
| + goto err; |
| } |
| |
| the_controller = udc; |
| @@ -1793,7 +1791,7 @@ static int s3c2410_udc_probe(struct platform_device *pdev) |
| if (retval != 0) { |
| dev_err(dev, "cannot get irq %i, err %d\n", irq_usbd, retval); |
| retval = -EBUSY; |
| - goto err_map; |
| + goto err; |
| } |
| |
| dev_dbg(dev, "got irq %i\n", irq_usbd); |
| @@ -1864,10 +1862,7 @@ err_gpio_claim: |
| gpio_free(udc_info->vbus_pin); |
| err_int: |
| free_irq(irq_usbd, udc); |
| -err_map: |
| - iounmap(base_addr); |
| -err_mem: |
| - release_mem_region(rsrc_start, rsrc_len); |
| +err: |
| |
| return retval; |
| } |
| @@ -1899,9 +1894,6 @@ static int s3c2410_udc_remove(struct platform_device *pdev) |
| |
| free_irq(irq_usbd, udc); |
| |
| - iounmap(base_addr); |
| - release_mem_region(rsrc_start, rsrc_len); |
| - |
| if (!IS_ERR(udc_clock) && udc_clock != NULL) { |
| clk_disable_unprepare(udc_clock); |
| clk_put(udc_clock); |
| -- |
| 2.30.2 |
| |