ASoC: topology: Check if ops is set before dereference
authorAmadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Thu, 14 Jan 2021 16:36:02 +0000 (11:36 -0500)
committerMark Brown <broonie@kernel.org>
Thu, 21 Jan 2021 12:37:05 +0000 (12:37 +0000)
Topology can be created without ops overrides, in that case trying to
assign any value would lead to dereferencing NULL pointer.

Other places in code have either checks for tplg->ops or loop using
*_count variables, hence they can't dereference NULL pointer and there
is no need to add more checks.

Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Link: https://lore.kernel.org/r/20210114163602.911205-3-amadeuszx.slawinski@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-topology.c

index 0d182a1..5476854 100644 (file)
@@ -2674,11 +2674,13 @@ int snd_soc_tplg_component_load(struct snd_soc_component *comp,
        tplg.fw = fw;
        tplg.dev = comp->dev;
        tplg.comp = comp;
-       tplg.ops = ops;
-       tplg.io_ops = ops->io_ops;
-       tplg.io_ops_count = ops->io_ops_count;
-       tplg.bytes_ext_ops = ops->bytes_ext_ops;
-       tplg.bytes_ext_ops_count = ops->bytes_ext_ops_count;
+       if (ops) {
+               tplg.ops = ops;
+               tplg.io_ops = ops->io_ops;
+               tplg.io_ops_count = ops->io_ops_count;
+               tplg.bytes_ext_ops = ops->bytes_ext_ops;
+               tplg.bytes_ext_ops_count = ops->bytes_ext_ops_count;
+       }
 
        ret = soc_tplg_load(&tplg);
        /* free the created components if fail to load topology */