Patchwork [RFT] 3c59x: fix freeing nonexistent resource on driver unload

login
register
mail settings
Submitter Sergei Shtylyov
Date May 2, 2013, 9:10 p.m.
Message ID <201305030110.22462.sergei.shtylyov@cogentembedded.com>
Download mbox | patch
Permalink /patch/241101/
State Accepted
Delegated to: David Miller
Headers show

Comments

Sergei Shtylyov - May 2, 2013, 9:10 p.m.
When unloading the driver that drives an EISA board, a message similar to the
following one is displayed:

Trying to free nonexistent resource <0000000000013000-000000000001301f>

Then an user is unable to reload the driver because the resource it requested in
the previous load hasn't been freed. This happens most probably due to a typo in
vortex_eisa_remove() which calls release_region() with 'dev->base_addr'  instead
of 'edev->base_addr'...

Reported-by: Matthew Whitehead <tedheadster@gmail.com>
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>

---
The patch is against David Miller's 'net-next.git' repo.
Matthew, please test it and report on the list.

 drivers/net/ethernet/3com/3c59x.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sergei Shtylyov - May 4, 2013, 6:12 p.m.
Hello.

On 03-05-2013 8:26, tedheadster wrote:

> Sergei
>    well, the patch got rid of the "Trying to free nonexistent resource" error.
> However, a problem still persists.

    Does the module at least loads OK for the EISA card now?

> When reloading the module a second time, the system's responsiveness hangs for
> 10s of seconds. It eventually comes back, but even sysrq-h hangs for a long
> time. I was able to do a sysrq-t eventually and capture the output to a log.
> What shall we do to debug this next?

    Frankly speaking, I don't know, and don't have much time to invest in this...

> - Matthew

WBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sergei Shtylyov - May 4, 2013, 10:07 p.m.
Hello.

On 05/03/2013 01:10 AM, Sergei Shtylyov wrote:

> When unloading the driver that drives an EISA board, a message similar to the
> following one is displayed:
>
> Trying to free nonexistent resource <0000000000013000-000000000001301f>
>
> Then an user is unable to reload the driver because the resource it requested in
> the previous load hasn't been freed. This happens most probably due to a typo in
> vortex_eisa_remove() which calls release_region() with 'dev->base_addr'  instead
> of 'edev->base_addr'...
>
> Reported-by: Matthew Whitehead <tedheadster@gmail.com>

    Should I repost this now with [RFT] removed and this line changed to:

Reported-and-tested-by: Matthew Whitehead <tedheadster@gmail.com>


or could you do it when/if applying, David?

> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>

WBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - May 6, 2013, 4:22 p.m.
From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date: Fri, 3 May 2013 01:10:22 +0400

> When unloading the driver that drives an EISA board, a message similar to the
> following one is displayed:
> 
> Trying to free nonexistent resource <0000000000013000-000000000001301f>
> 
> Then an user is unable to reload the driver because the resource it requested in
> the previous load hasn't been freed. This happens most probably due to a typo in
> vortex_eisa_remove() which calls release_region() with 'dev->base_addr'  instead
> of 'edev->base_addr'...
> 
> Reported-by: Matthew Whitehead <tedheadster@gmail.com>
> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>

Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sergei Shtylyov - May 6, 2013, 8:45 p.m.
On 05/06/2013 08:22 PM, David Miller wrote:

>
>> When unloading the driver that drives an EISA board, a message similar to the
>> following one is displayed:
>>
>> Trying to free nonexistent resource <0000000000013000-000000000001301f>
>>
>> Then an user is unable to reload the driver because the resource it requested in
>> the previous load hasn't been freed. This happens most probably due to a typo in
>> vortex_eisa_remove() which calls release_region() with 'dev->base_addr'  instead
>> of 'edev->base_addr'...
>>
>> Reported-by: Matthew Whitehead <tedheadster@gmail.com>
>> Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> Applied, thanks.

    Will you queue this patch for stable?

WBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - May 6, 2013, 8:50 p.m.
From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date: Tue, 07 May 2013 00:45:30 +0400

>    Will you queue this patch for stable?

Done.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sergei Shtylyov - May 6, 2013, 9:49 p.m.
On 05/07/2013 12:50 AM, David Miller wrote:

>
>>     Will you queue this patch for stable?
> Done.

    Thank you. It's really ancient error, though for the ancient boards 
only as well...

WBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

Index: net-next/drivers/net/ethernet/3com/3c59x.c
===================================================================
--- net-next.orig/drivers/net/ethernet/3com/3c59x.c
+++ net-next/drivers/net/ethernet/3com/3c59x.c
@@ -951,7 +951,7 @@  static int vortex_eisa_remove(struct dev
 
 	unregister_netdev(dev);
 	iowrite16(TotalReset|0x14, ioaddr + EL3_CMD);
-	release_region(dev->base_addr, VORTEX_TOTAL_SIZE);
+	release_region(edev->base_addr, VORTEX_TOTAL_SIZE);
 
 	free_netdev(dev);
 	return 0;