Hi, > -----Original Message----- > From: Dmitry Torokhov [mailto:dmitry.torokhov@xxxxxxxxx] > Sent: 2013年2月24日 16:55 > To: linux-usb@xxxxxxxxxxxxxxx > Cc: Alan Stern; Greg Kroah-Hartman; Daniel Mack; Tzachi Perelstein; > Hema HK; Tony Lindgren; Yu Xu > Subject: [PATCH] USB: remove incorrect __exit markups > > Even if bus is not hot-pluggable, the devices can be unbound from the > driver via sysfs, so we should not be using __exit annotations on > remove() methods. The only exception is drivers registered with > platform_driver_probe() which specifically disables sysfs bind/unbind > attributes. > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> > --- > drivers/usb/host/ehci-mxc.c | 2 +- > drivers/usb/host/ehci-orion.c | 4 ++-- > drivers/usb/host/ehci-sh.c | 4 ++-- > drivers/usb/otg/isp1301_omap.c | 4 ++-- > drivers/usb/otg/twl4030-usb.c | 4 ++-- > drivers/usb/otg/twl6030-usb.c | 4 ++-- > drivers/usb/phy/mv_u3d_phy.c | 2 +- > 7 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/drivers/usb/host/ehci-mxc.c b/drivers/usb/host/ehci-mxc.c > index dedb80b..85c99c3 100644 > --- a/drivers/usb/host/ehci-mxc.c > +++ b/drivers/usb/host/ehci-mxc.c > @@ -199,7 +199,7 @@ err_alloc: > return ret; > } > > -static int __exit ehci_mxc_drv_remove(struct platform_device *pdev) > +static int ehci_mxc_drv_remove(struct platform_device *pdev) > { > struct mxc_usbh_platform_data *pdata = pdev->dev.platform_data; > struct usb_hcd *hcd = platform_get_drvdata(pdev); > diff --git a/drivers/usb/host/ehci-orion.c b/drivers/usb/host/ehci- > orion.c > index 914a3ec..38c45fb 100644 > --- a/drivers/usb/host/ehci-orion.c > +++ b/drivers/usb/host/ehci-orion.c > @@ -305,7 +305,7 @@ err1: > return err; > } > > -static int __exit ehci_orion_drv_remove(struct platform_device *pdev) > +static int ehci_orion_drv_remove(struct platform_device *pdev) > { > struct usb_hcd *hcd = platform_get_drvdata(pdev); > struct clk *clk; > @@ -333,7 +333,7 @@ MODULE_DEVICE_TABLE(of, ehci_orion_dt_ids); > > static struct platform_driver ehci_orion_driver = { > .probe = ehci_orion_drv_probe, > - .remove = __exit_p(ehci_orion_drv_remove), > + .remove = ehci_orion_drv_remove, > .shutdown = usb_hcd_platform_shutdown, > .driver = { > .name = "orion-ehci", > diff --git a/drivers/usb/host/ehci-sh.c b/drivers/usb/host/ehci-sh.c > index 0c90a24..2deef81 100644 > --- a/drivers/usb/host/ehci-sh.c > +++ b/drivers/usb/host/ehci-sh.c > @@ -171,7 +171,7 @@ fail_create_hcd: > return ret; > } > > -static int __exit ehci_hcd_sh_remove(struct platform_device *pdev) > +static int ehci_hcd_sh_remove(struct platform_device *pdev) > { > struct ehci_sh_priv *priv = platform_get_drvdata(pdev); > struct usb_hcd *hcd = priv->hcd; > @@ -197,7 +197,7 @@ static void ehci_hcd_sh_shutdown(struct > platform_device *pdev) > > static struct platform_driver ehci_hcd_sh_driver = { > .probe = ehci_hcd_sh_probe, > - .remove = __exit_p(ehci_hcd_sh_remove), > + .remove = ehci_hcd_sh_remove > .shutdown = ehci_hcd_sh_shutdown, > .driver = { > .name = "sh_ehci", > diff --git a/drivers/usb/otg/isp1301_omap.c > b/drivers/usb/otg/isp1301_omap.c > index af9cb11..8b9de95 100644 > --- a/drivers/usb/otg/isp1301_omap.c > +++ b/drivers/usb/otg/isp1301_omap.c > @@ -1212,7 +1212,7 @@ static void isp1301_release(struct device *dev) > > static struct isp1301 *the_transceiver; > > -static int __exit isp1301_remove(struct i2c_client *i2c) > +static int isp1301_remove(struct i2c_client *i2c) > { > struct isp1301 *isp; > > @@ -1634,7 +1634,7 @@ static struct i2c_driver isp1301_driver = { > .name = "isp1301_omap", > }, > .probe = isp1301_probe, > - .remove = __exit_p(isp1301_remove), > + .remove = isp1301_remove, > .id_table = isp1301_id, > }; > > diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030- > usb.c > index 0a70193..4e04579 100644 > --- a/drivers/usb/otg/twl4030-usb.c > +++ b/drivers/usb/otg/twl4030-usb.c > @@ -657,7 +657,7 @@ static int twl4030_usb_probe(struct platform_device > *pdev) > return 0; > } > > -static int __exit twl4030_usb_remove(struct platform_device *pdev) > +static int twl4030_usb_remove(struct platform_device *pdev) > { > struct twl4030_usb *twl = platform_get_drvdata(pdev); > int val; > @@ -701,7 +701,7 @@ MODULE_DEVICE_TABLE(of, twl4030_usb_id_table); > > static struct platform_driver twl4030_usb_driver = { > .probe = twl4030_usb_probe, > - .remove = __exit_p(twl4030_usb_remove), > + .remove = twl4030_usb_remove, > .driver = { > .name = "twl4030_usb", > .owner = THIS_MODULE, > diff --git a/drivers/usb/otg/twl6030-usb.c b/drivers/usb/otg/twl6030- > usb.c > index 8cd6cf4..7f3c5b0 100644 > --- a/drivers/usb/otg/twl6030-usb.c > +++ b/drivers/usb/otg/twl6030-usb.c > @@ -393,7 +393,7 @@ static int twl6030_usb_probe(struct platform_device > *pdev) > return 0; > } > > -static int __exit twl6030_usb_remove(struct platform_device *pdev) > +static int twl6030_usb_remove(struct platform_device *pdev) > { > struct twl6030_usb *twl = platform_get_drvdata(pdev); > > @@ -420,7 +420,7 @@ MODULE_DEVICE_TABLE(of, twl6030_usb_id_table); > > static struct platform_driver twl6030_usb_driver = { > .probe = twl6030_usb_probe, > - .remove = __exit_p(twl6030_usb_remove), > + .remove = twl6030_usb_remove, > .driver = { > .name = "twl6030_usb", > .owner = THIS_MODULE, > diff --git a/drivers/usb/phy/mv_u3d_phy.c > b/drivers/usb/phy/mv_u3d_phy.c > index eaddbe3..9fdbfcf 100644 > --- a/drivers/usb/phy/mv_u3d_phy.c > +++ b/drivers/usb/phy/mv_u3d_phy.c > @@ -315,7 +315,7 @@ err: > return ret; > } > > -static int __exit mv_u3d_phy_remove(struct platform_device *pdev) > +static int mv_u3d_phy_remove(struct platform_device *pdev) > { > struct mv_u3d_phy *mv_u3d_phy = platform_get_drvdata(pdev); > > -- > 1.7.11.7 > > > -- > Dmitry For mv_u3d_phy.c part, Acked-by: Yu Xu <yuxu@xxxxxxxxxxx> Regards, Yu Xu ?韬{.n?????%??檩??w?{.n???{炳???骅w*jg????????G??⒏⒎?:+v????????????"??????