{
struct buf_data *pcmds = file->private_data;
ssize_t ret = 0;
- int blen = 0;
+ unsigned int blen = 0;
char *string_buf;
mutex_lock(&pcmds->dbg_mutex);
/* Allocate memory for the received string */
blen = count + (pcmds->sblen);
+ if (blen > U32_MAX - 1) {
+ mutex_unlock(&pcmds->dbg_mutex);
+ return -EINVAL;
+ }
+
string_buf = krealloc(pcmds->string_buf, blen + 1, GFP_KERNEL);
if (!string_buf) {
pr_err("%s: Failed to allocate memory\n", __func__);
return -ENOMEM;
}
+ pcmds->string_buf = string_buf;
/* Writing in batches is possible */
ret = simple_write_to_buffer(string_buf, blen, ppos, p, count);
if (ret < 0) {
}
string_buf[ret] = '\0';
- pcmds->string_buf = string_buf;
pcmds->sblen = count;
mutex_unlock(&pcmds->dbg_mutex);
return ret;