[alsa-devel] [PATCH v2 9/9] ALSA: line6: Add yet more sanity checks for invalid EPs

Johan Hovold johan at kernel.org
Wed Oct 11 16:39:52 CEST 2017


On Wed, Oct 11, 2017 at 12:36:46PM +0200, Takashi Iwai wrote:
> There are a few other places calling usb_submit_urb() with the URB
> composed from the fixed endpoint without validation.  For avoiding the
> spurious kernel warnings, add the sanity checks to appropriate
> places.
> 
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
> ---
>  sound/usb/line6/driver.c | 23 +++++++++++++++--------
>  sound/usb/line6/midi.c   | 17 +++++++++++------
>  2 files changed, 26 insertions(+), 14 deletions(-)
> 
> diff --git a/sound/usb/line6/driver.c b/sound/usb/line6/driver.c
> index 0da6f68761e3..7c682b219584 100644
> --- a/sound/usb/line6/driver.c
> +++ b/sound/usb/line6/driver.c
> @@ -175,17 +175,24 @@ static int line6_send_raw_message_async_part(struct message *msg,
>  	}
>  
>  	msg->done += bytes;
> -	retval = usb_submit_urb(urb, GFP_ATOMIC);
>  
> -	if (retval < 0) {
> -		dev_err(line6->ifcdev, "%s: usb_submit_urb failed (%d)\n",
> -			__func__, retval);
> -		usb_free_urb(urb);
> -		kfree(msg);
> -		return retval;
> -	}
> +	/* sanity checks of EP before actually submitting */
> +	retval = usb_urb_ep_type_check(urb);
> +	if (retval < 0)
> +		goto error;

This also seems like something which should have been done once at urb
allocation time, rather than on every submission (just like the URB
initialisation should have been).

> +
> +	retval = usb_submit_urb(urb, GFP_ATOMIC);
> +	if (retval < 0)
> +		goto error;
>  
>  	return 0;
> +
> + error:
> +	dev_err(line6->ifcdev, "%s: usb_submit_urb failed (%d)\n",
> +		__func__, retval);
> +	usb_free_urb(urb);
> +	kfree(msg);
> +	return retval;

Johan


More information about the Alsa-devel mailing list