mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
iwlwifi: dynamically allocate buffer for sram debugfs file
Dynamically allocate memory for dumping SRAM based on the length of memory to be displayed. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
d23db55681
commit
2943f136ff
1 changed files with 13 additions and 2 deletions
|
@ -228,13 +228,21 @@ static ssize_t iwl_dbgfs_sram_read(struct file *file,
|
||||||
size_t count, loff_t *ppos)
|
size_t count, loff_t *ppos)
|
||||||
{
|
{
|
||||||
u32 val;
|
u32 val;
|
||||||
char buf[1024];
|
char *buf;
|
||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
int i;
|
int i;
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
struct iwl_priv *priv = (struct iwl_priv *)file->private_data;
|
struct iwl_priv *priv = (struct iwl_priv *)file->private_data;
|
||||||
const size_t bufsz = sizeof(buf);
|
size_t bufsz;
|
||||||
|
|
||||||
|
bufsz = 30 + priv->dbgfs->sram_len * sizeof(char) * 12;
|
||||||
|
buf = kmalloc(bufsz, GFP_KERNEL);
|
||||||
|
if (!buf)
|
||||||
|
return -ENOMEM;
|
||||||
|
pos += scnprintf(buf + pos, bufsz - pos, "sram_len: %d\n",
|
||||||
|
priv->dbgfs->sram_len);
|
||||||
|
pos += scnprintf(buf + pos, bufsz - pos, "sram_offset: %d\n",
|
||||||
|
priv->dbgfs->sram_offset);
|
||||||
for (i = priv->dbgfs->sram_len; i > 0; i -= 4) {
|
for (i = priv->dbgfs->sram_len; i > 0; i -= 4) {
|
||||||
val = iwl_read_targ_mem(priv, priv->dbgfs->sram_offset + \
|
val = iwl_read_targ_mem(priv, priv->dbgfs->sram_offset + \
|
||||||
priv->dbgfs->sram_len - i);
|
priv->dbgfs->sram_len - i);
|
||||||
|
@ -251,11 +259,14 @@ static ssize_t iwl_dbgfs_sram_read(struct file *file,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!(i % 16))
|
||||||
|
pos += scnprintf(buf + pos, bufsz - pos, "\n");
|
||||||
pos += scnprintf(buf + pos, bufsz - pos, "0x%08x ", val);
|
pos += scnprintf(buf + pos, bufsz - pos, "0x%08x ", val);
|
||||||
}
|
}
|
||||||
pos += scnprintf(buf + pos, bufsz - pos, "\n");
|
pos += scnprintf(buf + pos, bufsz - pos, "\n");
|
||||||
|
|
||||||
ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
|
ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos);
|
||||||
|
kfree(buf);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue