Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9b50363 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
  ALSA: ASoC: Fix double free and memory leak in many codec drivers
  ALSA: CA0106 on MSI K8N Diamond PLUS Motherboard
parents 087713f4 3051e41a
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -249,11 +249,12 @@ static struct snd_ca0106_details ca0106_chip_details[] = {
	   .name   = "MSI K8N Diamond MB [SB0438]",
	   .gpio_type = 2,
	   .i2c_adc = 1 } ,
	 /* Another MSI K8N Diamond MB, which has apprently a different SSID */
	 /* MSI K8N Diamond PLUS MB */
	 { .serial = 0x10091102,
	   .name   = "MSI K8N Diamond MB",
	   .gpio_type = 2,
	   .i2c_adc = 1 } ,
	   .i2c_adc = 1,
	   .spi_dac = 2 }
	 /* Shuttle XPC SD31P which has an onboard Creative Labs
	  * Sound Blaster Live! 24-bit EAX
	  * high-definition 7.1 audio processor".
+7 −4
Original line number Diff line number Diff line
@@ -562,10 +562,9 @@ static int ak4535_codec_probe(struct i2c_adapter *adap, int addr, int kind)
	client_template.addr = addr;

	i2c = kmemdup(&client_template, sizeof(client_template), GFP_KERNEL);
	if (i2c == NULL) {
		kfree(codec);
	if (i2c == NULL)
		return -ENOMEM;
	}

	i2c_set_clientdata(i2c, codec);
	codec->control_data = i2c;

@@ -583,7 +582,6 @@ static int ak4535_codec_probe(struct i2c_adapter *adap, int addr, int kind)
	return ret;

err:
	kfree(codec);
	kfree(i2c);
	return ret;
}
@@ -660,6 +658,11 @@ static int ak4535_probe(struct platform_device *pdev)
#else
	/* Add other interfaces here */
#endif

	if (ret != 0) {
		kfree(codec->private_data);
		kfree(codec);
	}
	return ret;
}

+7 −4
Original line number Diff line number Diff line
@@ -1199,10 +1199,9 @@ static int aic3x_codec_probe(struct i2c_adapter *adap, int addr, int kind)
	client_template.addr = addr;

	i2c = kmemdup(&client_template, sizeof(client_template), GFP_KERNEL);
	if (i2c == NULL) {
		kfree(codec);
	if (i2c == NULL)
		return -ENOMEM;
	}

	i2c_set_clientdata(i2c, codec);
	codec->control_data = i2c;

@@ -1221,7 +1220,6 @@ static int aic3x_codec_probe(struct i2c_adapter *adap, int addr, int kind)
	return ret;

err:
	kfree(codec);
	kfree(i2c);
	return ret;
}
@@ -1302,6 +1300,11 @@ static int aic3x_probe(struct platform_device *pdev)
#else
	/* Add other interfaces here */
#endif

	if (ret != 0) {
		kfree(codec->private_data);
		kfree(codec);
	}
	return ret;
}

+5 −4
Original line number Diff line number Diff line
@@ -729,10 +729,9 @@ static int uda1380_codec_probe(struct i2c_adapter *adap, int addr, int kind)
	client_template.addr = addr;

	i2c = kmemdup(&client_template, sizeof(client_template), GFP_KERNEL);
	if (i2c == NULL) {
		kfree(codec);
	if (i2c == NULL)
		return -ENOMEM;
	}

	i2c_set_clientdata(i2c, codec);
	codec->control_data = i2c;

@@ -750,7 +749,6 @@ static int uda1380_codec_probe(struct i2c_adapter *adap, int addr, int kind)
	return ret;

err:
	kfree(codec);
	kfree(i2c);
	return ret;
}
@@ -817,6 +815,9 @@ static int uda1380_probe(struct platform_device *pdev)
#else
	/* Add other interfaces here */
#endif

	if (ret != 0)
		kfree(codec);
	return ret;
}

+5 −4
Original line number Diff line number Diff line
@@ -693,10 +693,9 @@ static int wm8510_codec_probe(struct i2c_adapter *adap, int addr, int kind)
	client_template.addr = addr;

	i2c = kmemdup(&client_template, sizeof(client_template), GFP_KERNEL);
	if (i2c == NULL) {
		kfree(codec);
	if (i2c == NULL)
		return -ENOMEM;
	}

	i2c_set_clientdata(i2c, codec);
	codec->control_data = i2c;

@@ -714,7 +713,6 @@ static int wm8510_codec_probe(struct i2c_adapter *adap, int addr, int kind)
	return ret;

err:
	kfree(codec);
	kfree(i2c);
	return ret;
}
@@ -782,6 +780,9 @@ static int wm8510_probe(struct platform_device *pdev)
#else
	/* Add other interfaces here */
#endif

	if (ret != 0)
		kfree(codec);
	return ret;
}

Loading