Convert away from deprecated simple_strto*() interfaces to
parse_integer() and kstrto*().

Signed-off-by: Alexey Dobriyan <adobri...@gmail.com>
---

 sound/core/oss/mixer_oss.c  |    7 ++++---
 sound/core/oss/pcm_oss.c    |   13 +++++++++++--
 sound/core/pcm.c            |   13 +++++++++++--
 sound/core/pcm_memory.c     |   11 +++++++++--
 sound/pci/ac97/ac97_codec.c |    9 ++++++---
 sound/soc/soc-core.c        |    9 ++++++---
 6 files changed, 47 insertions(+), 15 deletions(-)

--- a/sound/core/oss/mixer_oss.c
+++ b/sound/core/oss/mixer_oss.c
@@ -1180,6 +1180,7 @@ static void snd_mixer_oss_proc_write(struct 
snd_info_entry *entry,
        int ch, idx;
        struct snd_mixer_oss_assign_table *tbl;
        struct slot *slot;
+       int rv;
 
        while (!snd_info_get_line(buffer, line, sizeof(line))) {
                cptr = snd_info_get_str(str, line, sizeof(str));
@@ -1200,9 +1201,9 @@ static void snd_mixer_oss_proc_write(struct 
snd_info_entry *entry,
                        continue;
                }
                snd_info_get_str(idxstr, cptr, sizeof(idxstr));
-               idx = simple_strtoul(idxstr, NULL, 10);
-               if (idx >= 0x4000) { /* too big */
-                       pr_err("ALSA: mixer_oss: invalid index %d\n", idx);
+               rv = parse_integer(idxstr, 10, (unsigned int *)&idx);
+               if (rv < 0 || idxstr[rv] || idx >= 0x4000) { /* too big */
+                       pr_err("ALSA: mixer_oss: invalid index %s\n", idxstr);
                        continue;
                }
                mutex_lock(&mixer->reg_mutex);
--- a/sound/core/oss/pcm_oss.c
+++ b/sound/core/oss/pcm_oss.c
@@ -2875,6 +2875,7 @@ static void snd_pcm_oss_proc_write(struct snd_info_entry 
*entry,
        const char *ptr;
        int idx1;
        struct snd_pcm_oss_setup *setup, *setup1, template;
+       int rv;
 
        while (!snd_info_get_line(buffer, line, sizeof(line))) {
                mutex_lock(&pstr->oss.setup_mutex);
@@ -2892,9 +2893,17 @@ static void snd_pcm_oss_proc_write(struct snd_info_entry 
*entry,
                        }
                }
                ptr = snd_info_get_str(str, ptr, sizeof(str));
-               template.periods = simple_strtoul(str, NULL, 10);
+               rv = parse_integer(str, 10, &template.periods);
+               if (rv < 0 || str[rv]) {
+                       mutex_unlock(&pstr->oss.setup_mutex);
+                       continue;
+               }
                ptr = snd_info_get_str(str, ptr, sizeof(str));
-               template.period_size = simple_strtoul(str, NULL, 10);
+               rv = parse_integer(str, 10, &template.period_size);
+               if (rv < 0 || str[rv]) {
+                       mutex_unlock(&pstr->oss.setup_mutex);
+                       continue;
+               }
                for (idx1 = 31; idx1 >= 0; idx1--)
                        if (template.period_size & (1 << idx1))
                                break;
--- a/sound/core/pcm.c
+++ b/sound/core/pcm.c
@@ -506,8 +506,17 @@ static void snd_pcm_xrun_debug_write(struct snd_info_entry 
*entry,
 {
        struct snd_pcm_str *pstr = entry->private_data;
        char line[64];
-       if (!snd_info_get_line(buffer, line, sizeof(line)))
-               pstr->xrun_debug = simple_strtoul(line, NULL, 10);
+       int rv;
+
+       if (!snd_info_get_line(buffer, line, sizeof(line))) {
+               rv = parse_integer(line, 10, &pstr->xrun_debug);
+               if (rv >= 0 && line[rv])
+                       rv = -EINVAL;
+               if (rv < 0) {
+                       buffer->error = rv;
+                       return;
+               }
+       }
 }
 #endif
 
--- a/sound/core/pcm_memory.c
+++ b/sound/core/pcm_memory.c
@@ -160,6 +160,7 @@ static void snd_pcm_lib_preallocate_proc_write(struct 
snd_info_entry *entry,
        char line[64], str[64];
        size_t size;
        struct snd_dma_buffer new_dmab;
+       int rv;
 
        if (substream->runtime) {
                buffer->error = -EBUSY;
@@ -167,8 +168,14 @@ static void snd_pcm_lib_preallocate_proc_write(struct 
snd_info_entry *entry,
        }
        if (!snd_info_get_line(buffer, line, sizeof(line))) {
                snd_info_get_str(str, line, sizeof(str));
-               size = simple_strtoul(str, NULL, 10) * 1024;
-               if ((size != 0 && size < 8192) || size > substream->dma_max) {
+               rv = parse_integer(str, 10, &size);
+               if (rv < 0) {
+                       buffer->error = rv;
+                       return;
+               }
+               size *= 1024;
+               if (str[rv] ||
+                   (size != 0 && size < 8192) || size > substream->dma_max) {
                        buffer->error = -EINVAL;
                        return;
                }
--- a/sound/pci/ac97/ac97_codec.c
+++ b/sound/pci/ac97/ac97_codec.c
@@ -2877,6 +2877,8 @@ static int apply_quirk_str(struct snd_ac97 *ac97, const 
char *typestr)
 {
        int i;
        struct quirk_table *q;
+       unsigned int type;
+       int rv;
 
        for (i = 0; i < ARRAY_SIZE(applicable_quirks); i++) {
                q = &applicable_quirks[i];
@@ -2884,9 +2886,10 @@ static int apply_quirk_str(struct snd_ac97 *ac97, const 
char *typestr)
                        return apply_quirk(ac97, i);
        }
        /* for compatibility, accept the numbers, too */
-       if (*typestr >= '0' && *typestr <= '9')
-               return apply_quirk(ac97, (int)simple_strtoul(typestr, NULL, 
10));
-       return -EINVAL;
+       rv = parse_integer(typestr, 10, &type);
+       if (rv < 0)
+               return rv;
+       return apply_quirk(ac97, type);
 }
 
 /**
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -250,7 +250,7 @@ static ssize_t codec_reg_write_file(struct file *file,
        char buf[32];
        size_t buf_size;
        char *start = buf;
-       unsigned long reg, value;
+       unsigned int reg, value;
        struct snd_soc_codec *codec = file->private_data;
        int ret;
 
@@ -261,10 +261,13 @@ static ssize_t codec_reg_write_file(struct file *file,
 
        while (*start == ' ')
                start++;
-       reg = simple_strtoul(start, &start, 16);
+       ret = parse_integer(start, 16, &reg);
+       if (ret < 0)
+               return ret;
+       start += ret;
        while (*start == ' ')
                start++;
-       ret = kstrtoul(start, 16, &value);
+       ret = kstrtouint(start, 16, &value);
        if (ret)
                return ret;
 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to