Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
462710a0
Commit
462710a0
authored
May 28, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/net-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
932e3f90
64163067
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
169 additions
and
151 deletions
+169
-151
arch/ppc64/kernel/pacaData.c
arch/ppc64/kernel/pacaData.c
+1
-1
arch/ppc64/kernel/process.c
arch/ppc64/kernel/process.c
+4
-3
arch/ppc64/kernel/sys_ppc32.c
arch/ppc64/kernel/sys_ppc32.c
+85
-83
arch/ppc64/kernel/syscalls.c
arch/ppc64/kernel/syscalls.c
+17
-17
arch/sparc64/kernel/sys32.S
arch/sparc64/kernel/sys32.S
+13
-0
arch/sparc64/kernel/systbls.S
arch/sparc64/kernel/systbls.S
+3
-3
fs/compat.c
fs/compat.c
+38
-36
include/asm-mips/mach-dec/mc146818rtc.h
include/asm-mips/mach-dec/mc146818rtc.h
+1
-1
include/asm-ppc64/compat.h
include/asm-ppc64/compat.h
+4
-4
include/asm-ppc64/ipc.h
include/asm-ppc64/ipc.h
+1
-1
include/asm-ppc64/unistd.h
include/asm-ppc64/unistd.h
+1
-1
sound/oss/aci.c
sound/oss/aci.c
+1
-1
No files found.
arch/ppc64/kernel/pacaData.c
View file @
462710a0
...
...
@@ -54,7 +54,7 @@ struct systemcfg *systemcfg;
.xFPRegsInUse = 1, \
.xDynProcStatus = 2, \
.xDecrVal = 0x00ff0000, \
.xEndOfQuantum = 0xffffffffffffffff \
.xEndOfQuantum = 0xffffffffffffffff
ul
\
}, \
.xRegSav = { \
.xDesc = 0xd397d9e2,
/* "LpRS" */
\
...
...
arch/ppc64/kernel/process.c
View file @
462710a0
...
...
@@ -410,7 +410,7 @@ int sys_clone(unsigned long clone_flags, unsigned long p2, unsigned long p3,
}
return
do_fork
(
clone_flags
&
~
CLONE_IDLETASK
,
p2
,
regs
,
0
,
(
int
*
)
parent_tidptr
,
(
int
*
)
child_tidptr
);
(
int
__user
*
)
parent_tidptr
,
(
int
__user
*
)
child_tidptr
);
}
int
sys_fork
(
unsigned
long
p1
,
unsigned
long
p2
,
unsigned
long
p3
,
...
...
@@ -435,7 +435,7 @@ int sys_execve(unsigned long a0, unsigned long a1, unsigned long a2,
int
error
;
char
*
filename
;
filename
=
getname
((
char
*
)
a0
);
filename
=
getname
((
char
__user
*
)
a0
);
error
=
PTR_ERR
(
filename
);
if
(
IS_ERR
(
filename
))
goto
out
;
...
...
@@ -445,7 +445,8 @@ int sys_execve(unsigned long a0, unsigned long a1, unsigned long a2,
if
(
regs
->
msr
&
MSR_VEC
)
giveup_altivec
(
current
);
#endif
/* CONFIG_ALTIVEC */
error
=
do_execve
(
filename
,
(
char
**
)
a1
,
(
char
**
)
a2
,
regs
);
error
=
do_execve
(
filename
,
(
char
__user
*
__user
*
)
a1
,
(
char
__user
*
__user
*
)
a2
,
regs
);
if
(
error
==
0
)
current
->
ptrace
&=
~
PT_DTRACE
;
...
...
arch/ppc64/kernel/sys_ppc32.c
View file @
462710a0
...
...
@@ -78,7 +78,7 @@
#include "pci.h"
/* readdir & getdents */
#define NAME_OFFSET(de) ((int) ((de)->d_name - (char *) (de)))
#define NAME_OFFSET(de) ((int) ((de)->d_name - (char
__user
*) (de)))
#define ROUND_UP(x) (((x)+sizeof(u32)-1) & ~(sizeof(u32)-1))
struct
old_linux_dirent32
{
...
...
@@ -89,7 +89,7 @@ struct old_linux_dirent32 {
};
struct
readdir_callback32
{
struct
old_linux_dirent32
*
dirent
;
struct
old_linux_dirent32
__user
*
dirent
;
int
count
;
};
...
...
@@ -97,7 +97,7 @@ static int fillonedir(void * __buf, const char * name, int namlen,
off_t
offset
,
ino_t
ino
,
unsigned
int
d_type
)
{
struct
readdir_callback32
*
buf
=
(
struct
readdir_callback32
*
)
__buf
;
struct
old_linux_dirent32
*
dirent
;
struct
old_linux_dirent32
__user
*
dirent
;
if
(
buf
->
count
)
return
-
EINVAL
;
...
...
@@ -111,7 +111,7 @@ static int fillonedir(void * __buf, const char * name, int namlen,
return
0
;
}
asmlinkage
int
old32_readdir
(
unsigned
int
fd
,
struct
old_linux_dirent32
*
dirent
,
unsigned
int
count
)
asmlinkage
int
old32_readdir
(
unsigned
int
fd
,
struct
old_linux_dirent32
__user
*
dirent
,
unsigned
int
count
)
{
int
error
=
-
EBADF
;
struct
file
*
file
;
...
...
@@ -143,8 +143,8 @@ struct linux_dirent32 {
};
struct
getdents_callback32
{
struct
linux_dirent32
*
current_dir
;
struct
linux_dirent32
*
previous
;
struct
linux_dirent32
__user
*
current_dir
;
struct
linux_dirent32
__user
*
previous
;
int
count
;
int
error
;
};
...
...
@@ -152,7 +152,7 @@ struct getdents_callback32 {
static
int
filldir
(
void
*
__buf
,
const
char
*
name
,
int
namlen
,
off_t
offset
,
ino_t
ino
,
unsigned
int
d_type
)
{
struct
linux_dirent32
*
dirent
;
struct
linux_dirent32
__user
*
dirent
;
struct
getdents_callback32
*
buf
=
(
struct
getdents_callback32
*
)
__buf
;
int
reclen
=
ROUND_UP
(
NAME_OFFSET
(
dirent
)
+
namlen
+
2
);
...
...
@@ -176,7 +176,7 @@ static int filldir(void * __buf, const char * name, int namlen, off_t offset,
if
(
__put_user
(
d_type
,
(
char
*
)
dirent
+
reclen
-
1
))
goto
efault
;
buf
->
previous
=
dirent
;
dirent
=
(
void
*
)
dirent
+
reclen
;
dirent
=
(
void
__user
*
)
dirent
+
reclen
;
buf
->
current_dir
=
dirent
;
buf
->
count
-=
reclen
;
return
0
;
...
...
@@ -185,11 +185,11 @@ static int filldir(void * __buf, const char * name, int namlen, off_t offset,
return
-
EFAULT
;
}
long
sys32_getdents
(
unsigned
int
fd
,
struct
linux_dirent32
*
dirent
,
asmlinkage
long
sys32_getdents
(
unsigned
int
fd
,
struct
linux_dirent32
__user
*
dirent
,
unsigned
int
count
)
{
struct
file
*
file
;
struct
linux_dirent32
*
lastdirent
;
struct
linux_dirent32
__user
*
lastdirent
;
struct
getdents_callback32
buf
;
int
error
;
...
...
@@ -233,7 +233,7 @@ asmlinkage long ppc32_select(u32 n, compat_ulong_t __user *inp,
return
compat_sys_select
((
int
)
n
,
inp
,
outp
,
exp
,
compat_ptr
(
tvp_x
));
}
int
cp_compat_stat
(
struct
kstat
*
stat
,
struct
compat_stat
*
statbuf
)
int
cp_compat_stat
(
struct
kstat
*
stat
,
struct
compat_stat
__user
*
statbuf
)
{
long
err
;
...
...
@@ -291,7 +291,7 @@ struct timex32 {
extern
int
do_adjtimex
(
struct
timex
*
);
extern
void
ppc_adjtimex
(
void
);
asmlinkage
long
sys32_adjtimex
(
struct
timex32
*
utp
)
asmlinkage
long
sys32_adjtimex
(
struct
timex32
__user
*
utp
)
{
struct
timex
txc
;
int
ret
;
...
...
@@ -362,7 +362,7 @@ asmlinkage long sys32_pause(void)
static
inline
long
get_ts32
(
struct
timespec
*
o
,
struct
compat_timeval
*
i
)
static
inline
long
get_ts32
(
struct
timespec
*
o
,
struct
compat_timeval
__user
*
i
)
{
long
usec
;
...
...
@@ -376,7 +376,7 @@ static inline long get_ts32(struct timespec *o, struct compat_timeval *i)
return
0
;
}
static
inline
long
put_tv32
(
struct
compat_timeval
*
o
,
struct
timeval
*
i
)
static
inline
long
put_tv32
(
struct
compat_timeval
__user
*
o
,
struct
timeval
*
i
)
{
return
(
!
access_ok
(
VERIFY_WRITE
,
o
,
sizeof
(
*
o
))
||
(
__put_user
(
i
->
tv_sec
,
&
o
->
tv_sec
)
|
...
...
@@ -400,16 +400,18 @@ struct sysinfo32 {
char
_f
[
20
-
2
*
sizeof
(
int
)
-
sizeof
(
int
)];
};
asmlinkage
long
sys32_sysinfo
(
struct
sysinfo32
*
info
)
asmlinkage
long
sys32_sysinfo
(
struct
sysinfo32
__user
*
info
)
{
struct
sysinfo
s
;
int
ret
,
err
;
int
bitcount
=
0
;
mm_segment_t
old_fs
=
get_fs
();
/* The __user cast is valid due to set_fs() */
set_fs
(
KERNEL_DS
);
ret
=
sys_sysinfo
(
&
s
);
ret
=
sys_sysinfo
(
(
struct
sysinfo
__user
*
)
&
s
);
set_fs
(
old_fs
);
/* Check to see if any memory value is too large for 32-bit and
* scale down if needed.
*/
...
...
@@ -455,7 +457,7 @@ asmlinkage long sys32_sysinfo(struct sysinfo32 *info)
sorts of things, like timeval and itimerval. */
extern
struct
timezone
sys_tz
;
asmlinkage
long
sys32_gettimeofday
(
struct
compat_timeval
*
tv
,
struct
timezone
*
tz
)
asmlinkage
long
sys32_gettimeofday
(
struct
compat_timeval
__user
*
tv
,
struct
timezone
__user
*
tz
)
{
if
(
tv
)
{
struct
timeval
ktv
;
...
...
@@ -473,7 +475,7 @@ asmlinkage long sys32_gettimeofday(struct compat_timeval *tv, struct timezone *t
asmlinkage
long
sys32_settimeofday
(
struct
compat_timeval
*
tv
,
struct
timezone
*
tz
)
asmlinkage
long
sys32_settimeofday
(
struct
compat_timeval
__user
*
tv
,
struct
timezone
__user
*
tz
)
{
struct
timespec
kts
;
struct
timezone
ktz
;
...
...
@@ -560,17 +562,20 @@ long sys32_ipc(u32 call, u32 first, u32 second, u32 third, compat_uptr_t ptr,
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_sendfile
(
u32
out_fd
,
u32
in_fd
,
compat_off_t
*
offset
,
u32
count
)
asmlinkage
long
sys32_sendfile
(
u32
out_fd
,
u32
in_fd
,
compat_off_t
__user
*
offset
,
u32
count
)
{
mm_segment_t
old_fs
=
get_fs
();
int
ret
;
off_t
of
;
off_t
__user
*
up
;
if
(
offset
&&
get_user
(
of
,
offset
))
return
-
EFAULT
;
/* The __user pointer cast is valid because of the set_fs() */
set_fs
(
KERNEL_DS
);
ret
=
sys_sendfile
((
int
)
out_fd
,
(
int
)
in_fd
,
offset
?
&
of
:
NULL
,
count
);
up
=
offset
?
(
off_t
__user
*
)
&
of
:
NULL
;
ret
=
sys_sendfile
((
int
)
out_fd
,
(
int
)
in_fd
,
up
,
count
);
set_fs
(
old_fs
);
if
(
offset
&&
put_user
(
of
,
offset
))
...
...
@@ -579,17 +584,20 @@ asmlinkage long sys32_sendfile(u32 out_fd, u32 in_fd, compat_off_t* offset, u32
return
ret
;
}
asmlinkage
int
sys32_sendfile64
(
int
out_fd
,
int
in_fd
,
compat_loff_t
*
offset
,
s32
count
)
asmlinkage
int
sys32_sendfile64
(
int
out_fd
,
int
in_fd
,
compat_loff_t
__user
*
offset
,
s32
count
)
{
mm_segment_t
old_fs
=
get_fs
();
int
ret
;
loff_t
lof
;
loff_t
__user
*
up
;
if
(
offset
&&
get_user
(
lof
,
offset
))
return
-
EFAULT
;
/* The __user pointer cast is valid because of the set_fs() */
set_fs
(
KERNEL_DS
);
ret
=
sys_sendfile64
(
out_fd
,
in_fd
,
offset
?
&
lof
:
NULL
,
count
);
up
=
offset
?
(
loff_t
__user
*
)
&
lof
:
NULL
;
ret
=
sys_sendfile64
(
out_fd
,
in_fd
,
up
,
count
);
set_fs
(
old_fs
);
if
(
offset
&&
put_user
(
lof
,
offset
))
...
...
@@ -605,7 +613,7 @@ long sys32_execve(unsigned long a0, unsigned long a1, unsigned long a2,
int
error
;
char
*
filename
;
filename
=
getname
((
char
*
)
a0
);
filename
=
getname
((
char
__user
*
)
a0
);
error
=
PTR_ERR
(
filename
);
if
(
IS_ERR
(
filename
))
goto
out
;
...
...
@@ -675,14 +683,15 @@ asmlinkage long sys32_prctl(u32 option, u32 arg2, u32 arg3, u32 arg4, u32 arg5)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_sched_rr_get_interval
(
u32
pid
,
struct
compat_timespec
*
interval
)
asmlinkage
long
sys32_sched_rr_get_interval
(
u32
pid
,
struct
compat_timespec
__user
*
interval
)
{
struct
timespec
t
;
int
ret
;
mm_segment_t
old_fs
=
get_fs
();
/* The __user pointer cast is valid because of the set_fs() */
set_fs
(
KERNEL_DS
);
ret
=
sys_sched_rr_get_interval
((
int
)
pid
,
&
t
);
ret
=
sys_sched_rr_get_interval
((
int
)
pid
,
(
struct
timespec
__user
*
)
&
t
);
set_fs
(
old_fs
);
if
(
put_compat_timespec
(
&
t
,
interval
))
return
-
EFAULT
;
...
...
@@ -695,7 +704,7 @@ asmlinkage int sys32_pciconfig_read(u32 bus, u32 dfn, u32 off, u32 len, u32 ubuf
(
unsigned
long
)
dfn
,
(
unsigned
long
)
off
,
(
unsigned
long
)
len
,
(
unsigned
char
*
)
AA
(
ubuf
));
(
unsigned
char
__user
*
)
AA
(
ubuf
));
}
asmlinkage
int
sys32_pciconfig_write
(
u32
bus
,
u32
dfn
,
u32
off
,
u32
len
,
u32
ubuf
)
...
...
@@ -704,7 +713,7 @@ asmlinkage int sys32_pciconfig_write(u32 bus, u32 dfn, u32 off, u32 len, u32 ubu
(
unsigned
long
)
dfn
,
(
unsigned
long
)
off
,
(
unsigned
long
)
len
,
(
unsigned
char
*
)
AA
(
ubuf
));
(
unsigned
char
__user
*
)
AA
(
ubuf
));
}
#define IOBASE_BRIDGE_NUMBER 0
...
...
@@ -765,7 +774,7 @@ asmlinkage int sys32_pciconfig_iobase(u32 which, u32 in_bus, u32 in_devfn)
}
asmlinkage
int
ppc64_newuname
(
struct
new_utsname
*
name
)
asmlinkage
int
ppc64_newuname
(
struct
new_utsname
__user
*
name
)
{
int
errno
=
sys_newuname
(
name
);
...
...
@@ -795,7 +804,7 @@ asmlinkage int ppc64_personality(unsigned long personality)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_access
(
const
char
*
filename
,
u32
mode
)
asmlinkage
long
sys32_access
(
const
char
__user
*
filename
,
u32
mode
)
{
return
sys_access
(
filename
,
(
int
)
mode
);
}
...
...
@@ -806,7 +815,7 @@ asmlinkage long sys32_access(const char * filename, u32 mode)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_creat
(
const
char
*
pathname
,
u32
mode
)
asmlinkage
long
sys32_creat
(
const
char
__user
*
pathname
,
u32
mode
)
{
return
sys_creat
(
pathname
,
(
int
)
mode
);
}
...
...
@@ -817,7 +826,7 @@ asmlinkage long sys32_creat(const char * pathname, u32 mode)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_waitpid
(
u32
pid
,
unsigned
int
*
stat_addr
,
u32
options
)
asmlinkage
long
sys32_waitpid
(
u32
pid
,
unsigned
int
__user
*
stat_addr
,
u32
options
)
{
return
sys_waitpid
((
int
)
pid
,
stat_addr
,
(
int
)
options
);
}
...
...
@@ -828,7 +837,7 @@ asmlinkage long sys32_waitpid(u32 pid, unsigned int * stat_addr, u32 options)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_getgroups
(
u32
gidsetsize
,
gid_t
*
grouplist
)
asmlinkage
long
sys32_getgroups
(
u32
gidsetsize
,
gid_t
__user
*
grouplist
)
{
return
sys_getgroups
((
int
)
gidsetsize
,
grouplist
);
}
...
...
@@ -883,7 +892,7 @@ asmlinkage long sys32_kill(u32 pid, u32 sig)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_mkdir
(
const
char
*
pathname
,
u32
mode
)
asmlinkage
long
sys32_mkdir
(
const
char
__user
*
pathname
,
u32
mode
)
{
return
sys_mkdir
(
pathname
,
(
int
)
mode
);
}
...
...
@@ -904,7 +913,7 @@ off_t ppc32_lseek(unsigned int fd, u32 offset, unsigned int origin)
* This is just a version for 32-bit applications which does
* not force O_LARGEFILE on.
*/
long
sys32_open
(
const
cha
r
*
filename
,
int
flags
,
int
mode
)
asmlinkage
long
sys32_open
(
const
char
__use
r
*
filename
,
int
flags
,
int
mode
)
{
char
*
tmp
;
int
fd
,
error
;
...
...
@@ -936,7 +945,7 @@ long sys32_open(const char * filename, int flags, int mode)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_readlink
(
const
char
*
path
,
cha
r
*
buf
,
u32
bufsiz
)
asmlinkage
long
sys32_readlink
(
const
char
__user
*
path
,
char
__use
r
*
buf
,
u32
bufsiz
)
{
return
sys_readlink
(
path
,
buf
,
(
int
)
bufsiz
);
}
...
...
@@ -968,7 +977,7 @@ asmlinkage long sys32_sched_get_priority_min(u32 policy)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_sched_getparam
(
u32
pid
,
struct
sched_param
*
param
)
asmlinkage
long
sys32_sched_getparam
(
u32
pid
,
struct
sched_param
__user
*
param
)
{
return
sys_sched_getparam
((
int
)
pid
,
param
);
}
...
...
@@ -990,7 +999,7 @@ asmlinkage long sys32_sched_getscheduler(u32 pid)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_sched_setparam
(
u32
pid
,
struct
sched_param
*
param
)
asmlinkage
long
sys32_sched_setparam
(
u32
pid
,
struct
sched_param
__user
*
param
)
{
return
sys_sched_setparam
((
int
)
pid
,
param
);
}
...
...
@@ -1001,7 +1010,7 @@ asmlinkage long sys32_sched_setparam(u32 pid, struct sched_param *param)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_sched_setscheduler
(
u32
pid
,
u32
policy
,
struct
sched_param
*
param
)
asmlinkage
long
sys32_sched_setscheduler
(
u32
pid
,
u32
policy
,
struct
sched_param
__user
*
param
)
{
return
sys_sched_setscheduler
((
int
)
pid
,
(
int
)
policy
,
param
);
}
...
...
@@ -1012,7 +1021,7 @@ asmlinkage long sys32_sched_setscheduler(u32 pid, u32 policy, struct sched_param
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_setdomainname
(
char
*
name
,
u32
len
)
asmlinkage
long
sys32_setdomainname
(
char
__user
*
name
,
u32
len
)
{
return
sys_setdomainname
(
name
,
(
int
)
len
);
}
...
...
@@ -1023,13 +1032,13 @@ asmlinkage long sys32_setdomainname(char *name, u32 len)
* proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode)
* and the register representation of a signed int (msr in 64-bit mode) is performed.
*/
asmlinkage
long
sys32_setgroups
(
u32
gidsetsize
,
gid_t
*
grouplist
)
asmlinkage
long
sys32_setgroups
(
u32
gidsetsize
,
gid_t
__user
*
grouplist
)
{
return
sys_setgroups
((
int
)
gidsetsize
,
grouplist
);
}
asmlinkage
long
sys32_sethostname
(
char
*
name
,
u32
len
)
asmlinkage
long
sys32_sethostname
(
char
__user
*
name
,
u32
len
)
{
/* sign extend len */
return
sys_sethostname
(
name
,
(
int
)
len
);
...
...
@@ -1063,7 +1072,7 @@ asmlinkage long sys32_ssetmask(u32 newmask)
return
sys_ssetmask
((
int
)
newmask
);
}
long
sys32_syslog
(
u32
type
,
cha
r
*
buf
,
u32
len
)
asmlinkage
long
sys32_syslog
(
u32
type
,
char
__use
r
*
buf
,
u32
len
)
{
/* sign extend len */
return
sys_syslog
(
type
,
buf
,
(
int
)
len
);
...
...
@@ -1090,11 +1099,12 @@ struct __sysctl_args32 {
u32
__unused
[
4
];
};
extern
asmlinkage
long
sys32_sysctl
(
struct
__sysctl_args32
*
args
)
extern
asmlinkage
long
sys32_sysctl
(
struct
__sysctl_args32
__user
*
args
)
{
struct
__sysctl_args32
tmp
;
int
error
;
size_t
oldlen
,
*
oldlenp
=
NULL
;
size_t
oldlen
;
size_t
__user
*
oldlenp
=
NULL
;
unsigned
long
addr
=
(((
long
)
&
args
->
__unused
[
0
])
+
7
)
&
~
7
;
if
(
copy_from_user
(
&
tmp
,
args
,
sizeof
(
tmp
)))
...
...
@@ -1107,20 +1117,20 @@ extern asmlinkage long sys32_sysctl(struct __sysctl_args32 *args)
basically copy the whole sysctl.c here, and
glibc's __sysctl uses rw memory for the structure
anyway. */
oldlenp
=
(
size_t
__user
*
)
addr
;
if
(
get_user
(
oldlen
,
(
u32
*
)
A
(
tmp
.
oldlenp
))
||
put_user
(
oldlen
,
(
size_t
*
)
addr
))
put_user
(
oldlen
,
oldlenp
))
return
-
EFAULT
;
oldlenp
=
(
size_t
*
)
addr
;
}
lock_kernel
();
error
=
do_sysctl
((
int
*
)
A
(
tmp
.
name
),
tmp
.
nlen
,
(
void
*
)
A
(
tmp
.
oldval
),
oldlenp
,
(
void
*
)
A
(
tmp
.
newval
),
tmp
.
newlen
);
error
=
do_sysctl
((
int
__user
*
)
A
(
tmp
.
name
),
tmp
.
nlen
,
(
void
__user
*
)
A
(
tmp
.
oldval
),
oldlenp
,
(
void
__user
*
)
A
(
tmp
.
newval
),
tmp
.
newlen
);
unlock_kernel
();
if
(
oldlenp
)
{
if
(
!
error
)
{
if
(
get_user
(
oldlen
,
(
size_t
*
)
addr
)
||
put_user
(
oldlen
,
(
u32
*
)
A
(
tmp
.
oldlenp
)))
if
(
get_user
(
oldlen
,
oldlenp
)
||
put_user
(
oldlen
,
(
u32
__user
*
)
A
(
tmp
.
oldlenp
)))
error
=
-
EFAULT
;
}
copy_to_user
(
args
->
__unused
,
tmp
.
__unused
,
sizeof
(
tmp
.
__unused
));
...
...
@@ -1128,7 +1138,7 @@ extern asmlinkage long sys32_sysctl(struct __sysctl_args32 *args)
return
error
;
}
asmlinkage
long
sys32_time
(
compat_time_t
*
tloc
)
asmlinkage
long
sys32_time
(
compat_time_t
__user
*
tloc
)
{
compat_time_t
secs
;
...
...
@@ -1145,7 +1155,7 @@ asmlinkage long sys32_time(compat_time_t* tloc)
return
secs
;
}
int
sys32_olduname
(
struct
oldold_utsname
*
name
)
asmlinkage
int
sys32_olduname
(
struct
oldold_utsname
__user
*
name
)
{
int
error
;
...
...
@@ -1180,37 +1190,26 @@ unsigned long sys32_mmap2(unsigned long addr, size_t len,
return
sys_mmap
(
addr
,
len
,
prot
,
flags
,
fd
,
pgoff
<<
12
);
}
int
get_compat_timeval
(
struct
timeval
*
tv
,
struct
compat_timeval
*
ctv
)
int
get_compat_timeval
(
struct
timeval
*
tv
,
struct
compat_timeval
__user
*
ctv
)
{
return
(
verify_area
(
VERIFY_READ
,
ctv
,
sizeof
(
*
ctv
))
||
__get_user
(
tv
->
tv_sec
,
&
ctv
->
tv_sec
)
||
__get_user
(
tv
->
tv_usec
,
&
ctv
->
tv_usec
))
?
-
EFAULT
:
0
;
}
long
sys32_utimes
(
char
*
filename
,
struct
compat_timeval
*
tvs
)
asmlinkage
long
sys32_utimes
(
char
__user
*
filename
,
struct
compat_timeval
__user
*
tvs
)
{
char
*
kfilename
;
struct
timeval
ktvs
[
2
];
mm_segment_t
old_fs
;
long
ret
;
struct
timeval
ktvs
[
2
],
*
ptr
;
kfilename
=
getname
(
filename
);
ret
=
PTR_ERR
(
kfilename
);
if
(
!
IS_ERR
(
kfilename
))
{
if
(
tvs
)
{
if
(
get_compat_timeval
(
&
ktvs
[
0
],
&
tvs
[
0
])
||
get_compat_timeval
(
&
ktvs
[
1
],
&
tvs
[
1
]))
return
-
EFAULT
;
}
old_fs
=
get_fs
();
set_fs
(
KERNEL_DS
);
ret
=
do_utimes
(
kfilename
,
(
tvs
?
&
ktvs
[
0
]
:
NULL
));
set_fs
(
old_fs
);
putname
(
kfilename
);
ptr
=
NULL
;
if
(
tvs
)
{
if
(
get_compat_timeval
(
&
ktvs
[
0
],
&
tvs
[
0
])
||
get_compat_timeval
(
&
ktvs
[
1
],
&
tvs
[
1
]))
return
-
EFAULT
;
ptr
=
ktvs
;
}
return
ret
;
return
do_utimes
(
filename
,
ptr
);
}
long
sys32_tgkill
(
u32
tgid
,
u32
pid
,
int
sig
)
...
...
@@ -1224,13 +1223,13 @@ long sys32_tgkill(u32 tgid, u32 pid, int sig)
* The 32 bit ABI passes long longs in an odd even register pair.
*/
compat_ssize_t
sys32_pread64
(
unsigned
int
fd
,
char
*
ubuf
,
compat_size_t
count
,
compat_ssize_t
sys32_pread64
(
unsigned
int
fd
,
char
__user
*
ubuf
,
compat_size_t
count
,
u32
reg6
,
u32
poshi
,
u32
poslo
)
{
return
sys_pread64
(
fd
,
ubuf
,
count
,
((
loff_t
)
poshi
<<
32
)
|
poslo
);
}
compat_ssize_t
sys32_pwrite64
(
unsigned
int
fd
,
char
*
ubuf
,
compat_size_t
count
,
compat_ssize_t
sys32_pwrite64
(
unsigned
int
fd
,
char
__user
*
ubuf
,
compat_size_t
count
,
u32
reg6
,
u32
poshi
,
u32
poslo
)
{
return
sys_pwrite64
(
fd
,
ubuf
,
count
,
((
loff_t
)
poshi
<<
32
)
|
poslo
);
...
...
@@ -1241,7 +1240,7 @@ compat_ssize_t sys32_readahead(int fd, u32 r4, u32 offhi, u32 offlo, u32 count)
return
sys_readahead
(
fd
,
((
loff_t
)
offhi
<<
32
)
|
offlo
,
count
);
}
asmlinkage
int
sys32_truncate64
(
const
char
*
path
,
u32
reg4
,
asmlinkage
int
sys32_truncate64
(
const
char
__user
*
path
,
u32
reg4
,
unsigned
long
high
,
unsigned
long
low
)
{
return
sys_truncate
(
path
,
(
high
<<
32
)
|
low
);
...
...
@@ -1253,7 +1252,7 @@ asmlinkage int sys32_ftruncate64(unsigned int fd, u32 reg4, unsigned long high,
return
sys_ftruncate
(
fd
,
(
high
<<
32
)
|
low
);
}
long
ppc32_lookup_dcookie
(
u32
cookie_high
,
u32
cookie_low
,
char
*
buf
,
long
ppc32_lookup_dcookie
(
u32
cookie_high
,
u32
cookie_low
,
char
__user
*
buf
,
size_t
len
)
{
return
sys_lookup_dcookie
((
u64
)
cookie_high
<<
32
|
cookie_low
,
...
...
@@ -1274,7 +1273,7 @@ long ppc32_fadvise64_64(int fd, int advice, u32 offset_high, u32 offset_low,
(
u64
)
len_high
<<
32
|
len_low
,
advice
);
}
extern
long
sys_timer_create
(
clockid_t
,
sigevent_t
*
,
timer_t
*
);
extern
asmlinkage
long
sys_timer_create
(
clockid_t
,
sigevent_t
__user
*
,
timer_t
__user
*
);
long
ppc32_timer_create
(
clockid_t
clock
,
struct
compat_sigevent
__user
*
ev32
,
...
...
@@ -1303,7 +1302,10 @@ long ppc32_timer_create(clockid_t clock,
savefs
=
get_fs
();
set_fs
(
KERNEL_DS
);
err
=
sys_timer_create
(
clock
,
&
event
,
&
t
);
/* The __user pointer casts are valid due to the set_fs() */
err
=
sys_timer_create
(
clock
,
(
sigevent_t
__user
*
)
&
event
,
(
timer_t
__user
*
)
&
t
);
set_fs
(
savefs
);
if
(
err
==
0
)
...
...
arch/ppc64/kernel/syscalls.c
View file @
462710a0
...
...
@@ -57,7 +57,7 @@ check_bugs(void)
* This is really horribly ugly.
*/
asmlinkage
int
sys_ipc
(
uint
call
,
int
first
,
int
second
,
long
third
,
void
*
ptr
,
long
fifth
)
sys_ipc
(
uint
call
,
int
first
,
int
second
,
long
third
,
void
__user
*
ptr
,
long
fifth
)
{
int
version
,
ret
;
...
...
@@ -67,12 +67,12 @@ sys_ipc (uint call, int first, int second, long third, void *ptr, long fifth)
ret
=
-
ENOSYS
;
switch
(
call
)
{
case
SEMOP
:
ret
=
sys_semtimedop
(
first
,
(
struct
sembuf
*
)
ptr
,
second
,
ret
=
sys_semtimedop
(
first
,
(
struct
sembuf
__user
*
)
ptr
,
second
,
NULL
);
break
;
case
SEMTIMEDOP
:
ret
=
sys_semtimedop
(
first
,
(
struct
sembuf
*
)
ptr
,
second
,
(
const
struct
timespec
*
)
fifth
);
ret
=
sys_semtimedop
(
first
,
(
struct
sembuf
__user
*
)
ptr
,
second
,
(
const
struct
timespec
__user
*
)
fifth
);
break
;
case
SEMGET
:
ret
=
sys_semget
(
first
,
second
,
third
);
...
...
@@ -83,13 +83,13 @@ sys_ipc (uint call, int first, int second, long third, void *ptr, long fifth)
ret
=
-
EINVAL
;
if
(
!
ptr
)
break
;
if
((
ret
=
get_user
(
fourth
.
__pad
,
(
void
*
*
)
ptr
)))
if
((
ret
=
get_user
(
fourth
.
__pad
,
(
void
__user
*
__user
*
)
ptr
)))
break
;
ret
=
sys_semctl
(
first
,
second
,
third
,
fourth
);
break
;
}
case
MSGSND
:
ret
=
sys_msgsnd
(
first
,
(
struct
msgbuf
*
)
ptr
,
second
,
third
);
ret
=
sys_msgsnd
(
first
,
(
struct
msgbuf
__user
*
)
ptr
,
second
,
third
);
break
;
case
MSGRCV
:
switch
(
version
)
{
...
...
@@ -100,7 +100,7 @@ sys_ipc (uint call, int first, int second, long third, void *ptr, long fifth)
if
(
!
ptr
)
break
;
if
((
ret
=
copy_from_user
(
&
tmp
,
(
struct
ipc_kludge
*
)
ptr
,
(
struct
ipc_kludge
__user
*
)
ptr
,
sizeof
(
tmp
))
?
-
EFAULT
:
0
))
break
;
ret
=
sys_msgrcv
(
first
,
tmp
.
msgp
,
second
,
tmp
.
msgtyp
,
...
...
@@ -108,7 +108,7 @@ sys_ipc (uint call, int first, int second, long third, void *ptr, long fifth)
break
;
}
default:
ret
=
sys_msgrcv
(
first
,
(
struct
msgbuf
*
)
ptr
,
ret
=
sys_msgrcv
(
first
,
(
struct
msgbuf
__user
*
)
ptr
,
second
,
fifth
,
third
);
break
;
}
...
...
@@ -117,35 +117,35 @@ sys_ipc (uint call, int first, int second, long third, void *ptr, long fifth)
ret
=
sys_msgget
((
key_t
)
first
,
second
);
break
;
case
MSGCTL
:
ret
=
sys_msgctl
(
first
,
second
,
(
struct
msqid_ds
*
)
ptr
);
ret
=
sys_msgctl
(
first
,
second
,
(
struct
msqid_ds
__user
*
)
ptr
);
break
;
case
SHMAT
:
switch
(
version
)
{
default:
{
ulong
raddr
;
ret
=
do_shmat
(
first
,
(
char
*
)
ptr
,
second
,
&
raddr
);
ret
=
do_shmat
(
first
,
(
char
__user
*
)
ptr
,
second
,
&
raddr
);
if
(
ret
)
break
;
ret
=
put_user
(
raddr
,
(
ulong
*
)
third
);
ret
=
put_user
(
raddr
,
(
ulong
__user
*
)
third
);
break
;
}
case
1
:
/* iBCS2 emulator entry point */
ret
=
-
EINVAL
;
if
(
!
segment_eq
(
get_fs
(),
get_ds
()))
break
;
ret
=
do_shmat
(
first
,
(
char
*
)
ptr
,
second
,
ret
=
do_shmat
(
first
,
(
char
__user
*
)
ptr
,
second
,
(
ulong
*
)
third
);
break
;
}
break
;
case
SHMDT
:
ret
=
sys_shmdt
((
char
*
)
ptr
);
ret
=
sys_shmdt
((
char
__user
*
)
ptr
);
break
;
case
SHMGET
:
ret
=
sys_shmget
(
first
,
second
,
third
);
break
;
case
SHMCTL
:
ret
=
sys_shmctl
(
first
,
second
,
(
struct
shmid_ds
*
)
ptr
);
ret
=
sys_shmctl
(
first
,
second
,
(
struct
shmid_ds
__user
*
)
ptr
);
break
;
}
...
...
@@ -156,7 +156,7 @@ sys_ipc (uint call, int first, int second, long third, void *ptr, long fifth)
* sys_pipe() is the normal C calling standard for creating
* a pipe. It's not the way unix traditionally does this, though.
*/
asmlinkage
int
sys_pipe
(
int
*
fildes
)
asmlinkage
int
sys_pipe
(
int
__user
*
fildes
)
{
int
fd
[
2
];
int
error
;
...
...
@@ -202,7 +202,7 @@ static int __init set_fakeppc(char *str)
}
__setup
(
"fakeppc"
,
set_fakeppc
);
asmlinkage
int
sys_uname
(
struct
old_utsname
*
name
)
asmlinkage
int
sys_uname
(
struct
old_utsname
__user
*
name
)
{
int
err
=
-
EFAULT
;
...
...
@@ -214,7 +214,7 @@ asmlinkage int sys_uname(struct old_utsname * name)
return
err
;
}
asmlinkage
time_t
sys64_time
(
time_t
*
tloc
)
asmlinkage
time_t
sys64_time
(
time_t
__user
*
tloc
)
{
time_t
secs
;
time_t
usecs
;
...
...
arch/sparc64/kernel/sys32.S
View file @
462710a0
...
...
@@ -6,6 +6,7 @@
*
Copyright
(
C
)
1998
Jakub
Jelinek
(
jj
@
ultra
.
linux
.
cz
)
*/
#include <linux/config.h>
#include <asm/errno.h>
/*
NOTE
:
call
as
jump
breaks
return
stack
,
we
have
to
avoid
that
*/
...
...
@@ -79,6 +80,18 @@ sys32_mq_timedreceive:
jmpl
%
g1
+
%
lo
(
compat_sys_mq_timedreceive
),
%
g0
srl
%
o4
,
0
,
%
o4
.
globl
sys32_select
sys32_select
:
sethi
%
hi
(
compat_sys_select
),
%
g1
jmpl
%
g1
+
%
lo
(
compat_sys_select
),
%
g0
srl
%
o4
,
0
,
%
o4
.
globl
sys32_futex
sys32_futex
:
sethi
%
hi
(
compat_sys_futex
),
%
g1
jmpl
%
g1
+
%
lo
(
compat_sys_futex
),
%
g0
srl
%
o4
,
0
,
%
o4
.
align
32
.
globl
sys32_socketcall
sys32_socketcall
:
/
*
%
o0
=
call
,
%
o1
=
args
*/
...
...
arch/sparc64/kernel/systbls.S
View file @
462710a0
...
...
@@ -37,7 +37,7 @@ sys_call_table32:
.
word
sys_madvise
,
sys_vhangup
,
sys32_truncate64
,
sys_mincore
,
sys32_getgroups16
/*
80
*/
.
word
sys32_setgroups16
,
sys_getpgrp
,
sys_setgroups
,
compat_sys_setitimer
,
sys32_ftruncate64
.
word
sys_swapon
,
compat_sys_getitimer
,
sys_setuid
,
sys_sethostname
,
sys_setgid
/*
90
*/
.
word
sys_dup2
,
sys_setfsuid
,
compat_sys_fcntl
,
compat_sys
_select
,
sys_setfsgid
/*
90
*/
.
word
sys_dup2
,
sys_setfsuid
,
compat_sys_fcntl
,
sys32
_select
,
sys_setfsgid
.
word
sys_fsync
,
sys_setpriority32
,
sys_nis_syscall
,
sys_nis_syscall
,
sys_nis_syscall
/*
100
*/
.
word
sys_getpriority
,
sys32_rt_sigreturn
,
sys32_rt_sigaction
,
sys32_rt_sigprocmask
,
sys32_rt_sigpending
.
word
sys32_rt_sigtimedwait
,
sys32_rt_sigqueueinfo
,
sys32_rt_sigsuspend
,
sys_setresuid
,
sys_getresuid
...
...
@@ -47,7 +47,7 @@ sys_call_table32:
.
word
sys_nis_syscall
,
sys32_setreuid16
,
sys32_setregid16
,
sys_rename
,
sys_truncate
/*
130
*/
.
word
sys_ftruncate
,
sys_flock
,
sys_lstat64
,
sys_nis_syscall
,
sys_nis_syscall
.
word
sys_nis_syscall
,
sys_mkdir
,
sys_rmdir
,
sys32_utimes
,
sys_stat64
/*
140
*/
.
word
sys32_sendfile64
,
sys_nis_syscall
,
compat_sys
_futex
,
sys_gettid
,
compat_sys_getrlimit
/*
140
*/
.
word
sys32_sendfile64
,
sys_nis_syscall
,
sys32
_futex
,
sys_gettid
,
compat_sys_getrlimit
.
word
compat_sys_setrlimit
,
sys_pivot_root
,
sys32_prctl
,
sys32_pciconfig_read
,
sys32_pciconfig_write
/*
150
*/
.
word
sys_nis_syscall
,
sys_nis_syscall
,
sys_nis_syscall
,
sys_poll
,
sys_getdents64
.
word
compat_sys_fcntl64
,
sys_ni_syscall
,
compat_sys_statfs
,
compat_sys_fstatfs
,
sys_oldumount
...
...
@@ -65,7 +65,7 @@ sys_call_table32:
.
word
sys32_ipc
,
sys32_sigreturn
,
sys_clone
,
sys_nis_syscall
,
sys32_adjtimex
/*
220
*/
.
word
compat_sys_sigprocmask
,
sys_ni_syscall
,
sys32_delete_module
,
sys_ni_syscall
,
sys_getpgid
.
word
sys32_bdflush
,
sys32_sysfs
,
sys_nis_syscall
,
sys32_setfsuid16
,
sys32_setfsgid16
/*
230
*/
.
word
compat_sys
_select
,
sys_time
,
sys_nis_syscall
,
sys_stime
,
compat_statfs64
/*
230
*/
.
word
sys32
_select
,
sys_time
,
sys_nis_syscall
,
sys_stime
,
compat_statfs64
.
word
compat_fstatfs64
,
sys_llseek
,
sys_mlock
,
sys_munlock
,
sys_mlockall
/*
240
*/
.
word
sys_munlockall
,
sys_sched_setparam
,
sys_sched_getparam
,
sys_sched_setscheduler
,
sys_sched_getscheduler
.
word
sys_sched_yield
,
sys_sched_get_priority_max
,
sys_sched_get_priority_min
,
sys32_sched_rr_get_interval
,
compat_sys_nanosleep
...
...
fs/compat.c
View file @
462710a0
...
...
@@ -50,7 +50,7 @@
* Not all architectures have sys_utime, so implement this in terms
* of sys_utimes.
*/
asmlinkage
long
compat_sys_utime
(
char
*
filename
,
struct
compat_utimbuf
*
t
)
asmlinkage
long
compat_sys_utime
(
char
__user
*
filename
,
struct
compat_utimbuf
__user
*
t
)
{
struct
timeval
tv
[
2
];
...
...
@@ -64,7 +64,7 @@ asmlinkage long compat_sys_utime(char *filename, struct compat_utimbuf *t)
return
do_utimes
(
filename
,
t
?
tv
:
NULL
);
}
asmlinkage
long
compat_sys_utimes
(
char
*
filename
,
struct
compat_timeval
*
t
)
asmlinkage
long
compat_sys_utimes
(
char
__user
*
filename
,
struct
compat_timeval
__user
*
t
)
{
struct
timeval
tv
[
2
];
...
...
@@ -78,8 +78,8 @@ asmlinkage long compat_sys_utimes(char *filename, struct compat_timeval *t)
return
do_utimes
(
filename
,
t
?
tv
:
NULL
);
}
asmlinkage
long
compat_sys_newstat
(
char
*
filename
,
struct
compat_stat
*
statbuf
)
asmlinkage
long
compat_sys_newstat
(
char
__user
*
filename
,
struct
compat_stat
__user
*
statbuf
)
{
struct
kstat
stat
;
int
error
=
vfs_stat
(
filename
,
&
stat
);
...
...
@@ -89,8 +89,8 @@ asmlinkage long compat_sys_newstat(char * filename,
return
error
;
}
asmlinkage
long
compat_sys_newlstat
(
char
*
filename
,
struct
compat_stat
*
statbuf
)
asmlinkage
long
compat_sys_newlstat
(
char
__user
*
filename
,
struct
compat_stat
__user
*
statbuf
)
{
struct
kstat
stat
;
int
error
=
vfs_lstat
(
filename
,
&
stat
);
...
...
@@ -101,7 +101,7 @@ asmlinkage long compat_sys_newlstat(char * filename,
}
asmlinkage
long
compat_sys_newfstat
(
unsigned
int
fd
,
struct
compat_stat
*
statbuf
)
struct
compat_stat
__user
*
statbuf
)
{
struct
kstat
stat
;
int
error
=
vfs_fstat
(
fd
,
&
stat
);
...
...
@@ -111,7 +111,7 @@ asmlinkage long compat_sys_newfstat(unsigned int fd,
return
error
;
}
static
int
put_compat_statfs
(
struct
compat_statfs
*
ubuf
,
struct
kstatfs
*
kbuf
)
static
int
put_compat_statfs
(
struct
compat_statfs
__user
*
ubuf
,
struct
kstatfs
*
kbuf
)
{
if
(
sizeof
ubuf
->
f_blocks
==
4
)
{
...
...
@@ -145,7 +145,7 @@ static int put_compat_statfs(struct compat_statfs *ubuf, struct kstatfs *kbuf)
* The following statfs calls are copies of code from fs/open.c and
* should be checked against those from time to time
*/
asmlinkage
long
compat_sys_statfs
(
const
char
*
path
,
struct
compat_statfs
*
buf
)
asmlinkage
long
compat_sys_statfs
(
const
char
__user
*
path
,
struct
compat_statfs
__user
*
buf
)
{
struct
nameidata
nd
;
int
error
;
...
...
@@ -161,7 +161,7 @@ asmlinkage long compat_sys_statfs(const char *path, struct compat_statfs *buf)
return
error
;
}
asmlinkage
long
compat_sys_fstatfs
(
unsigned
int
fd
,
struct
compat_statfs
*
buf
)
asmlinkage
long
compat_sys_fstatfs
(
unsigned
int
fd
,
struct
compat_statfs
__user
*
buf
)
{
struct
file
*
file
;
struct
kstatfs
tmp
;
...
...
@@ -179,7 +179,7 @@ asmlinkage long compat_sys_fstatfs(unsigned int fd, struct compat_statfs *buf)
return
error
;
}
static
int
put_compat_statfs64
(
struct
compat_statfs64
*
ubuf
,
struct
kstatfs
*
kbuf
)
static
int
put_compat_statfs64
(
struct
compat_statfs64
__user
*
ubuf
,
struct
kstatfs
*
kbuf
)
{
if
(
sizeof
ubuf
->
f_blocks
==
4
)
{
if
((
kbuf
->
f_blocks
|
kbuf
->
f_bfree
|
...
...
@@ -203,7 +203,7 @@ static int put_compat_statfs64(struct compat_statfs64 *ubuf, struct kstatfs *kbu
return
0
;
}
asmlinkage
long
compat_statfs64
(
const
char
*
path
,
compat_size_t
sz
,
struct
compat_statfs64
*
buf
)
asmlinkage
long
compat_statfs64
(
const
char
__user
*
path
,
compat_size_t
sz
,
struct
compat_statfs64
__user
*
buf
)
{
struct
nameidata
nd
;
int
error
;
...
...
@@ -222,7 +222,7 @@ asmlinkage long compat_statfs64(const char *path, compat_size_t sz, struct compa
return
error
;
}
asmlinkage
long
compat_fstatfs64
(
unsigned
int
fd
,
compat_size_t
sz
,
struct
compat_statfs64
*
buf
)
asmlinkage
long
compat_fstatfs64
(
unsigned
int
fd
,
compat_size_t
sz
,
struct
compat_statfs64
__user
*
buf
)
{
struct
file
*
file
;
struct
kstatfs
tmp
;
...
...
@@ -450,7 +450,7 @@ asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd,
return
error
;
}
static
int
get_compat_flock
(
struct
flock
*
kfl
,
struct
compat_flock
*
ufl
)
static
int
get_compat_flock
(
struct
flock
*
kfl
,
struct
compat_flock
__user
*
ufl
)
{
if
(
!
access_ok
(
VERIFY_READ
,
ufl
,
sizeof
(
*
ufl
))
||
__get_user
(
kfl
->
l_type
,
&
ufl
->
l_type
)
||
...
...
@@ -462,7 +462,7 @@ static int get_compat_flock(struct flock *kfl, struct compat_flock *ufl)
return
0
;
}
static
int
put_compat_flock
(
struct
flock
*
kfl
,
struct
compat_flock
*
ufl
)
static
int
put_compat_flock
(
struct
flock
*
kfl
,
struct
compat_flock
__user
*
ufl
)
{
if
(
!
access_ok
(
VERIFY_WRITE
,
ufl
,
sizeof
(
*
ufl
))
||
__put_user
(
kfl
->
l_type
,
&
ufl
->
l_type
)
||
...
...
@@ -475,7 +475,7 @@ static int put_compat_flock(struct flock *kfl, struct compat_flock *ufl)
}
#ifndef HAVE_ARCH_GET_COMPAT_FLOCK64
static
int
get_compat_flock64
(
struct
flock
*
kfl
,
struct
compat_flock64
*
ufl
)
static
int
get_compat_flock64
(
struct
flock
*
kfl
,
struct
compat_flock64
__user
*
ufl
)
{
if
(
!
access_ok
(
VERIFY_READ
,
ufl
,
sizeof
(
*
ufl
))
||
__get_user
(
kfl
->
l_type
,
&
ufl
->
l_type
)
||
...
...
@@ -489,7 +489,7 @@ static int get_compat_flock64(struct flock *kfl, struct compat_flock64 *ufl)
#endif
#ifndef HAVE_ARCH_PUT_COMPAT_FLOCK64
static
int
put_compat_flock64
(
struct
flock
*
kfl
,
struct
compat_flock64
*
ufl
)
static
int
put_compat_flock64
(
struct
flock
*
kfl
,
struct
compat_flock64
__user
*
ufl
)
{
if
(
!
access_ok
(
VERIFY_WRITE
,
ufl
,
sizeof
(
*
ufl
))
||
__put_user
(
kfl
->
l_type
,
&
ufl
->
l_type
)
||
...
...
@@ -566,7 +566,7 @@ asmlinkage long compat_sys_fcntl(unsigned int fd, unsigned int cmd,
}
asmlinkage
long
compat_sys_io_setup
(
unsigned
nr_reqs
,
u32
*
ctx32p
)
compat_sys_io_setup
(
unsigned
nr_reqs
,
u32
__user
*
ctx32p
)
{
long
ret
;
aio_context_t
ctx64
;
...
...
@@ -576,7 +576,8 @@ compat_sys_io_setup(unsigned nr_reqs, u32 *ctx32p)
return
-
EFAULT
;
set_fs
(
KERNEL_DS
);
ret
=
sys_io_setup
(
nr_reqs
,
&
ctx64
);
/* The __user pointer cast is valid because of the set_fs() */
ret
=
sys_io_setup
(
nr_reqs
,
(
aio_context_t
__user
*
)
&
ctx64
);
set_fs
(
oldfs
);
/* truncating is ok because it's a user address */
if
(
!
ret
)
...
...
@@ -588,12 +589,12 @@ asmlinkage long
compat_sys_io_getevents
(
aio_context_t
ctx_id
,
unsigned
long
min_nr
,
unsigned
long
nr
,
struct
io_event
*
events
,
struct
compat_timespec
*
timeout
)
struct
io_event
__user
*
events
,
struct
compat_timespec
__user
*
timeout
)
{
long
ret
;
struct
timespec
t
;
struct
timespec
*
ut
=
NULL
;
struct
timespec
__user
*
ut
=
NULL
;
ret
=
-
EFAULT
;
if
(
unlikely
(
!
access_ok
(
VERIFY_WRITE
,
events
,
...
...
@@ -613,7 +614,7 @@ compat_sys_io_getevents(aio_context_t ctx_id,
}
static
inline
long
copy_iocb
(
long
nr
,
u32
*
ptr32
,
u64
*
ptr64
)
copy_iocb
(
long
nr
,
u32
__user
*
ptr32
,
u64
__user
*
ptr64
)
{
compat_uptr_t
uptr
;
int
i
;
...
...
@@ -630,9 +631,9 @@ copy_iocb(long nr, u32 *ptr32, u64 *ptr64)
#define MAX_AIO_SUBMITS (PAGE_SIZE/sizeof(struct iocb *))
asmlinkage
long
compat_sys_io_submit
(
aio_context_t
ctx_id
,
int
nr
,
u32
*
iocb
)
compat_sys_io_submit
(
aio_context_t
ctx_id
,
int
nr
,
u32
__user
*
iocb
)
{
struct
iocb
*
*
iocb64
;
struct
iocb
__user
*
__user
*
iocb64
;
long
ret
;
if
(
unlikely
(
nr
<
0
))
...
...
@@ -642,7 +643,7 @@ compat_sys_io_submit(aio_context_t ctx_id, int nr, u32 *iocb)
nr
=
MAX_AIO_SUBMITS
;
iocb64
=
compat_alloc_user_space
(
nr
*
sizeof
(
*
iocb64
));
ret
=
copy_iocb
(
nr
,
iocb
,
(
u64
*
)
iocb64
);
ret
=
copy_iocb
(
nr
,
iocb
,
(
u64
__user
*
)
iocb64
);
if
(
!
ret
)
ret
=
sys_io_submit
(
ctx_id
,
nr
,
iocb64
);
return
ret
;
...
...
@@ -980,7 +981,7 @@ compat_sys_writev(unsigned long fd, const struct compat_iovec __user *vec, unsig
* a copy of count() from fs/exec.c, except that it works with 32 bit argv
* and envp pointers.
*/
static
int
compat_count
(
compat_uptr_t
*
argv
,
int
max
)
static
int
compat_count
(
compat_uptr_t
__user
*
argv
,
int
max
)
{
int
i
=
0
;
...
...
@@ -1452,7 +1453,7 @@ union compat_nfsctl_res {
struct
knfsd_fh
cr32_getfs
;
};
static
int
compat_nfs_svc_trans
(
struct
nfsctl_arg
*
karg
,
struct
compat_nfsctl_arg
*
arg
)
static
int
compat_nfs_svc_trans
(
struct
nfsctl_arg
*
karg
,
struct
compat_nfsctl_arg
__user
*
arg
)
{
int
err
;
...
...
@@ -1463,7 +1464,7 @@ static int compat_nfs_svc_trans(struct nfsctl_arg *karg, struct compat_nfsctl_ar
return
(
err
)
?
-
EFAULT
:
0
;
}
static
int
compat_nfs_clnt_trans
(
struct
nfsctl_arg
*
karg
,
struct
compat_nfsctl_arg
*
arg
)
static
int
compat_nfs_clnt_trans
(
struct
nfsctl_arg
*
karg
,
struct
compat_nfsctl_arg
__user
*
arg
)
{
int
err
;
...
...
@@ -1487,7 +1488,7 @@ static int compat_nfs_clnt_trans(struct nfsctl_arg *karg, struct compat_nfsctl_a
return
(
err
)
?
-
EFAULT
:
0
;
}
static
int
compat_nfs_exp_trans
(
struct
nfsctl_arg
*
karg
,
struct
compat_nfsctl_arg
*
arg
)
static
int
compat_nfs_exp_trans
(
struct
nfsctl_arg
*
karg
,
struct
compat_nfsctl_arg
__user
*
arg
)
{
int
err
;
...
...
@@ -1515,7 +1516,7 @@ static int compat_nfs_exp_trans(struct nfsctl_arg *karg, struct compat_nfsctl_ar
return
(
err
)
?
-
EFAULT
:
0
;
}
static
int
compat_nfs_getfd_trans
(
struct
nfsctl_arg
*
karg
,
struct
compat_nfsctl_arg
*
arg
)
static
int
compat_nfs_getfd_trans
(
struct
nfsctl_arg
*
karg
,
struct
compat_nfsctl_arg
__user
*
arg
)
{
int
err
;
...
...
@@ -1533,7 +1534,7 @@ static int compat_nfs_getfd_trans(struct nfsctl_arg *karg, struct compat_nfsctl_
return
(
err
)
?
-
EFAULT
:
0
;
}
static
int
compat_nfs_getfs_trans
(
struct
nfsctl_arg
*
karg
,
struct
compat_nfsctl_arg
*
arg
)
static
int
compat_nfs_getfs_trans
(
struct
nfsctl_arg
*
karg
,
struct
compat_nfsctl_arg
__user
*
arg
)
{
int
err
;
...
...
@@ -1554,7 +1555,7 @@ static int compat_nfs_getfs_trans(struct nfsctl_arg *karg, struct compat_nfsctl_
/* This really doesn't need translations, we are only passing
* back a union which contains opaque nfs file handle data.
*/
static
int
compat_nfs_getfh_res_trans
(
union
nfsctl_res
*
kres
,
union
compat_nfsctl_res
*
res
)
static
int
compat_nfs_getfh_res_trans
(
union
nfsctl_res
*
kres
,
union
compat_nfsctl_res
__user
*
res
)
{
int
err
;
...
...
@@ -1563,8 +1564,8 @@ static int compat_nfs_getfh_res_trans(union nfsctl_res *kres, union compat_nfsct
return
(
err
)
?
-
EFAULT
:
0
;
}
asmlinkage
long
compat_sys_nfsservctl
(
int
cmd
,
struct
compat_nfsctl_arg
*
arg
,
union
compat_nfsctl_res
*
res
)
asmlinkage
long
compat_sys_nfsservctl
(
int
cmd
,
struct
compat_nfsctl_arg
__user
*
arg
,
union
compat_nfsctl_res
__user
*
res
)
{
struct
nfsctl_arg
*
karg
;
union
nfsctl_res
*
kres
;
...
...
@@ -1611,7 +1612,8 @@ asmlinkage long compat_sys_nfsservctl(int cmd, struct compat_nfsctl_arg *arg,
oldfs
=
get_fs
();
set_fs
(
KERNEL_DS
);
err
=
sys_nfsservctl
(
cmd
,
karg
,
kres
);
/* The __user pointer casts are valid because of the set_fs() */
err
=
sys_nfsservctl
(
cmd
,
(
void
__user
*
)
karg
,
(
void
__user
*
)
kres
);
set_fs
(
oldfs
);
if
(
err
)
...
...
include/asm-mips/mach-dec/mc146818rtc.h
View file @
462710a0
...
...
@@ -23,7 +23,7 @@ extern unsigned long dec_kn_slot_size;
#define RTC_PORT(x) CPHYSADDR(dec_rtc_base)
#define RTC_IO_EXTENT dec_kn_slot_size
#define RTC_IOMAPPED 0
#
define RTC_IRQ 0
#
undef RTC_IRQ
#define RTC_DEC_YEAR 0x3f
/* Where we store the real year on DECs. */
...
...
include/asm-ppc64/compat.h
View file @
462710a0
...
...
@@ -117,12 +117,12 @@ typedef u32 compat_sigset_word;
*/
typedef
u32
compat_uptr_t
;
static
inline
void
*
compat_ptr
(
compat_uptr_t
uptr
)
static
inline
void
__user
*
compat_ptr
(
compat_uptr_t
uptr
)
{
return
(
void
*
)(
unsigned
long
)
uptr
;
return
(
void
__user
*
)(
unsigned
long
)
uptr
;
}
static
inline
void
*
compat_alloc_user_space
(
long
len
)
static
inline
void
__user
*
compat_alloc_user_space
(
long
len
)
{
struct
pt_regs
*
regs
=
current
->
thread
.
regs
;
unsigned
long
usp
=
regs
->
gpr
[
1
];
...
...
@@ -134,7 +134,7 @@ static inline void *compat_alloc_user_space(long len)
if
(
!
(
test_thread_flag
(
TIF_32BIT
)))
usp
-=
288
;
return
(
void
*
)
(
usp
-
len
);
return
(
void
__user
*
)
(
usp
-
len
);
}
/*
...
...
include/asm-ppc64/ipc.h
View file @
462710a0
...
...
@@ -12,7 +12,7 @@
* 2 of the License, or (at your option) any later version.
*/
struct
ipc_kludge
{
struct
msgbuf
*
msgp
;
struct
msgbuf
__user
*
msgp
;
long
msgtyp
;
};
...
...
include/asm-ppc64/unistd.h
View file @
462710a0
...
...
@@ -455,7 +455,7 @@ int sys_fork(unsigned long p1, unsigned long p2, unsigned long p3,
int
sys_vfork
(
unsigned
long
p1
,
unsigned
long
p2
,
unsigned
long
p3
,
unsigned
long
p4
,
unsigned
long
p5
,
unsigned
long
p6
,
struct
pt_regs
*
regs
);
int
sys_pipe
(
int
*
fildes
);
int
sys_pipe
(
int
__user
*
fildes
);
int
sys_ptrace
(
long
request
,
long
pid
,
long
addr
,
long
data
);
struct
sigaction
;
long
sys_rt_sigaction
(
int
sig
,
const
struct
sigaction
__user
*
act
,
...
...
sound/oss/aci.c
View file @
462710a0
...
...
@@ -362,7 +362,7 @@ static int getequalizer(int __user *arg,
static
int
aci_mixer_ioctl
(
int
dev
,
unsigned
int
cmd
,
void
__user
*
arg
)
{
int
vol
,
buf
;
int
__user
*
p
;
int
__user
*
p
=
arg
;
switch
(
cmd
)
{
case
SOUND_MIXER_WRITE_VOLUME
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment