Patchwork [i4l] do not print a warning when shutting down an i4l ppp interface

login
register
mail settings
Submitter Paul Bolle
Date Jan. 12, 2009, 12:43 p.m.
Message ID <1231764197.7132.12.camel@test.thuisdomein>
Download mbox | patch
Permalink /patch/17922/
State Accepted
Delegated to: David Miller
Headers show

Comments

Paul Bolle - Jan. 12, 2009, 12:43 p.m.
When an i4l ppp interface is shut down (e.g. with /sbin/ifdown ippp0) a
scary warning is logged:
    
    isdn_free_channel: called with invalid drv(-1) or channel(-1)
    
This warning is caused by isdn_net_unbind_channel(), which always calls
isdn_free_channel() even if isdn_net_local->isdn_device and
isdn_net_local->isdn_channel are (still) in a perfectly acceptable
default state, so let's not do that.

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
---
Sent only to netdev@vger.kernel.org (and not also to
isdn4linux@listserv.isdn4linux.de) because an earlier ISDN patch I wrote
only got a response from this list (and this patch is NETWORKING related
anyway).
---


--
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 - Jan. 14, 2009, 10:41 p.m.
From: Paul Bolle <pebolle@tiscali.nl>
Date: Mon, 12 Jan 2009 13:43:17 +0100

> When an i4l ppp interface is shut down (e.g. with /sbin/ifdown ippp0) a
> scary warning is logged:
>     
>     isdn_free_channel: called with invalid drv(-1) or channel(-1)
>     
> This warning is caused by isdn_net_unbind_channel(), which always calls
> isdn_free_channel() even if isdn_net_local->isdn_device and
> isdn_net_local->isdn_channel are (still) in a perfectly acceptable
> default state, so let's not do that.
> 
> Signed-off-by: Paul Bolle <pebolle@tiscali.nl>

Applied.
--
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

diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c
index ecc92c8..cb8943d 100644
--- a/drivers/isdn/i4l/isdn_net.c
+++ b/drivers/isdn/i4l/isdn_net.c
@@ -292,7 +292,9 @@  isdn_net_unbind_channel(isdn_net_local * lp)
 	lp->dialstate = 0;
 	dev->rx_netdev[isdn_dc2minor(lp->isdn_device, lp->isdn_channel)] = NULL;
 	dev->st_netdev[isdn_dc2minor(lp->isdn_device, lp->isdn_channel)] = NULL;
-	isdn_free_channel(lp->isdn_device, lp->isdn_channel, ISDN_USAGE_NET);
+	if (lp->isdn_device != -1 && lp->isdn_channel != -1)
+		isdn_free_channel(lp->isdn_device, lp->isdn_channel,
+				  ISDN_USAGE_NET);
 	lp->flags &= ~ISDN_NET_CONNECTED;
 	lp->isdn_device = -1;
 	lp->isdn_channel = -1;