Commit 0b9b6df9 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge tag 'usb-for-v3.10-part2' of...

Merge tag 'usb-for-v3.10-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-next

Felipe writes:

usb: urgent fixes for v3.10 merge window

Here are some late urgent fixes for v3.10 merge window.

All of these errors were introduced by recent commits
which are in linux-next.

f_obex, multi and cdc2 gadget drivers have learned to
return a proper error code when something goes wrong.

usb_bind_phy() was mistakenly placed into .init.text
section which caused Section mismatch warnings and undefined
reference compile errors.

f_source_sink had a copy-paste error which is now corrected.

g_zero got a memory leak plugged.

Two defconfigs got fixed to enable the newly introduced
CONFIG_USB_PHY.
parents 4601de80 added5fc
...@@ -188,6 +188,7 @@ CONFIG_USB_EHCI_HCD=y ...@@ -188,6 +188,7 @@ CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_MXC=y CONFIG_USB_EHCI_MXC=y
CONFIG_USB_CHIPIDEA=y CONFIG_USB_CHIPIDEA=y
CONFIG_USB_CHIPIDEA_HOST=y CONFIG_USB_CHIPIDEA_HOST=y
CONFIG_USB_PHY=y
CONFIG_USB_MXS_PHY=y CONFIG_USB_MXS_PHY=y
CONFIG_USB_STORAGE=y CONFIG_USB_STORAGE=y
CONFIG_MMC=y CONFIG_MMC=y
......
...@@ -120,6 +120,7 @@ CONFIG_USB_EHCI_HCD=y ...@@ -120,6 +120,7 @@ CONFIG_USB_EHCI_HCD=y
CONFIG_USB_CHIPIDEA=y CONFIG_USB_CHIPIDEA=y
CONFIG_USB_CHIPIDEA_HOST=y CONFIG_USB_CHIPIDEA_HOST=y
CONFIG_USB_STORAGE=y CONFIG_USB_STORAGE=y
CONFIG_USB_PHY=y
CONFIG_USB_MXS_PHY=y CONFIG_USB_MXS_PHY=y
CONFIG_MMC=y CONFIG_MMC=y
CONFIG_MMC_MXS=y CONFIG_MMC_MXS=y
......
...@@ -129,8 +129,10 @@ static int __init cdc_do_config(struct usb_configuration *c) ...@@ -129,8 +129,10 @@ static int __init cdc_do_config(struct usb_configuration *c)
return PTR_ERR(fi_serial); return PTR_ERR(fi_serial);
f_acm = usb_get_function(fi_serial); f_acm = usb_get_function(fi_serial);
if (IS_ERR(f_acm)) if (IS_ERR(f_acm)) {
status = PTR_ERR(f_acm);
goto err_func_acm; goto err_func_acm;
}
status = usb_add_function(c, f_acm); status = usb_add_function(c, f_acm);
if (status) if (status)
......
...@@ -348,6 +348,7 @@ static int obex_bind(struct usb_configuration *c, struct usb_function *f) ...@@ -348,6 +348,7 @@ static int obex_bind(struct usb_configuration *c, struct usb_function *f)
/* allocate instance-specific endpoints */ /* allocate instance-specific endpoints */
status = -ENODEV;
ep = usb_ep_autoconfig(cdev->gadget, &obex_fs_ep_in_desc); ep = usb_ep_autoconfig(cdev->gadget, &obex_fs_ep_in_desc);
if (!ep) if (!ep)
goto fail; goto fail;
......
...@@ -898,7 +898,7 @@ static struct usb_function *source_sink_alloc_func( ...@@ -898,7 +898,7 @@ static struct usb_function *source_sink_alloc_func(
return &ss->function; return &ss->function;
} }
static void acm_free_instance(struct usb_function_instance *fi) static void source_sink_free_instance(struct usb_function_instance *fi)
{ {
struct f_ss_opts *ss_opts; struct f_ss_opts *ss_opts;
...@@ -913,7 +913,7 @@ static struct usb_function_instance *source_sink_alloc_inst(void) ...@@ -913,7 +913,7 @@ static struct usb_function_instance *source_sink_alloc_inst(void)
ss_opts = kzalloc(sizeof(*ss_opts), GFP_KERNEL); ss_opts = kzalloc(sizeof(*ss_opts), GFP_KERNEL);
if (!ss_opts) if (!ss_opts)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
ss_opts->func_inst.free_func_inst = acm_free_instance; ss_opts->func_inst.free_func_inst = source_sink_free_instance;
return &ss_opts->func_inst; return &ss_opts->func_inst;
} }
DECLARE_USB_FUNCTION(SourceSink, source_sink_alloc_inst, DECLARE_USB_FUNCTION(SourceSink, source_sink_alloc_inst,
......
...@@ -157,8 +157,10 @@ static __init int rndis_do_config(struct usb_configuration *c) ...@@ -157,8 +157,10 @@ static __init int rndis_do_config(struct usb_configuration *c)
return ret; return ret;
f_acm_rndis = usb_get_function(fi_acm); f_acm_rndis = usb_get_function(fi_acm);
if (IS_ERR(f_acm_rndis)) if (IS_ERR(f_acm_rndis)) {
ret = PTR_ERR(f_acm_rndis);
goto err_func_acm; goto err_func_acm;
}
ret = usb_add_function(c, f_acm_rndis); ret = usb_add_function(c, f_acm_rndis);
if (ret) if (ret)
......
...@@ -368,8 +368,10 @@ static int zero_unbind(struct usb_composite_dev *cdev) ...@@ -368,8 +368,10 @@ static int zero_unbind(struct usb_composite_dev *cdev)
del_timer_sync(&autoresume_timer); del_timer_sync(&autoresume_timer);
if (!IS_ERR_OR_NULL(func_ss)) if (!IS_ERR_OR_NULL(func_ss))
usb_put_function(func_ss); usb_put_function(func_ss);
usb_put_function_instance(func_inst_ss);
if (!IS_ERR_OR_NULL(func_lb)) if (!IS_ERR_OR_NULL(func_lb))
usb_put_function(func_lb); usb_put_function(func_lb);
usb_put_function_instance(func_inst_lb);
return 0; return 0;
} }
......
...@@ -413,7 +413,7 @@ EXPORT_SYMBOL_GPL(usb_remove_phy); ...@@ -413,7 +413,7 @@ EXPORT_SYMBOL_GPL(usb_remove_phy);
* *
* To be used by platform specific initialization code. * To be used by platform specific initialization code.
*/ */
int __init usb_bind_phy(const char *dev_name, u8 index, int usb_bind_phy(const char *dev_name, u8 index,
const char *phy_dev_name) const char *phy_dev_name)
{ {
struct usb_phy_bind *phy_bind; struct usb_phy_bind *phy_bind;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment