Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 15163
b: refs/heads/master
c: bc05d83
h: refs/heads/master
i:
  15161: c902a28
  15159: c912297
v: v3
  • Loading branch information
Al Viro authored and Linus Torvalds committed Dec 15, 2005
1 parent ebe68be commit b041c21
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b7c690b52f424574f7ac8c607e71e9f5c283a557
refs/heads/master: bc05d83bbf20a32eb24624726d1027aa960a573c
19 changes: 10 additions & 9 deletions trunk/drivers/sbus/char/jsflash.c
Original file line number Diff line number Diff line change
Expand Up @@ -249,11 +249,11 @@ static loff_t jsf_lseek(struct file * file, loff_t offset, int orig)
/*
* OS SIMM Cannot be read in other size but a 32bits word.
*/
static ssize_t jsf_read(struct file * file, char * buf,
static ssize_t jsf_read(struct file * file, char __user * buf,
size_t togo, loff_t *ppos)
{
unsigned long p = *ppos;
char *tmp = buf;
char __user *tmp = buf;

union byte4 {
char s[4];
Expand Down Expand Up @@ -305,7 +305,7 @@ static ssize_t jsf_read(struct file * file, char * buf,
return tmp-buf;
}

static ssize_t jsf_write(struct file * file, const char * buf,
static ssize_t jsf_write(struct file * file, const char __user * buf,
size_t count, loff_t *ppos)
{
return -ENOSPC;
Expand Down Expand Up @@ -356,24 +356,24 @@ static int jsf_ioctl_erase(unsigned long arg)
* Program a block of flash.
* Very simple because we can do it byte by byte anyway.
*/
static int jsf_ioctl_program(unsigned long arg)
static int jsf_ioctl_program(void __user *arg)
{
struct jsflash_program_arg abuf;
char *uptr;
char __user *uptr;
unsigned long p;
unsigned int togo;
union {
unsigned int n;
char s[4];
} b;

if (copy_from_user(&abuf, (char *)arg, JSFPRGSZ))
if (copy_from_user(&abuf, arg, JSFPRGSZ))
return -EFAULT;
p = abuf.off;
togo = abuf.size;
if ((togo & 3) || (p & 3)) return -EINVAL;

uptr = (char *) (unsigned long) abuf.data;
uptr = (char __user *) (unsigned long) abuf.data;
while (togo != 0) {
togo -= 4;
if (copy_from_user(&b.s[0], uptr, 4))
Expand All @@ -390,19 +390,20 @@ static int jsf_ioctl(struct inode *inode, struct file *f, unsigned int cmd,
unsigned long arg)
{
int error = -ENOTTY;
void __user *argp = (void __user *)arg;

if (!capable(CAP_SYS_ADMIN))
return -EPERM;
switch (cmd) {
case JSFLASH_IDENT:
if (copy_to_user((void *)arg, &jsf0.id, JSFIDSZ))
if (copy_to_user(argp, &jsf0.id, JSFIDSZ))
return -EFAULT;
break;
case JSFLASH_ERASE:
error = jsf_ioctl_erase(arg);
break;
case JSFLASH_PROGRAM:
error = jsf_ioctl_program(arg);
error = jsf_ioctl_program(argp);
break;
}

Expand Down

0 comments on commit b041c21

Please sign in to comment.