[alsa-devel] [PATCH] riptide: postfix increment and off by one

Takashi Iwai tiwai at suse.de
Thu May 14 08:42:48 CEST 2009


At Wed, 13 May 2009 20:44:07 +0200,
Roel Kluin wrote:
> 
> With a postfix increment these variables are incremented beyond
> CMDIF_TIMEOUT / MAX_WRITE_RETRY.
> 
> Signed-off-by: Roel Kluin <roel.kluin at gmail.com>

Applied now to sound git tree.  Thanks.


Takashi

> ---
> diff --git a/sound/pci/riptide/riptide.c b/sound/pci/riptide/riptide.c
> index 6f10344..e51a5ef 100644
> --- a/sound/pci/riptide/riptide.c
> +++ b/sound/pci/riptide/riptide.c
> @@ -889,7 +889,7 @@ static int sendcmd(struct cmdif *cif, u32 flags, u32 cmd, u32 parm,
>  	spin_lock_irqsave(&cif->lock, irqflags);
>  	while (i++ < CMDIF_TIMEOUT && !IS_READY(cif->hwport))
>  		udelay(10);
> -	if (i >= CMDIF_TIMEOUT) {
> +	if (i > CMDIF_TIMEOUT) {
>  		err = -EBUSY;
>  		goto errout;
>  	}
> @@ -907,8 +907,10 @@ static int sendcmd(struct cmdif *cif, u32 flags, u32 cmd, u32 parm,
>  			WRITE_PORT_ULONG(cmdport->data1, cmd);	/* write cmd */
>  			if ((flags & RESP) && ret) {
>  				while (!IS_DATF(cmdport) &&
> -				       time++ < CMDIF_TIMEOUT)
> +				       time < CMDIF_TIMEOUT) {
>  					udelay(10);
> +					time++;
> +				}
>  				if (time < CMDIF_TIMEOUT) {	/* read response */
>  					ret->retlongs[0] =
>  					    READ_PORT_ULONG(cmdport->data1);
> @@ -1454,7 +1456,7 @@ static int snd_riptide_trigger(struct snd_pcm_substream *substream, int cmd)
>  			SEND_GPOS(cif, 0, data->id, &rptr);
>  			udelay(1);
>  		} while (i != rptr.retlongs[1] && j++ < MAX_WRITE_RETRY);
> -		if (j >= MAX_WRITE_RETRY)
> +		if (j > MAX_WRITE_RETRY)
>  			snd_printk(KERN_ERR "Riptide: Could not stop stream!");
>  		break;
>  	case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
> @@ -1783,7 +1785,7 @@ snd_riptide_codec_write(struct snd_ac97 *ac97, unsigned short reg,
>  		SEND_SACR(cif, val, reg);
>  		SEND_RACR(cif, reg, &rptr);
>  	} while (rptr.retwords[1] != val && i++ < MAX_WRITE_RETRY);
> -	if (i == MAX_WRITE_RETRY)
> +	if (i > MAX_WRITE_RETRY)
>  		snd_printdd("Write AC97 reg failed\n");
>  }
>  
> 


More information about the Alsa-devel mailing list