ath5k: fix EEPROM dumping via debugfs
authorSergey Ryazanov <ryazanov.s.a@gmail.com>
Tue, 2 Aug 2016 11:19:28 +0000 (14:19 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Sat, 3 Sep 2016 10:02:24 +0000 (13:02 +0300)
EEPROM size calculated in 16-bit words, so we should take into account
this fact during buffer allocation.

CC: Jiri Slaby <jirislaby@gmail.com>
CC: Nick Kossifidis <mickflemm@gmail.com>
CC: Luis R. Rodriguez <mcgrof@do-not-panic.com>
Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath5k/debug.c

index 929d7cc..4f8d9ed 100644 (file)
@@ -909,7 +909,7 @@ static int open_file_eeprom(struct inode *inode, struct file *file)
        struct ath5k_hw *ah = inode->i_private;
        bool res;
        int i, ret;
-       u32 eesize;
+       u32 eesize;     /* NB: in 16-bit words */
        u16 val, *buf;
 
        /* Get eeprom size */
@@ -932,7 +932,7 @@ static int open_file_eeprom(struct inode *inode, struct file *file)
 
        /* Create buffer and read in eeprom */
 
-       buf = vmalloc(eesize);
+       buf = vmalloc(eesize * 2);
        if (!buf) {
                ret = -ENOMEM;
                goto err;
@@ -952,7 +952,7 @@ static int open_file_eeprom(struct inode *inode, struct file *file)
        }
 
        ep->buf = buf;
-       ep->len = i;
+       ep->len = eesize * 2;
 
        file->private_data = (void *)ep;