Hi, On Tue, Oct 24, 2017 at 03:08:35AM -0700, Kees Cook wrote: > In preparation for unconditionally passing the struct timer_list pointer to > all timer callbacks, switch to using the new timer_setup() and from_timer() > to pass the timer pointer explicitly. > > Instead of a per-device static timer variable, a spare timer "dev_timer" > is added to the musb structure for devices to use for their per-device > timer. > > Cc: Bin Liu <b-liu@xxxxxx> > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Cc: linux-usb@xxxxxxxxxxxxxxx > Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> > --- > drivers/usb/musb/am35x.c | 24 +++++++++++------------- > drivers/usb/musb/blackfin.c | 13 ++++++------- > drivers/usb/musb/blackfin.h | 2 -- > drivers/usb/musb/da8xx.c | 26 ++++++++++++-------------- > drivers/usb/musb/davinci.c | 20 +++++++++----------- > drivers/usb/musb/musb_core.c | 6 +++--- > drivers/usb/musb/musb_core.h | 1 + > drivers/usb/musb/musb_dsps.c | 7 ++++--- > drivers/usb/musb/tusb6010.c | 20 +++++++++----------- > 9 files changed, 55 insertions(+), 64 deletions(-) [snip] > diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h > index 20f4614178d9..e8573975743d 100644 > --- a/drivers/usb/musb/musb_core.h > +++ b/drivers/usb/musb/musb_core.h > @@ -345,6 +345,7 @@ struct musb { > struct list_head pending_list; /* pending work list */ > > struct timer_list otg_timer; > + struct timer_list dev_timer; Now since dev_timer is added in struct musb for glue drivers, > struct notifier_block nb; > > struct dma_controller *dma_controller; > diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c > index f6b526606ad1..e3d0e626a5d6 100644 > --- a/drivers/usb/musb/musb_dsps.c > +++ b/drivers/usb/musb/musb_dsps.c > @@ -282,9 +282,10 @@ static int dsps_check_status(struct musb *musb, void *unused) > return 0; > } > > -static void otg_timer(unsigned long _musb) > +static void otg_timer(struct timer_list *t) > { > - struct musb *musb = (void *)_musb; > + struct dsps_glue *glue = from_timer(glue, t, timer); > + struct musb *musb = platform_get_drvdata(glue->musb); > struct device *dev = musb->controller; > unsigned long flags; > int err; > @@ -480,7 +481,7 @@ static int dsps_musb_init(struct musb *musb) > } > } > > - setup_timer(&glue->timer, otg_timer, (unsigned long) musb); > + timer_setup(&glue->timer, otg_timer, 0); this glue->timer is duplicate. It can be removed and use musb->dev_timer instead as other glue drivers do. Regards, -Bin. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html