mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] USB speedtouch: don't open a connection if no firmware
@ 2003-04-08  7:26 Duncan Sands
  2003-04-08 20:12 ` [linux-usb-devel] " Greg KH
  0 siblings, 1 reply; 6+ messages in thread
From: Duncan Sands @ 2003-04-08  7:26 UTC (permalink / raw)
  To: linux-usb-devel; +Cc: Greg KH, linux-kernel

People using Alcatel's closed source firmware loader "speedmgmt" may need
to sleep longer before launching pppd.

--- redux-2.5/drivers/usb/misc/speedtch.c	2003-04-08 08:49:33.000000000 +0200
+++ bollux-2.5/drivers/usb/misc/speedtch.c	2003-04-04 13:44:11.000000000 +0200
@@ -816,9 +816,6 @@
 		return -ENODEV;
 	}
 
-	if (!instance->firmware_loaded)
-		return -EAGAIN;
-
 	if (vcc->qos.aal != ATM_AAL5) {
 		dbg ("unsupported ATM type %d!", vcc->qos.aal);
 		return -EINVAL;
@@ -933,6 +930,11 @@
 	if (vcc->qos.aal != ATM_AAL5)
 		return -EINVAL;
 
+	if (!instance->firmware_loaded) {
+		dbg ("firmware not loaded!");
+		return -EAGAIN;
+	}
+
 	down (&instance->serialize); /* vs self, udsl_atm_close */
 
 	if (udsl_find_vcc (instance, vpi, vci)) {
@@ -967,13 +969,12 @@
 
 	dbg ("Allocated new SARLib vcc 0x%p with vpi %d vci %d", new, vpi, vci);
 
-	MOD_INC_USE_COUNT;
-
-	if (instance->firmware_loaded)
-		udsl_fire_receivers (instance);
+	udsl_fire_receivers (instance);
 
 	dbg ("udsl_atm_open successful");
 
+	MOD_INC_USE_COUNT;
+
 	return 0;
 }
 
@@ -1041,6 +1042,7 @@
 		int ret;
 
 		if ((ret = usb_set_interface (instance->usb_dev, 1, 1)) < 0) {
+			dbg ("usb_set_interface returned %d!", ret);
 			up (&instance->serialize);
 			return ret;
 		}

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [linux-usb-devel] [PATCH] USB speedtouch: don't open a connection if no firmware
  2003-04-08  7:26 [PATCH] USB speedtouch: don't open a connection if no firmware Duncan Sands
@ 2003-04-08 20:12 ` Greg KH
  2003-04-08 20:22   ` Duncan Sands
  0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2003-04-08 20:12 UTC (permalink / raw)
  To: Duncan Sands; +Cc: linux-usb-devel, linux-kernel

On Tue, Apr 08, 2003 at 09:26:43AM +0200, Duncan Sands wrote:
> @@ -967,13 +969,12 @@
>  
>  	dbg ("Allocated new SARLib vcc 0x%p with vpi %d vci %d", new, vpi, vci);
>  
> -	MOD_INC_USE_COUNT;
> -
> -	if (instance->firmware_loaded)
> -		udsl_fire_receivers (instance);
> +	udsl_fire_receivers (instance);
>  
>  	dbg ("udsl_atm_open successful");
>  
> +	MOD_INC_USE_COUNT;
> +
>  	return 0;
>  }
>  

Any way you can convert this driver to not use MOD_INC_USE_COUNT, as
it's racy and not really supported anymore?  But if you _really_ have to
use it, you need to call it at the first possible chance to make any
race window smaller.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [linux-usb-devel] [PATCH] USB speedtouch: don't open a connection if no firmware
  2003-04-08 20:12 ` [linux-usb-devel] " Greg KH
@ 2003-04-08 20:22   ` Duncan Sands
  2003-04-08 21:40     ` Greg KH
  0 siblings, 1 reply; 6+ messages in thread
From: Duncan Sands @ 2003-04-08 20:22 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-usb-devel, linux-kernel

> > +	udsl_fire_receivers (instance);
> >
> >  	dbg ("udsl_atm_open successful");
> >
> > +	MOD_INC_USE_COUNT;
> > +
> >  	return 0;
> >  }
>
> Any way you can convert this driver to not use MOD_INC_USE_COUNT, as
> it's racy and not really supported anymore?  But if you _really_ have to
> use it, you need to call it at the first possible chance to make any
> race window smaller.

Hi Greg, I'm waiting on the fixes to the ATM layer (coming soon to a kernel
near you).  As for the position of MOD_INC_USE_COUNT, did you ever hear
of anyone getting bitten by a race like this?  If it makes you feel better, I
will move it up, probably just before I take the semaphore (since that is the
first place we can sleep).  I will do it tomorrow, OK?

All the best,

