git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[SCSI] Fix DVD burning issues.
[pandora-kernel.git]
/
fs
/
compat.c
diff --git
a/fs/compat.c
b/fs/compat.c
index
5333c7d
..
7f8e26e
100644
(file)
--- a/
fs/compat.c
+++ b/
fs/compat.c
@@
-114,6
+114,7
@@
asmlinkage long compat_sys_newlstat(char __user * filename,
return error;
}
return error;
}
+#ifndef __ARCH_WANT_STAT64
asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user *filename,
struct compat_stat __user *statbuf, int flag)
{
asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user *filename,
struct compat_stat __user *statbuf, int flag)
{
@@
-134,6
+135,7
@@
asmlinkage long compat_sys_newfstatat(unsigned int dfd, char __user *filename,
out:
return error;
}
out:
return error;
}
+#endif
asmlinkage long compat_sys_newfstat(unsigned int fd,
struct compat_stat __user * statbuf)
asmlinkage long compat_sys_newfstat(unsigned int fd,
struct compat_stat __user * statbuf)
@@
-1474,10
+1476,9
@@
int compat_do_execve(char * filename,
int i;
retval = -ENOMEM;
int i;
retval = -ENOMEM;
- bprm = k
m
alloc(sizeof(*bprm), GFP_KERNEL);
+ bprm = k
z
alloc(sizeof(*bprm), GFP_KERNEL);
if (!bprm)
goto out_ret;
if (!bprm)
goto out_ret;
- memset(bprm, 0, sizeof(*bprm));
file = open_exec(filename);
retval = PTR_ERR(file);
file = open_exec(filename);
retval = PTR_ERR(file);
@@
-1638,15
+1639,6
@@
void compat_set_fd_set(unsigned long nr, compat_ulong_t __user *ufdset,
* This is a virtual copy of sys_select from fs/select.c and probably
* should be compared to it from time to time
*/
* This is a virtual copy of sys_select from fs/select.c and probably
* should be compared to it from time to time
*/
-static void *select_bits_alloc(int size)
-{
- return kmalloc(6 * size, GFP_KERNEL);
-}
-
-static void select_bits_free(void *bits, int size)
-{
- kfree(bits);
-}
/*
* We can actually return ERESTARTSYS instead of EINTR, but I'd
/*
* We can actually return ERESTARTSYS instead of EINTR, but I'd
@@
-1685,7
+1677,7
@@
int compat_core_sys_select(int n, compat_ulong_t __user *inp,
*/
ret = -ENOMEM;
size = FDS_BYTES(n);
*/
ret = -ENOMEM;
size = FDS_BYTES(n);
- bits =
select_bits_alloc(size
);
+ bits =
kmalloc(6 * size, GFP_KERNEL
);
if (!bits)
goto out_nofds;
fds.in = (unsigned long *) bits;
if (!bits)
goto out_nofds;
fds.in = (unsigned long *) bits;
@@
-1719,7
+1711,7
@@
int compat_core_sys_select(int n, compat_ulong_t __user *inp,
compat_set_fd_set(n, exp, fds.res_ex);
out:
compat_set_fd_set(n, exp, fds.res_ex);
out:
-
select_bits_free(bits, size
);
+
kfree(bits
);
out_nofds:
return ret;
}
out_nofds:
return ret;
}
@@
-2168,9
+2160,12
@@
asmlinkage long compat_sys_nfsservctl(int cmd, struct compat_nfsctl_arg __user *
default:
err = -EINVAL;
default:
err = -EINVAL;
-
goto done
;
+
break
;
}
}
+ if (err)
+ goto done;
+
oldfs = get_fs();
set_fs(KERNEL_DS);
/* The __user pointer casts are valid because of the set_fs() */
oldfs = get_fs();
set_fs(KERNEL_DS);
/* The __user pointer casts are valid because of the set_fs() */