浏览代码

ALSA: hda/ca0132 - Fix possible invalid DMA channel deallocation

... in the error path in dspxfr_image().

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 12 年之前
父节点
当前提交
8ae3124b8f
共有 1 个文件被更改,包括 3 次插入3 次删除
  1. 3 3
      sound/pci/hda/patch_ca0132.c

+ 3 - 3
sound/pci/hda/patch_ca0132.c

@@ -2167,7 +2167,7 @@ static const struct dsp_image_seg *get_next_seg_ptr(
 /*
  * CA0132 chip DSP transfer stuffs.  For DSP download.
  */
-#define INVALID_DMA_CHANNEL (~0UL)
+#define INVALID_DMA_CHANNEL (~0U)
 
 /*
  * Program a list of address/data pairs via the ChipIO widget.
@@ -2431,7 +2431,7 @@ static int dspxfr_image(struct hda_codec *codec,
 	dma_engine->buf_size = (ovly ? DSP_DMA_WRITE_BUFLEN_OVLY :
 			DSP_DMA_WRITE_BUFLEN_INIT) * 2;
 
-	dma_chan = 0;
+	dma_chan = ovly ? INVALID_DMA_CHANNEL : 0;
 
 	status = codec_set_converter_format(codec, WIDGET_CHIP_CTRL,
 					hda_format, &response);
@@ -2453,7 +2453,7 @@ static int dspxfr_image(struct hda_codec *codec,
 		status = dspio_alloc_dma_chan(codec, &dma_chan);
 		if (status < 0) {
 			snd_printdd(KERN_ERR "alloc dmachan fail");
-			dma_chan = (unsigned int)INVALID_DMA_CHANNEL;
+			dma_chan = INVALID_DMA_CHANNEL;
 			goto exit;
 		}
 	}