Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Mar 2009 10:20:05 GMT
From:      dfilter@FreeBSD.ORG (dfilter service)
To:        freebsd-multimedia@FreeBSD.org
Subject:   Re: kern/131785: commit references a PR
Message-ID:  <200903301020.n2UAK5tr087379@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/131785; it has been noted by GNATS.

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/131785: commit references a PR
Date: Mon, 30 Mar 2009 10:18:59 +0000 (UTC)

 Author: mav
 Date: Mon Mar 30 10:18:43 2009
 New Revision: 190547
 URL: http://svn.freebsd.org/changeset/base/190547
 
 Log:
   MFC rev. 190519:
   
    Fixup relative pointers after channel realloc. It fixes crash on systems
    with several HDA codecs per controller.
   
    While I am there, remove some unneeded dereferences.
   
   MFCed earlier than it should be so that it can be part of 7.2-BETA1.
   
   PR:		kern/131785
   Submitted by:	Tor Egge <Tor.Egge@cvsup.no.freebsd.org>
   Approved by:	re (kensmith)
 
 Modified:
   stable/7/sys/   (props changed)
   stable/7/sys/contrib/pf/   (props changed)
   stable/7/sys/dev/ath/ath_hal/   (props changed)
   stable/7/sys/dev/cxgb/   (props changed)
   stable/7/sys/dev/sound/pci/hda/hdac.c
 
 Modified: stable/7/sys/dev/sound/pci/hda/hdac.c
 ==============================================================================
 --- stable/7/sys/dev/sound/pci/hda/hdac.c	Mon Mar 30 10:16:49 2009	(r190546)
 +++ stable/7/sys/dev/sound/pci/hda/hdac.c	Mon Mar 30 10:18:43 2009	(r190547)
 @@ -83,7 +83,7 @@
  
  #include "mixer_if.h"
  
 -#define HDA_DRV_TEST_REV	"20090316_0130"
 +#define HDA_DRV_TEST_REV	"20090329_0131"
  
  SND_DECLARE_FILE("$FreeBSD$");
  
 @@ -5264,7 +5264,7 @@ hdac_audio_bind_as(struct hdac_devinfo *
  		    sizeof(struct hdac_chan) * cnt,
  		    M_HDAC, M_ZERO | M_NOWAIT);
  		if (sc->chans == NULL) {
 -			device_printf(devinfo->codec->sc->dev,
 +			device_printf(sc->dev,
  			    "Channels memory allocation failed!\n");
  			return;
  		}
 @@ -5274,17 +5274,20 @@ hdac_audio_bind_as(struct hdac_devinfo *
  		    M_HDAC, M_ZERO | M_NOWAIT);
  		if (sc->chans == NULL) {
  			sc->num_chans = 0;
 -			device_printf(devinfo->codec->sc->dev,
 +			device_printf(sc->dev,
  			    "Channels memory allocation failed!\n");
  			return;
  		}
 +		/* Fixup relative pointers after realloc */
 +		for (j = 0; j < sc->num_chans; j++)
 +			sc->chans[j].caps.fmtlist = sc->chans[j].fmtlist;
  	}
  	free = sc->num_chans;
  	sc->num_chans += cnt;
  
  	for (j = free; j < free + cnt; j++) {
 -		devinfo->codec->sc->chans[j].devinfo = devinfo;
 -		devinfo->codec->sc->chans[j].as = -1;
 +		sc->chans[j].devinfo = devinfo;
 +		sc->chans[j].as = -1;
  	}
  
  	/* Assign associations in order of their numbers, */
 @@ -5293,10 +5296,10 @@ hdac_audio_bind_as(struct hdac_devinfo *
  			continue;
  		
  		as[j].chan = free;
 -		devinfo->codec->sc->chans[free].as = j;
 -		devinfo->codec->sc->chans[free].dir =
 +		sc->chans[free].as = j;
 +		sc->chans[free].dir =
  		    (as[j].dir == HDA_CTL_IN) ? PCMDIR_REC : PCMDIR_PLAY;
 -		hdac_pcmchannel_setup(&devinfo->codec->sc->chans[free]);
 +		hdac_pcmchannel_setup(&sc->chans[free]);
  		free++;
  	}
  }
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200903301020.n2UAK5tr087379>