Update of /cvsroot/alsa/alsa-kernel/usb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2641/alsa-kernel/usb
Modified Files: usbaudio.h usbaudio.c usbmixer.c Log Message: replace usage of interface index with calls to usb_ifnum_to_if Index: usbaudio.h =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/usb/usbaudio.h,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- usbaudio.h 17 Mar 2004 13:02:18 -0000 1.25 +++ usbaudio.h 17 Mar 2004 13:08:46 -0000 1.26 @@ -207,7 +207,6 @@ * (conditional for compatibility with the older API) */ #ifndef get_iface_desc -#define get_iface(cfg, num) ((cfg)->interface[(num)]) #define get_iface_desc(iface) (&(iface)->desc) #define get_endpoint(alt,ep) (&(alt)->endpoint[ep].desc) #define get_ep_desc(ep) (&(ep)->desc) Index: usbaudio.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/usb/usbaudio.c,v retrieving revision 1.87 retrieving revision 1.88 diff -u -r1.87 -r1.88 --- usbaudio.c 8 Mar 2004 09:29:51 -0000 1.87 +++ usbaudio.c 17 Mar 2004 13:08:47 -0000 1.88 @@ -1082,7 +1082,8 @@ int is_playback = subs->direction == SNDRV_PCM_STREAM_PLAYBACK; int err; - iface = get_iface(config, fmt->iface); + iface = usb_ifnum_to_if(dev, fmt->iface); + snd_assert(iface, return -EINVAL); alts = &iface->altsetting[fmt->altset_idx]; altsd = get_iface_desc(alts); snd_assert(altsd->bAlternateSetting == fmt->altsetting, return -EINVAL); @@ -1213,10 +1214,9 @@ return ret; if (subs->cur_rate != rate) { - struct usb_host_config *config = subs->dev->actconfig; struct usb_host_interface *alts; struct usb_interface *iface; - iface = get_iface(config, fmt->iface); + iface = usb_ifnum_to_if(subs->dev, fmt->iface); alts = &iface->altsetting[fmt->altset_idx]; ret = init_usb_sample_rate(subs->dev, subs->interface, alts, fmt, rate); if (ret < 0) @@ -2269,7 +2269,6 @@ static int parse_audio_endpoints(snd_usb_audio_t *chip, int iface_no) { struct usb_device *dev; - struct usb_host_config *config; struct usb_interface *iface; struct usb_host_interface *alts; struct usb_interface_descriptor *altsd; @@ -2279,10 +2278,9 @@ unsigned char *fmt, *csep; dev = chip->dev; - config = dev->actconfig; /* parse the interface's altsettings */ - iface = get_iface(config, iface_no); + iface = usb_ifnum_to_if(dev, iface_no); for (i = 0; i < iface->num_altsetting; i++) { alts = &iface->altsetting[i]; altsd = get_iface_desc(alts); @@ -2448,15 +2446,13 @@ static int snd_usb_create_streams(snd_usb_audio_t *chip, int ctrlif) { struct usb_device *dev = chip->dev; - struct usb_host_config *config; struct usb_host_interface *host_iface; struct usb_interface *iface; unsigned char *p1; int i, j; /* find audiocontrol interface */ - config = dev->actconfig; - host_iface = &get_iface(config, ctrlif)->altsetting[0]; + host_iface = &usb_ifnum_to_if(dev, ctrlif)->altsetting[0]; if (!(p1 = snd_usb_find_csint_desc(host_iface->extra, host_iface->extralen, NULL, HEADER))) { snd_printk(KERN_ERR "cannot find HEADER\n"); return -EINVAL; @@ -2473,12 +2469,12 @@ struct usb_host_interface *alts; struct usb_interface_descriptor *altsd; j = p1[8 + i]; - if (j >= get_cfg_desc(config)->bNumInterfaces) { + iface = usb_ifnum_to_if(dev, j); + if (!iface) { snd_printk(KERN_ERR "%d:%u:%d : does not exist\n", dev->devnum, ctrlif, j); continue; } - iface = get_iface(config, j); if (usb_interface_claimed(iface)) { snd_printdd(KERN_INFO "%d:%d:%d: skipping, already claimed\n", dev->devnum, ctrlif, j); continue; @@ -2535,6 +2531,11 @@ kfree(fp); return err; } + if (fp->iface != get_iface_desc(&iface->altsetting[0])->bInterfaceNumber || + fp->altset_idx >= iface->num_altsetting) { + kfree(fp); + return -EINVAL; + } alts = &iface->altsetting[fp->altset_idx]; usb_set_interface(chip->dev, fp->iface, 0); init_usb_pitch(chip->dev, fp->iface, alts, fp); Index: usbmixer.c =================================================================== RCS file: /cvsroot/alsa/alsa-kernel/usb/usbmixer.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- usbmixer.c 9 Mar 2004 16:57:36 -0000 1.25 +++ usbmixer.c 17 Mar 2004 13:08:47 -0000 1.26 @@ -1481,7 +1481,7 @@ int err; const struct usbmix_ctl_map *map; struct usb_device_descriptor *dev = &chip->dev->descriptor; - struct usb_host_interface *hostif = &get_iface(chip->dev->actconfig, ctrlif)->altsetting[0]; + struct usb_host_interface *hostif = &usb_ifnum_to_if(chip->dev, ctrlif)->altsetting[0]; strcpy(chip->card->mixername, "USB Mixer"); ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ Alsa-cvslog mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-cvslog