diff options
Diffstat (limited to 'net/mac80211/rc80211_minstrel_debugfs.c')
| -rw-r--r-- | net/mac80211/rc80211_minstrel_debugfs.c | 42 | 
1 files changed, 10 insertions, 32 deletions
diff --git a/net/mac80211/rc80211_minstrel_debugfs.c b/net/mac80211/rc80211_minstrel_debugfs.c index a715d9454f6..241e76f3fdf 100644 --- a/net/mac80211/rc80211_minstrel_debugfs.c +++ b/net/mac80211/rc80211_minstrel_debugfs.c @@ -49,24 +49,19 @@  #include <linux/skbuff.h>  #include <linux/debugfs.h>  #include <linux/ieee80211.h> +#include <linux/slab.h>  #include <net/mac80211.h>  #include "rc80211_minstrel.h" -struct minstrel_stats_info { -	struct minstrel_sta_info *mi; -	char buf[4096]; -	size_t len; -}; - -static int +int  minstrel_stats_open(struct inode *inode, struct file *file)  {  	struct minstrel_sta_info *mi = inode->i_private; -	struct minstrel_stats_info *ms; +	struct minstrel_debugfs_info *ms;  	unsigned int i, tp, prob, eprob;  	char *p; -	ms = kmalloc(sizeof(*ms), GFP_KERNEL); +	ms = kmalloc(sizeof(*ms) + 4096, GFP_KERNEL);  	if (!ms)  		return -ENOMEM; @@ -106,36 +101,19 @@ minstrel_stats_open(struct inode *inode, struct file *file)  	return 0;  } -static ssize_t -minstrel_stats_read(struct file *file, char __user *buf, size_t len, loff_t *o) +ssize_t +minstrel_stats_read(struct file *file, char __user *buf, size_t len, loff_t *ppos)  { -	struct minstrel_stats_info *ms; -	char *src; +	struct minstrel_debugfs_info *ms;  	ms = file->private_data; -	src = ms->buf; - -	len = min(len, ms->len); -	if (len <= *o) -		return 0; - -	src += *o; -	len -= *o; -	*o += len; - -	if (copy_to_user(buf, src, len)) -		return -EFAULT; - -	return len; +	return simple_read_from_buffer(buf, len, ppos, ms->buf, ms->len);  } -static int +int  minstrel_stats_release(struct inode *inode, struct file *file)  { -	struct minstrel_stats_info *ms = file->private_data; - -	kfree(ms); - +	kfree(file->private_data);  	return 0;  }  |