On Thu, Jun 27, 2002 at 12:52:30PM -0700, David Brownell wrote:
> This updates the doc and code to match what's been
> true since 2.4.0 (!) and keventd, removing some error
> checks that are now handled lower down as well as
> making a few messages less confusing ("kusbd" etc).
> 
> Please merge to Linus' latest.  I think it should
> also work against the 2.4 tree (with different "-p")
> and if so, it's worth applying there too.
> 
> - Dave

> --- ./drivers/usb-dist/core/usb.c     Mon Jun  3 10:18:29 2002
> +++ ./drivers/usb/core/usb.c  Thu Jun 27 10:08:21 2002
> @@ -754,39 +754,24 @@
>  /*
>   * USB hotplugging invokes what /proc/sys/kernel/hotplug says
>   * (normally /sbin/hotplug) when USB devices get added or removed.
> + * May not be called in_interrupt().
>   *
>   * This invokes a user mode policy agent, typically helping to load driver
>   * or other modules, configure the device, and more.  Drivers can provide
>   * a MODULE_DEVICE_TABLE to help with module loading subtasks.
>   *
> - * Some synchronization is important: removes can't start processing
> - * before the add-device processing completes, and vice versa.  That keeps
> - * a stack of USB-related identifiers stable while they're in use.  If we
> - * know that agents won't complete after they return (such as by forking
> - * a process that completes later), it's enough to just waitpid() for the
> - * agent -- as is currently done.
> - *
> - * The reason: we know we're called either from khubd (the typical case)
> - * or from root hub initialization (init, kapmd, modprobe, etc).  In both
> - * cases, we know no other thread can recycle our address, since we must
> - * already have been serialized enough to prevent that.
> + * keventd task sequencing ensures that removes can't start processing
> + * before the add-device processing completes, and vice versa ... but only
> + * so far as user mode reporting goes.  khubd can process disconnects
> + * for devices before the hotplug connect event gets reported, since there
> + * is no synchronization once keventd is given its job.  This basically
> + * means usb hotplug agents need to verify any usbfs names they see.
>   */
>  static void call_policy (char *verb, struct usb_device *dev)
>  {
>       char *argv [3], **envp, *buf, *scratch;
> -     int i = 0, value;
> +     int i = 0;
>  
> -     if (!hotplug_path [0])
> -             return;
> -     if (in_interrupt ()) {
> -             dbg ("In_interrupt");
> -             return;
> -     }
> -     if (!current->fs->root) {
> -             /* statically linked USB is initted rather early */
> -             dbg ("call_policy %s, num %d -- no FS yet", verb, dev->devnum);
> -             return;
> -     }

Why take out these checks?  Aren't they good to keep around?


>       if (dev->devnum < 0) {
>               dbg ("device already deleted ??");
>               return;
> @@ -854,7 +839,7 @@
>  
>               /* a simple/common case: one config, one interface, one driver
>                * with current altsetting being a reasonable setting.
> -              * everything needs a smart agent and usbfs; or can rely on
> +              * otherwise needs a smart agent and usbfs; or can rely on
>                * device-specific binding policies.
>                */

Hm, this still doesn't look any clearer :)

>               envp [i++] = scratch;
> @@ -870,12 +855,10 @@
>  
>       /* NOTE: user mode daemons can call the agents too */
>  
> -     dbg ("kusbd: %s %s %d", argv [0], verb, dev->devnum);
> -     value = call_usermodehelper (argv [0], argv, envp);
> +     dbg ("%s %s %d", argv [0], verb, dev->devnum);
> +     (void) call_usermodehelper (argv [0], argv, envp);
>       kfree (buf);
>       kfree (envp);
> -     if (value != 0)
> -             dbg ("kusbd policy returned 0x%x", value);

Why throw away the return value?

thanks,

greg k-h


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to