diff options
Diffstat (limited to 'drivers/misc/eeprom/idt_89hpesx.c')
-rw-r--r-- | drivers/misc/eeprom/idt_89hpesx.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/misc/eeprom/idt_89hpesx.c b/drivers/misc/eeprom/idt_89hpesx.c index b0cff4b152da..9aec3338e37d 100644 --- a/drivers/misc/eeprom/idt_89hpesx.c +++ b/drivers/misc/eeprom/idt_89hpesx.c @@ -566,7 +566,7 @@ static int idt_eeprom_read_byte(struct idt_89hpesx_dev *pdev, u16 memaddr, eeseq.memaddr = cpu_to_le16(memaddr); ret = pdev->smb_write(pdev, &smbseq); if (ret != 0) { - dev_err(dev, "Failed to init eeprom addr 0x%02hhx", + dev_err(dev, "Failed to init eeprom addr 0x%02x", memaddr); break; } @@ -575,7 +575,7 @@ static int idt_eeprom_read_byte(struct idt_89hpesx_dev *pdev, u16 memaddr, smbseq.bytecnt = EEPROM_RD_CNT; ret = pdev->smb_read(pdev, &smbseq); if (ret != 0) { - dev_err(dev, "Failed to read eeprom data 0x%02hhx", + dev_err(dev, "Failed to read eeprom data 0x%02x", memaddr); break; } @@ -810,7 +810,7 @@ static int idt_csr_read(struct idt_89hpesx_dev *pdev, u16 csraddr, u32 *data) smbseq.bytecnt = CSR_RD_CNT; ret = pdev->smb_read(pdev, &smbseq); if (ret != 0) { - dev_err(dev, "Failed to read csr 0x%04hx", + dev_err(dev, "Failed to read csr 0x%04x", CSR_REAL_ADDR(csraddr)); goto err_mutex_unlock; } @@ -909,14 +909,18 @@ static ssize_t idt_dbgfs_csr_write(struct file *filep, const char __user *ubuf, u32 csraddr, csrval; char *buf; + if (*offp) + return 0; + /* Copy data from User-space */ buf = kmalloc(count + 1, GFP_KERNEL); if (!buf) return -ENOMEM; - ret = simple_write_to_buffer(buf, count, offp, ubuf, count); - if (ret < 0) + if (copy_from_user(buf, ubuf, count)) { + ret = -EFAULT; goto free_buf; + } buf[count] = 0; /* Find position of colon in the buffer */ |