lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <CACVXFVOY=sKu3cEDiO8K+0Yd_Ruk=Wjpz-v1CqcueJZzXaXkyQ@mail.gmail.com> Date: Sat, 15 Dec 2012 22:33:03 +0800 From: Ming Lei <ming.lei@...onical.com> To: Oliver Neukum <oneukum@...e.de> Cc: Steve Glendinning <steve@...well.net>, netdev@...r.kernel.org Subject: Re: Dealing nicely with PM failure On Fri, Dec 14, 2012 at 10:56 PM, Oliver Neukum <oneukum@...e.de> wrote: > Hi, > > this question about the smsc devices gave me an idea. > How about this? It is a good idea to handle remote wakeup failure, but I am wondering if it is suitable to apply it on current smsc problem because we know in advance if these devices can support auto suspend. > > From f1bdff89eea4c10102f867f9f22cb2b60519e425 Mon Sep 17 00:00:00 2001 > From: Oliver Neukum <oliver@...kum.org> > Date: Fri, 14 Dec 2012 15:51:36 +0100 > Subject: [PATCH] usbnet: handle PM failure gracefully > > If a device fails to do remote wakeup, this is no reason > to abort an open totally. This patch just continues without > runtime PM. > > Signed-off-by: Oliver Neukum <oneukum@...e.de> > --- > drivers/net/usb/usbnet.c | 17 +++++++++-------- > include/linux/usb/usbnet.h | 1 + > 2 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c > index c04110b..2010eef 100644 > --- a/drivers/net/usb/usbnet.c > +++ b/drivers/net/usb/usbnet.c > @@ -719,7 +719,8 @@ int usbnet_stop (struct net_device *net) > dev->flags = 0; > del_timer_sync (&dev->delay); > tasklet_kill (&dev->bh); > - if (info->manage_power) > + if (info->manage_power && > + !test_and_clear_bit(EVENT_NO_RUNTIME_PM, &dev->flags)) > info->manage_power(dev, 0); > else > usb_autopm_put_interface(dev->intf); > @@ -793,15 +794,15 @@ int usbnet_open (struct net_device *net) > // delay posting reads until we're fully open > tasklet_schedule (&dev->bh); > if (info->manage_power) { > - retval = info->manage_power(dev, 1); > - if (retval < 0) > - goto done_manage_power_error; > - usb_autopm_put_interface(dev->intf); > + int r; > + > + r = info->manage_power(dev, 1); > + if (r < 0) > + set_bit(EVENT_NO_RUNTIME_PM, &dev->flags); > + else > + usb_autopm_put_interface(dev->intf); > } > return retval; > - > -done_manage_power_error: > - clear_bit(EVENT_DEV_OPEN, &dev->flags); > done: > usb_autopm_put_interface(dev->intf); > done_nopm: > diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h > index 9bbeabf..288b32a 100644 > --- a/include/linux/usb/usbnet.h > +++ b/include/linux/usb/usbnet.h > @@ -69,6 +69,7 @@ struct usbnet { > # define EVENT_DEV_ASLEEP 6 > # define EVENT_DEV_OPEN 7 > # define EVENT_DEVICE_REPORT_IDLE 8 > +# define EVENT_NO_RUNTIME_PM 9 > }; > > static inline struct usb_driver *driver_of(struct usb_interface *intf) > -- > 1.7.7 > > Thanks, -- Ming Lei -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists