iwlwifi: reduce stack size
PATCH 1/1 iwlwifi: reduce stack size
From: Frank Seidel <[email protected]>
Reduce stack memory footprint of iwlwifi.
(From >1000 bytes for each *_table_read
on i386 down to 32)
Signed-off-by Frank Seidel <[email protected]>
--- drivers/net/wireless/iwlwifi/iwl-3945-rs.c | 11 +++++++++-- drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 23 +++++++++++++++++++---- 2 files changed, 28 insertions(+), 6 deletions(-)
drivers/net/wireless/iwlwifi/iwl-3945-rs.c +9 -2
@@ -815,11 +815,16 @@ static ssize_t iwl3945_sta_dbgfs_stats_tchar __user *user_buf, size_t count, loff_t *ppos) { - char buff[1024]; + char *buff;int desc =0 ;int j; +ssize_t ret;struct iwl3945_rs_sta *lq_sta = file->private_data; + buff =kmalloc (1024 ,GFP_KERNEL ); +if (!buff) +return -ENOMEM ; + desc += sprintf(buff + desc, "tx packets=%d last rate index=%d\n" "rate=0x%X flush time %d\n", lq_sta->tx_packets,
@@ -832,7 +837,9 @@ static ssize_t iwl3945_sta_dbgfs_stats_t lq_sta->win[j].success_counter, lq_sta->win[j].success_ratio); } -return simple_read_from_buffer (user_buf, count, ppos, buff, desc); + ret =simple_read_from_buffer (user_buf, count, ppos, buff, desc); +kfree (buff); +return ret; }static const struct file_operations rs_sta_dbgfs_stats_table_ops = {
drivers/net/wireless/iwlwifi/iwl-agn-rs.c +19 -4
@@ -2474,12 +2474,17 @@ static ssize_t rs_sta_dbgfs_scale_table_static ssize_t rs_sta_dbgfs_scale_table_read (struct file *file,char __user *user_buf,size_t count,loff_t *ppos) { -char buff[1024 ]; +char *buff;int desc =0 ;int i =0 ; +ssize_t ret;struct iwl_lq_sta *lq_sta = file->private_data; + buff =kmalloc (1024 ,GFP_KERNEL ); +if (!buff) +return -ENOMEM ; + desc +=sprintf (buff+desc,"sta_id %d\n" , lq_sta->lq.sta_id); desc += sprintf(buff+desc, "failed=%d success=%d rate=0%X\n", lq_sta->total_failed, lq_sta->total_success,
@@ -2511,7 +2516,9 @@ static ssize_t rs_sta_dbgfs_scale_table_ desc +=sprintf (buff+desc," rate[%d] 0x%X\n" , i,le32_to_cpu (lq_sta->lq.rs_table[i].rate_n_flags)); -return simple_read_from_buffer (user_buf, count, ppos, buff, desc); + ret =simple_read_from_buffer (user_buf, count, ppos, buff, desc); +kfree (buff); +return ret; }static const struct file_operations rs_sta_dbgfs_scale_table_ops = {
@@ -2522,11 +2529,17 @@ static const struct file_operations rs_sstatic ssize_t rs_sta_dbgfs_stats_table_read (struct file *file,char __user *user_buf,size_t count,loff_t *ppos) { -char buff[1024 ]; +char *buff;int desc =0 ;int i, j; +ssize_t ret;struct iwl_lq_sta *lq_sta = file->private_data; + + buff =kmalloc (1024 ,GFP_KERNEL ); +if (!buff) +return -ENOMEM ; +for (i =0 ; i <LQ_SIZE ; i++) { desc += sprintf(buff+desc, "%s type=%d SGI=%d FAT=%d DUP=%d\n" "rate=0x%X\n",
@@ -2544,7 +2557,9 @@ static ssize_t rs_sta_dbgfs_stats_table_ lq_sta->lq_info[i].win[j].success_ratio); } } -return simple_read_from_buffer (user_buf, count, ppos, buff, desc); + ret =simple_read_from_buffer (user_buf, count, ppos, buff, desc); +kfree (buff); +return ret; }static const struct file_operations rs_sta_dbgfs_stats_table_ops = {
Quoted 7 lines · Frank Seidel
From: Frank Seidel <[email protected]>
Reduce stack memory footprint of iwlwifi.
(From >1000 bytes for each*_table_read
on i386 down to 32)Signed-off-by Frank Seidel <[email protected]>
Thank you.
Acked-by Reinette Chatre <[email protected]>
Reinette