Duncan.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [linux-usb-devel] [PATCH] USB speedtouch: don't open a connection if no firmware
  2003-04-08 20:22   ` Duncan Sands
@ 2003-04-08 21:40     ` Greg KH
  2003-04-09  8:28       ` Duncan Sands
  0 siblings, 1 reply; 6+ messages in thread
From: Greg KH @ 2003-04-08 21:40 UTC (permalink / raw)
  To: Duncan Sands; +Cc: linux-usb-devel, linux-kernel

On Tue, Apr 08, 2003 at 10:22:10PM +0200, Duncan Sands wrote:
> > > +	udsl_fire_receivers (instance);
> > >
> > >  	dbg ("udsl_atm_open successful");
> > >
> > > +	MOD_INC_USE_COUNT;
> > > +
> > >  	return 0;
> > >  }
> >
> > Any way you can convert this driver to not use MOD_INC_USE_COUNT, as
> > it's racy and not really supported anymore?  But if you _really_ have to
> > use it, you need to call it at the first possible chance to make any
> > race window smaller.
> 
> Hi Greg, I'm waiting on the fixes to the ATM layer (coming soon to a kernel
> near you).

Ah, ok, that makes sense.

> As for the position of MOD_INC_USE_COUNT, did you ever hear
> of anyone getting bitten by a race like this?  If it makes you feel better, I
> will move it up, probably just before I take the semaphore (since that is the
> first place we can sleep).  I will do it tomorrow, OK?

Yes, it needs to be before any function that can sleep.  I'll hold off
applying this patch then.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [linux-usb-devel] [PATCH] USB speedtouch: don't open a connection if no firmware
  2003-04-08 21:40     ` Greg KH
@ 2003-04-09  8:28       ` Duncan Sands
  2003-04-09 23:31         ` Greg KH
  0 siblings, 1 reply; 6+ messages in thread
From: Duncan Sands @ 2003-04-09  8:28 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-usb-devel, linux-kernel

> > Hi Greg, I'm waiting on the fixes to the ATM layer (coming soon to a
> > kernel near you).
>
> Ah, ok, that makes sense.
>
> > As for the position of MOD_INC_USE_COUNT, did you ever hear
> > of anyone getting bitten by a race like this?  If it makes you feel
> > better, I will move it up, probably just before I take the semaphore
> > (since that is the first place we can sleep).  I will do it tomorrow, OK?
>
> Yes, it needs to be before any function that can sleep.  I'll hold off
> applying this patch then.

How about this one instead.  MOD_INC_USE_COUNT is placed before I call
any functions that can sleep.  Let's just hope that the call to me doesn't
come after some sleeping in the higher layers...

Duncan.

--- redux-2.5/drivers/usb/misc/speedtch.c	2003-04-08 08:49:33.000000000 +0200
+++ bollux-2.5/drivers/usb/misc/speedtch.c	2003-04-09 10:08:27.000000000 +0200
@@ -933,15 +933,24 @@
 	if (vcc->qos.aal != ATM_AAL5)
 		return -EINVAL;
 
+	if (!instance->firmware_loaded) {
+		dbg ("firmware not loaded!");
+		return -EAGAIN;
+	}
+
+	MOD_INC_USE_COUNT;
+
 	down (&instance->serialize); /* vs self, udsl_atm_close */
 
 	if (udsl_find_vcc (instance, vpi, vci)) {
 		up (&instance->serialize);
+		MOD_DEC_USE_COUNT;
 		return -EADDRINUSE;
 	}
 
 	if (!(new = kmalloc (sizeof (struct udsl_vcc_data), GFP_KERNEL))) {
 		up (&instance->serialize);
+		MOD_DEC_USE_COUNT;
 		return -ENOMEM;
 	}
 
@@ -967,10 +976,7 @@
 
 	dbg ("Allocated new SARLib vcc 0x%p with vpi %d vci %d", new, vpi, vci);
 
-	MOD_INC_USE_COUNT;
-
-	if (instance->firmware_loaded)
-		udsl_fire_receivers (instance);
+	udsl_fire_receivers (instance);
 
 	dbg ("udsl_atm_open successful");
 
@@ -1041,6 +1047,7 @@
 		int ret;
 
 		if ((ret = usb_set_interface (instance->usb_dev, 1, 1)) < 0) {
+			dbg ("usb_set_interface returned %d!", ret);
 			up (&instance->serialize);
 			return ret;
 		}

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [linux-usb-devel] [PATCH] USB speedtouch: don't open a connection if no firmware
  2003-04-09  8:28       ` Duncan Sands
@ 2003-04-09 23:31         ` Greg KH
  0 siblings, 0 replies; 6+ messages in thread
From: Greg KH @ 2003-04-09 23:31 UTC (permalink / raw)
  To: Duncan Sands; +Cc: linux-usb-devel, linux-kernel

On Wed, Apr 09, 2003 at 10:28:25AM +0200, Duncan Sands wrote:
> > > Hi Greg, I'm waiting on the fixes to the ATM layer (coming soon to a
> > > kernel near you).
> >
> > Ah, ok, that makes sense.
> >
> > > As for the position of MOD_INC_USE_COUNT, did you ever hear
> > > of anyone getting bitten by a race like this?  If it makes you feel
> > > better, I will move it up, probably just before I take the semaphore
> > > (since that is the first place we can sleep).  I will do it tomorrow, OK?
> >
> > Yes, it needs to be before any function that can sleep.  I'll hold off
> > applying this patch then.
> 
> How about this one instead.  MOD_INC_USE_COUNT is placed before I call
> any functions that can sleep.  Let's just hope that the call to me doesn't
> come after some sleeping in the higher layers...

Much better, thanks.  Applied.

greg k-h

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2003-04-09 23:28 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-04-08  7:26 [PATCH] USB speedtouch: don't open a connection if no firmware Duncan Sands
2003-04-08 20:12 ` [linux-usb-devel] " Greg KH
2003-04-08 20:22   ` Duncan Sands
2003-04-08 21:40     ` Greg KH
2003-04-09  8:28       ` Duncan Sands
2003-04-09 23:31         ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®