|
@@ -631,7 +631,8 @@ static int HiSax_readstatus(u_char __user *buf, int len, int id, int channel)
|
|
|
count = cs->status_end - cs->status_read + 1;
|
|
count = cs->status_end - cs->status_read + 1;
|
|
|
if (count >= len)
|
|
if (count >= len)
|
|
|
count = len;
|
|
count = len;
|
|
|
- copy_to_user(p, cs->status_read, count);
|
|
|
|
|
|
|
+ if (copy_to_user(p, cs->status_read, count))
|
|
|
|
|
+ return -EFAULT;
|
|
|
cs->status_read += count;
|
|
cs->status_read += count;
|
|
|
if (cs->status_read > cs->status_end)
|
|
if (cs->status_read > cs->status_end)
|
|
|
cs->status_read = cs->status_buf;
|
|
cs->status_read = cs->status_buf;
|
|
@@ -642,7 +643,8 @@ static int HiSax_readstatus(u_char __user *buf, int len, int id, int channel)
|
|
|
cnt = HISAX_STATUS_BUFSIZE;
|
|
cnt = HISAX_STATUS_BUFSIZE;
|
|
|
else
|
|
else
|
|
|
cnt = count;
|
|
cnt = count;
|
|
|
- copy_to_user(p, cs->status_read, cnt);
|
|
|
|
|
|
|
+ if (copy_to_user(p, cs->status_read, cnt))
|
|
|
|
|
+ return -EFAULT;
|
|
|
p += cnt;
|
|
p += cnt;
|
|
|
cs->status_read += cnt % HISAX_STATUS_BUFSIZE;
|
|
cs->status_read += cnt % HISAX_STATUS_BUFSIZE;
|
|
|
count -= cnt;
|
|
count -= cnt;
|