Skip to content

Commit 526702f

Browse files
author
Fox Snowpatch
committed
1 parent 182544a commit 526702f

2 files changed

Lines changed: 18 additions & 4 deletions

File tree

arch/powerpc/kernel/eeh.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,11 +1729,18 @@ static ssize_t eeh_force_recover_write(struct file *filp,
17291729
uint32_t phbid, pe_no;
17301730
struct eeh_pe *pe;
17311731
char buf[20];
1732-
int ret;
1732+
ssize_t ret;
1733+
1734+
if (*ppos != 0 || count >= sizeof(buf))
1735+
return -EINVAL;
17331736

1734-
ret = simple_write_to_buffer(buf, sizeof(buf), ppos, user_buf, count);
1737+
ret = simple_write_to_buffer(buf, sizeof(buf) - 1, ppos, user_buf,
1738+
count);
1739+
if (ret < 0)
1740+
return ret;
17351741
if (!ret)
17361742
return -EFAULT;
1743+
buf[ret] = '\0';
17371744

17381745
/*
17391746
* When PE is NULL the event is a "special" event. Rather than

arch/powerpc/platforms/powernv/eeh-powernv.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,22 @@ static ssize_t pnv_eeh_ei_write(struct file *filp,
7171
int pe_no, type, func;
7272
unsigned long addr, mask;
7373
char buf[50];
74-
int ret;
74+
ssize_t ret;
7575

7676
if (!eeh_ops || !eeh_ops->err_inject)
7777
return -ENXIO;
7878

79+
if (*ppos != 0 || count >= sizeof(buf))
80+
return -EINVAL;
81+
7982
/* Copy over argument buffer */
80-
ret = simple_write_to_buffer(buf, sizeof(buf), ppos, user_buf, count);
83+
ret = simple_write_to_buffer(buf, sizeof(buf) - 1, ppos, user_buf,
84+
count);
85+
if (ret < 0)
86+
return ret;
8187
if (!ret)
8288
return -EFAULT;
89+
buf[ret] = '\0';
8390

8491
/* Retrieve parameters */
8592
ret = sscanf(buf, "%x:%x:%x:%lx:%lx",

0 commit comments

Comments
 (0)