mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
ASoC: codecs: wcd938x-sdw: fix use after free on driver unbind
commitf0dfdcbe70upstream. Make sure to deregister the component when the driver is being unbound and before the underlying device-managed resources are freed. Fixes:16572522ae("ASoC: codecs: wcd938x-sdw: add SoundWire driver") Cc: stable@vger.kernel.org # 5.14 Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Signed-off-by: Johan Hovold <johan+linaro@kernel.org> Link: https://lore.kernel.org/r/20231003155558.27079-7-johan+linaro@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
d496b6638c
commit
0d912daab4
@@ -1281,6 +1281,15 @@ static int wcd9380_probe(struct sdw_slave *pdev,
|
|||||||
return component_add(dev, &wcd938x_sdw_component_ops);
|
return component_add(dev, &wcd938x_sdw_component_ops);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int wcd9380_remove(struct sdw_slave *pdev)
|
||||||
|
{
|
||||||
|
struct device *dev = &pdev->dev;
|
||||||
|
|
||||||
|
component_del(dev, &wcd938x_sdw_component_ops);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct sdw_device_id wcd9380_slave_id[] = {
|
static const struct sdw_device_id wcd9380_slave_id[] = {
|
||||||
SDW_SLAVE_ENTRY(0x0217, 0x10d, 0),
|
SDW_SLAVE_ENTRY(0x0217, 0x10d, 0),
|
||||||
{},
|
{},
|
||||||
@@ -1320,6 +1329,7 @@ static const struct dev_pm_ops wcd938x_sdw_pm_ops = {
|
|||||||
|
|
||||||
static struct sdw_driver wcd9380_codec_driver = {
|
static struct sdw_driver wcd9380_codec_driver = {
|
||||||
.probe = wcd9380_probe,
|
.probe = wcd9380_probe,
|
||||||
|
.remove = wcd9380_remove,
|
||||||
.ops = &wcd9380_slave_ops,
|
.ops = &wcd9380_slave_ops,
|
||||||
.id_table = wcd9380_slave_id,
|
.id_table = wcd9380_slave_id,
|
||||||
.driver = {
|
.driver = {
|
||||||
|
|||||||
Reference in New Issue
Block a user