ASoC: soc-core: Fix null pointer dereference
authorDimitris Papastamos <dp@opensource.wolfsonmicro.com>
Tue, 7 Dec 2010 16:30:38 +0000 (16:30 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 8 Dec 2010 13:55:17 +0000 (13:55 +0000)
In case the codec driver did not provide a read/write function,
codec->driver->read|write will be NULL.  Ensure that we use the one
specified in codec->read|write to avoid oopsing when we access
the debugfs entries.  This is achieved by using snd_soc_read() and
snd_soc_write().

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/soc-core.c

index b4c8c38005037e4114de4d49525efc03b5cc57f6..a14a0507bbd0d2bf9f47fb9ada2e25bce7bb4a0c 100644 (file)
@@ -117,7 +117,7 @@ static ssize_t soc_codec_reg_show(struct snd_soc_codec *codec, char *buf)
                         * the register being volatile and the device being
                         * powered off.
                         */
-                       ret = codec->driver->read(codec, i);
+                       ret = snd_soc_read(codec, i);
                        if (ret >= 0)
                                count += snprintf(buf + count,
                                                  PAGE_SIZE - count,
@@ -228,7 +228,7 @@ static ssize_t codec_reg_write_file(struct file *file,
                start++;
        if (strict_strtoul(start, 16, &value))
                return -EINVAL;
-       codec->driver->write(codec, reg, value);
+       snd_soc_write(codec, reg, value);
        return buf_size;
 }