hiface usb-audio driver sets up URBs containing the fixed endpoints
without validation.  This may end up with an oops-like kernel warning
when submitted.

For avoiding it, this patch adds the calls of the new sanity-check
helper for URBs.

Signed-off-by: Takashi Iwai <ti...@suse.de>
---
 sound/usb/hiface/pcm.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/sound/usb/hiface/pcm.c b/sound/usb/hiface/pcm.c
index 175d8d6b7f59..396c317115b1 100644
--- a/sound/usb/hiface/pcm.c
+++ b/sound/usb/hiface/pcm.c
@@ -541,6 +541,8 @@ static int hiface_pcm_init_urb(struct pcm_urb *urb,
        usb_fill_bulk_urb(&urb->instance, chip->dev,
                          usb_sndbulkpipe(chip->dev, ep), (void *)urb->buffer,
                          PCM_PACKET_SIZE, handler, urb);
+       if (usb_urb_ep_type_check(&urb->instance))
+               return -EINVAL;
        init_usb_anchor(&urb->submitted);
 
        return 0;
@@ -599,9 +601,12 @@ int hiface_pcm_init(struct hiface_chip *chip, u8 
extra_freq)
        mutex_init(&rt->stream_mutex);
        spin_lock_init(&rt->playback.lock);
 
-       for (i = 0; i < PCM_N_URBS; i++)
-               hiface_pcm_init_urb(&rt->out_urbs[i], chip, OUT_EP,
+       for (i = 0; i < PCM_N_URBS; i++) {
+               ret = hiface_pcm_init_urb(&rt->out_urbs[i], chip, OUT_EP,
                                    hiface_pcm_out_urb_handler);
+               if (ret < 0)
+                       return ret;
+       }
 
        ret = snd_pcm_new(chip->card, "USB-SPDIF Audio", 0, 1, 0, &pcm);
        if (ret < 0) {
-- 
2.14.2

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to