Re: [PATCH v2] usb: gadget: nokia: fix error recovery path for optional functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Dec 17 2013, Andrzej Pietrasiewicz wrote:
> In the nokia gadget some USB functions (obex 1 and 2, phonet) are optional.
>
> If at the start of nokia_bind_config e.g. fi_phonet is an error pointer,
> which can happen because we don't fail the bind process if
> usb_get_function_instance() fails for fi_phonet, then f_phonet is NULL, and
>
> phonet_stat = usb_add_function(c, f_phonet);
>
> is never called and phonet_stat remains 0.
>
> If, in these circumstances, we hit the err_conf label then !phonet_stat
> evaluates to true and we try usb_remove_function() with its second
> parameter being f_phonet which is NULL and it causes NULL pointer
> dereference.
>
> This patch changes the initial values of (obex1|obex2|phonet)_stat to a
> nonzero value so that if the err_conf label is hit while the respective
> functions have not been acquired the usb_remove_function() is not called
> for those functions.
>
> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@xxxxxxxxxxx>

As before:

Acked-by: Michal Nazarewicz <mina86@xxxxxxxxxx>

> ---
> v1..v2:
>
> - obex1/obex2/phonet_stat now initialized to -ENODEV instead of -1
>
>  drivers/usb/gadget/nokia.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/usb/gadget/nokia.c b/drivers/usb/gadget/nokia.c
> index 0a8099a..9598ed7 100644
> --- a/drivers/usb/gadget/nokia.c
> +++ b/drivers/usb/gadget/nokia.c
> @@ -126,9 +126,9 @@ static int __init nokia_bind_config(struct usb_configuration *c)
>  	struct usb_function *f_ecm;
>  	struct usb_function *f_obex2 = NULL;
>  	int status = 0;
> -	int obex1_stat = 0;
> -	int obex2_stat = 0;
> -	int phonet_stat = 0;
> +	int obex1_stat = -ENODEV;
> +	int obex2_stat = -ENODEV;
> +	int phonet_stat = -ENODEV;
>  
>  	if (!IS_ERR(fi_phonet)) {
>  		f_phonet = usb_get_function(fi_phonet);
> -- 
> 1.7.0.4
>

-- 
Best regards,                                         _     _
.o. | Liege of Serenely Enlightened Majesty of      o' \,=./ `o
..o | Computer Science,  Michał “mina86” Nazarewicz    (o o)
ooo +--<mpn@xxxxxxxxxx>--<xmpp:mina86@xxxxxxxxxx>--ooO--(_)--Ooo--

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux