Commit cdce088e authored by Linus Torvalds's avatar Linus Torvalds

Merge http://lia64.bkbits.net/to-linus-2.5

into home.osdl.org:/home/torvalds/v2.5/linux
parents 412a1123 a096638b
...@@ -251,7 +251,7 @@ void machine_restart(char * __unused) ...@@ -251,7 +251,7 @@ void machine_restart(char * __unused)
* other OSs see a clean IRQ state. * other OSs see a clean IRQ state.
*/ */
smp_send_stop(); smp_send_stop();
#elif CONFIG_X86_LOCAL_APIC #elif defined(CONFIG_X86_LOCAL_APIC)
if (cpu_has_apic) { if (cpu_has_apic) {
local_irq_disable(); local_irq_disable();
disable_local_APIC(); disable_local_APIC();
......
...@@ -288,8 +288,10 @@ static int ep_getfd(int *efd, struct inode **einode, struct file **efile); ...@@ -288,8 +288,10 @@ static int ep_getfd(int *efd, struct inode **einode, struct file **efile);
static int ep_alloc_pages(char **pages, int numpages); static int ep_alloc_pages(char **pages, int numpages);
static int ep_free_pages(char **pages, int numpages); static int ep_free_pages(char **pages, int numpages);
static int ep_file_init(struct file *file, unsigned int hashbits); static int ep_file_init(struct file *file, unsigned int hashbits);
static unsigned int ep_hash_index(struct eventpoll *ep, struct file *file, int fd); static unsigned int ep_hash_index(struct eventpoll *ep, struct file *file,
static struct list_head *ep_hash_entry(struct eventpoll *ep, unsigned int index); int fd);
static struct list_head *ep_hash_entry(struct eventpoll *ep,
unsigned int index);
static int ep_init(struct eventpoll *ep, unsigned int hashbits); static int ep_init(struct eventpoll *ep, unsigned int hashbits);
static void ep_free(struct eventpoll *ep); static void ep_free(struct eventpoll *ep);
static struct epitem *ep_find(struct eventpoll *ep, struct file *file, int fd); static struct epitem *ep_find(struct eventpoll *ep, struct file *file, int fd);
...@@ -299,7 +301,8 @@ static void ep_ptable_queue_proc(struct file *file, wait_queue_head_t *whead, ...@@ -299,7 +301,8 @@ static void ep_ptable_queue_proc(struct file *file, wait_queue_head_t *whead,
poll_table *pt); poll_table *pt);
static int ep_insert(struct eventpoll *ep, struct epoll_event *event, static int ep_insert(struct eventpoll *ep, struct epoll_event *event,
struct file *tfile, int fd); struct file *tfile, int fd);
static int ep_modify(struct eventpoll *ep, struct epitem *epi, struct epoll_event *event); static int ep_modify(struct eventpoll *ep, struct epitem *epi,
struct epoll_event *event);
static void ep_unregister_pollwait(struct eventpoll *ep, struct epitem *epi); static void ep_unregister_pollwait(struct eventpoll *ep, struct epitem *epi);
static int ep_unlink(struct eventpoll *ep, struct epitem *epi); static int ep_unlink(struct eventpoll *ep, struct epitem *epi);
static int ep_remove(struct eventpoll *ep, struct epitem *epi); static int ep_remove(struct eventpoll *ep, struct epitem *epi);
...@@ -309,11 +312,12 @@ static unsigned int ep_eventpoll_poll(struct file *file, poll_table *wait); ...@@ -309,11 +312,12 @@ static unsigned int ep_eventpoll_poll(struct file *file, poll_table *wait);
static int ep_collect_ready_items(struct eventpoll *ep, static int ep_collect_ready_items(struct eventpoll *ep,
struct list_head *txlist, int maxevents); struct list_head *txlist, int maxevents);
static int ep_send_events(struct eventpoll *ep, struct list_head *txlist, static int ep_send_events(struct eventpoll *ep, struct list_head *txlist,
struct epoll_event *events); struct epoll_event __user *events);
static void ep_reinject_items(struct eventpoll *ep, struct list_head *txlist); static void ep_reinject_items(struct eventpoll *ep, struct list_head *txlist);
static int ep_events_transfer(struct eventpoll *ep, static int ep_events_transfer(struct eventpoll *ep,
struct epoll_event *events, int maxevents); struct epoll_event __user *events,
static int ep_poll(struct eventpoll *ep, struct epoll_event *events, int maxevents);
static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events,
int maxevents, long timeout); int maxevents, long timeout);
static int eventpollfs_delete_dentry(struct dentry *dentry); static int eventpollfs_delete_dentry(struct dentry *dentry);
static struct inode *ep_eventpoll_inode(void); static struct inode *ep_eventpoll_inode(void);
...@@ -532,11 +536,13 @@ asmlinkage long sys_epoll_create(int size) ...@@ -532,11 +536,13 @@ asmlinkage long sys_epoll_create(int size)
/* /*
* The following function implement the controller interface for the eventpoll * The following function implements the controller interface for
* file that enable the insertion/removal/change of file descriptors inside * the eventpoll file that enables the insertion/removal/change of
* the interest set. It rapresents the kernel part of the user space epoll_ctl(2). * file descriptors inside the interest set. It represents
* the kernel part of the user space epoll_ctl(2).
*/ */
asmlinkage long sys_epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) asmlinkage long
sys_epoll_ctl(int epfd, int op, int fd, struct epoll_event __user *event)
{ {
int error; int error;
struct file *file, *tfile; struct file *file, *tfile;
...@@ -637,8 +643,8 @@ asmlinkage long sys_epoll_ctl(int epfd, int op, int fd, struct epoll_event *even ...@@ -637,8 +643,8 @@ asmlinkage long sys_epoll_ctl(int epfd, int op, int fd, struct epoll_event *even
* Implement the event wait interface for the eventpoll file. It is the kernel * Implement the event wait interface for the eventpoll file. It is the kernel
* part of the user space epoll_wait(2). * part of the user space epoll_wait(2).
*/ */
asmlinkage long sys_epoll_wait(int epfd, struct epoll_event *events, int maxevents, asmlinkage long sys_epoll_wait(int epfd, struct epoll_event __user *events,
int timeout) int maxevents, int timeout)
{ {
int error; int error;
struct file *file; struct file *file;
...@@ -662,7 +668,7 @@ asmlinkage long sys_epoll_wait(int epfd, struct epoll_event *events, int maxeven ...@@ -662,7 +668,7 @@ asmlinkage long sys_epoll_wait(int epfd, struct epoll_event *events, int maxeven
goto eexit_1; goto eexit_1;
/* /*
* We have to check that the file structure underneath the file descriptor * We have to check that the file structure underneath the fd
* the user passed to us _is_ an eventpoll file. * the user passed to us _is_ an eventpoll file.
*/ */
error = -EINVAL; error = -EINVAL;
...@@ -1409,7 +1415,7 @@ static int ep_collect_ready_items(struct eventpoll *ep, struct list_head *txlist ...@@ -1409,7 +1415,7 @@ static int ep_collect_ready_items(struct eventpoll *ep, struct list_head *txlist
* because of the way poll() is traditionally implemented in Linux. * because of the way poll() is traditionally implemented in Linux.
*/ */
static int ep_send_events(struct eventpoll *ep, struct list_head *txlist, static int ep_send_events(struct eventpoll *ep, struct list_head *txlist,
struct epoll_event *events) struct epoll_event __user *events)
{ {
int eventcnt = 0, eventbuf = 0; int eventcnt = 0, eventbuf = 0;
unsigned int revents; unsigned int revents;
...@@ -1521,7 +1527,8 @@ static void ep_reinject_items(struct eventpoll *ep, struct list_head *txlist) ...@@ -1521,7 +1527,8 @@ static void ep_reinject_items(struct eventpoll *ep, struct list_head *txlist)
/* /*
* Perform the transfer of events to user space. * Perform the transfer of events to user space.
*/ */
static int ep_events_transfer(struct eventpoll *ep, struct epoll_event *events, int maxevents) static int ep_events_transfer(struct eventpoll *ep,
struct epoll_event __user *events, int maxevents)
{ {
int eventcnt = 0; int eventcnt = 0;
struct list_head txlist; struct list_head txlist;
...@@ -1549,8 +1556,8 @@ static int ep_events_transfer(struct eventpoll *ep, struct epoll_event *events, ...@@ -1549,8 +1556,8 @@ static int ep_events_transfer(struct eventpoll *ep, struct epoll_event *events,
} }
static int ep_poll(struct eventpoll *ep, struct epoll_event *events, int maxevents, static int ep_poll(struct eventpoll *ep, struct epoll_event __user *events,
long timeout) int maxevents, long timeout)
{ {
int res, eavail; int res, eavail;
unsigned long flags; unsigned long flags;
......
...@@ -20,7 +20,8 @@ ...@@ -20,7 +20,8 @@
#include "ext2.h" #include "ext2.h"
#include "xattr.h" #include "xattr.h"
static int ext2_readlink(struct dentry *dentry, char *buffer, int buflen) static int
ext2_readlink(struct dentry *dentry, char __user *buffer, int buflen)
{ {
struct ext2_inode_info *ei = EXT2_I(dentry->d_inode); struct ext2_inode_info *ei = EXT2_I(dentry->d_inode);
return vfs_readlink(dentry, buffer, buflen, (char *)ei->i_data); return vfs_readlink(dentry, buffer, buflen, (char *)ei->i_data);
......
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
#include <linux/smp_lock.h> #include <linux/smp_lock.h>
#include <linux/buffer_head.h> #include <linux/buffer_head.h>
static ssize_t fat_file_write(struct file *filp, const char *buf, size_t count, static ssize_t fat_file_write(struct file *filp, const char __user *buf,
loff_t *ppos); size_t count, loff_t *ppos);
struct file_operations fat_file_operations = { struct file_operations fat_file_operations = {
.llseek = generic_file_llseek, .llseek = generic_file_llseek,
...@@ -66,8 +66,8 @@ int fat_get_block(struct inode *inode, sector_t iblock, ...@@ -66,8 +66,8 @@ int fat_get_block(struct inode *inode, sector_t iblock,
return 0; return 0;
} }
static ssize_t fat_file_write(struct file *filp, const char *buf, size_t count, static ssize_t fat_file_write(struct file *filp, const char __user *buf,
loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct inode *inode = filp->f_dentry->d_inode; struct inode *inode = filp->f_dentry->d_inode;
int retval; int retval;
......
...@@ -18,13 +18,13 @@ ...@@ -18,13 +18,13 @@
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/bitops.h> #include <asm/bitops.h>
static ssize_t proc_file_read(struct file * file, char * buf, static ssize_t proc_file_read(struct file *file, char __user *buf,
size_t nbytes, loff_t *ppos); size_t nbytes, loff_t *ppos);
static ssize_t proc_file_write(struct file * file, const char * buffer, static ssize_t proc_file_write(struct file *file, const char __user *buffer,
size_t count, loff_t *ppos); size_t count, loff_t *ppos);
static loff_t proc_file_lseek(struct file *, loff_t, int); static loff_t proc_file_lseek(struct file *, loff_t, int);
int proc_match(int len, const char *name,struct proc_dir_entry * de) int proc_match(int len, const char *name, struct proc_dir_entry *de)
{ {
if (de->namelen != len) if (de->namelen != len)
return 0; return 0;
...@@ -45,7 +45,8 @@ static struct file_operations proc_file_operations = { ...@@ -45,7 +45,8 @@ static struct file_operations proc_file_operations = {
#define PROC_BLOCK_SIZE (PAGE_SIZE - 1024) #define PROC_BLOCK_SIZE (PAGE_SIZE - 1024)
static ssize_t static ssize_t
proc_file_read(struct file * file, char * buf, size_t nbytes, loff_t *ppos) proc_file_read(struct file *file, char __user *buf, size_t nbytes,
loff_t *ppos)
{ {
struct inode * inode = file->f_dentry->d_inode; struct inode * inode = file->f_dentry->d_inode;
char *page; char *page;
...@@ -59,8 +60,7 @@ proc_file_read(struct file * file, char * buf, size_t nbytes, loff_t *ppos) ...@@ -59,8 +60,7 @@ proc_file_read(struct file * file, char * buf, size_t nbytes, loff_t *ppos)
if (!(page = (char*) __get_free_page(GFP_KERNEL))) if (!(page = (char*) __get_free_page(GFP_KERNEL)))
return -ENOMEM; return -ENOMEM;
while ((nbytes > 0) && !eof) while ((nbytes > 0) && !eof) {
{
count = MIN(PROC_BLOCK_SIZE, nbytes); count = MIN(PROC_BLOCK_SIZE, nbytes);
start = NULL; start = NULL;
...@@ -184,7 +184,7 @@ proc_file_read(struct file * file, char * buf, size_t nbytes, loff_t *ppos) ...@@ -184,7 +184,7 @@ proc_file_read(struct file * file, char * buf, size_t nbytes, loff_t *ppos)
} }
static ssize_t static ssize_t
proc_file_write(struct file * file, const char * buffer, proc_file_write(struct file *file, const char __user *buffer,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct inode *inode = file->f_dentry->d_inode; struct inode *inode = file->f_dentry->d_inode;
...@@ -201,7 +201,7 @@ proc_file_write(struct file * file, const char * buffer, ...@@ -201,7 +201,7 @@ proc_file_write(struct file * file, const char * buffer,
static loff_t static loff_t
proc_file_lseek(struct file * file, loff_t offset, int orig) proc_file_lseek(struct file *file, loff_t offset, int orig)
{ {
lock_kernel(); lock_kernel();
...@@ -299,15 +299,16 @@ static int make_inode_number(void) ...@@ -299,15 +299,16 @@ static int make_inode_number(void)
return i; return i;
} }
static int proc_readlink(struct dentry *dentry, char *buffer, int buflen) static int
proc_readlink(struct dentry *dentry, char __user *buffer, int buflen)
{ {
char *s=PDE(dentry->d_inode)->data; char *s = PDE(dentry->d_inode)->data;
return vfs_readlink(dentry, buffer, buflen, s); return vfs_readlink(dentry, buffer, buflen, s);
} }
static int proc_follow_link(struct dentry *dentry, struct nameidata *nd) static int proc_follow_link(struct dentry *dentry, struct nameidata *nd)
{ {
char *s=PDE(dentry->d_inode)->data; char *s = PDE(dentry->d_inode)->data;
return vfs_follow_link(nd, s); return vfs_follow_link(nd, s);
} }
......
...@@ -27,7 +27,7 @@ static int open_kcore(struct inode * inode, struct file * filp) ...@@ -27,7 +27,7 @@ static int open_kcore(struct inode * inode, struct file * filp)
return capable(CAP_SYS_RAWIO) ? 0 : -EPERM; return capable(CAP_SYS_RAWIO) ? 0 : -EPERM;
} }
static ssize_t read_kcore(struct file *, char *, size_t, loff_t *); static ssize_t read_kcore(struct file *, char __user *, size_t, loff_t *);
struct file_operations proc_kcore_operations = { struct file_operations proc_kcore_operations = {
.read = read_kcore, .read = read_kcore,
...@@ -267,7 +267,8 @@ static void elf_kcore_store_hdr(char *bufp, int nphdr, int dataoff) ...@@ -267,7 +267,8 @@ static void elf_kcore_store_hdr(char *bufp, int nphdr, int dataoff)
/* /*
* read from the ELF header and then kernel memory * read from the ELF header and then kernel memory
*/ */
static ssize_t read_kcore(struct file *file, char *buffer, size_t buflen, loff_t *fpos) static ssize_t
read_kcore(struct file *file, char __user *buffer, size_t buflen, loff_t *fpos)
{ {
ssize_t acc = 0; ssize_t acc = 0;
size_t size, tsz; size_t size, tsz;
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
extern wait_queue_head_t log_wait; extern wait_queue_head_t log_wait;
extern int do_syslog(int type, char * bug, int count); extern int do_syslog(int type, char __user *bug, int count);
static int kmsg_open(struct inode * inode, struct file * file) static int kmsg_open(struct inode * inode, struct file * file)
{ {
...@@ -30,13 +30,13 @@ static int kmsg_release(struct inode * inode, struct file * file) ...@@ -30,13 +30,13 @@ static int kmsg_release(struct inode * inode, struct file * file)
return 0; return 0;
} }
static ssize_t kmsg_read(struct file * file, char * buf, static ssize_t kmsg_read(struct file *file, char __user *buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
return do_syslog(2,buf,count); return do_syslog(2, buf, count);
} }
static unsigned int kmsg_poll(struct file *file, poll_table * wait) static unsigned int kmsg_poll(struct file *file, poll_table *wait)
{ {
poll_wait(file, &log_wait, wait); poll_wait(file, &log_wait, wait);
if (do_syslog(9, 0, 0)) if (do_syslog(9, 0, 0))
......
...@@ -343,7 +343,7 @@ static struct file_operations proc_modules_operations = { ...@@ -343,7 +343,7 @@ static struct file_operations proc_modules_operations = {
#endif #endif
extern struct seq_operations slabinfo_op; extern struct seq_operations slabinfo_op;
extern ssize_t slabinfo_write(struct file *, const char *, size_t, loff_t *); extern ssize_t slabinfo_write(struct file *, const char __user *, size_t, loff_t *);
static int slabinfo_open(struct inode *inode, struct file *file) static int slabinfo_open(struct inode *inode, struct file *file)
{ {
return seq_open(file, &slabinfo_op); return seq_open(file, &slabinfo_op);
...@@ -548,8 +548,8 @@ static int execdomains_read_proc(char *page, char **start, off_t off, ...@@ -548,8 +548,8 @@ static int execdomains_read_proc(char *page, char **start, off_t off,
* buffer. Use of the program readprofile is recommended in order to * buffer. Use of the program readprofile is recommended in order to
* get meaningful info out of these data. * get meaningful info out of these data.
*/ */
static ssize_t read_profile(struct file *file, char *buf, static ssize_t
size_t count, loff_t *ppos) read_profile(struct file *file, char __user *buf, size_t count, loff_t *ppos)
{ {
unsigned long p = *ppos; unsigned long p = *ppos;
ssize_t read; ssize_t read;
...@@ -580,13 +580,13 @@ static ssize_t read_profile(struct file *file, char *buf, ...@@ -580,13 +580,13 @@ static ssize_t read_profile(struct file *file, char *buf,
* Writing a 'profiling multiplier' value into it also re-sets the profiling * Writing a 'profiling multiplier' value into it also re-sets the profiling
* interrupt frequency, on architectures that support this. * interrupt frequency, on architectures that support this.
*/ */
static ssize_t write_profile(struct file * file, const char * buf, static ssize_t write_profile(struct file *file, const char __user *buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern int setup_profiling_timer (unsigned int multiplier); extern int setup_profiling_timer (unsigned int multiplier);
if (count==sizeof(int)) { if (count == sizeof(int)) {
unsigned int multiplier; unsigned int multiplier;
if (copy_from_user(&multiplier, buf, sizeof(int))) if (copy_from_user(&multiplier, buf, sizeof(int)))
...@@ -610,7 +610,7 @@ static struct file_operations proc_profile_operations = { ...@@ -610,7 +610,7 @@ static struct file_operations proc_profile_operations = {
/* /*
* writing 'C' to /proc/sysrq-trigger is like sysrq-C * writing 'C' to /proc/sysrq-trigger is like sysrq-C
*/ */
static ssize_t write_sysrq_trigger(struct file *file, const char *buf, static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
if (count) { if (count) {
......
...@@ -112,11 +112,13 @@ static int ufs_create (struct inode * dir, struct dentry * dentry, int mode, ...@@ -112,11 +112,13 @@ static int ufs_create (struct inode * dir, struct dentry * dentry, int mode,
static int ufs_mknod (struct inode * dir, struct dentry *dentry, int mode, dev_t rdev) static int ufs_mknod (struct inode * dir, struct dentry *dentry, int mode, dev_t rdev)
{ {
struct inode * inode; struct inode *inode;
int err;
if (!old_valid_dev(rdev)) if (!old_valid_dev(rdev))
return -EINVAL; return -EINVAL;
inode = ufs_new_inode(dir, mode); inode = ufs_new_inode(dir, mode);
int err = PTR_ERR(inode); err = PTR_ERR(inode);
if (!IS_ERR(inode)) { if (!IS_ERR(inode)) {
init_special_inode(inode, mode, rdev); init_special_inode(inode, mode, rdev);
/* NOTE: that'll go when we get wide dev_t */ /* NOTE: that'll go when we get wide dev_t */
......
...@@ -53,7 +53,8 @@ xattr_free(void *ptr, size_t size) ...@@ -53,7 +53,8 @@ xattr_free(void *ptr, size_t size)
* Extended attribute SET operations * Extended attribute SET operations
*/ */
static long static long
setxattr(struct dentry *d, char *name, void *value, size_t size, int flags) setxattr(struct dentry *d, char __user *name, void __user *value,
size_t size, int flags)
{ {
int error; int error;
void *kvalue; void *kvalue;
...@@ -94,7 +95,8 @@ setxattr(struct dentry *d, char *name, void *value, size_t size, int flags) ...@@ -94,7 +95,8 @@ setxattr(struct dentry *d, char *name, void *value, size_t size, int flags)
} }
asmlinkage long asmlinkage long
sys_setxattr(char *path, char *name, void *value, size_t size, int flags) sys_setxattr(char __user *path, char __user *name, void __user *value,
size_t size, int flags)
{ {
struct nameidata nd; struct nameidata nd;
int error; int error;
...@@ -108,7 +110,8 @@ sys_setxattr(char *path, char *name, void *value, size_t size, int flags) ...@@ -108,7 +110,8 @@ sys_setxattr(char *path, char *name, void *value, size_t size, int flags)
} }
asmlinkage long asmlinkage long
sys_lsetxattr(char *path, char *name, void *value, size_t size, int flags) sys_lsetxattr(char __user *path, char __user *name, void __user *value,
size_t size, int flags)
{ {
struct nameidata nd; struct nameidata nd;
int error; int error;
...@@ -122,7 +125,8 @@ sys_lsetxattr(char *path, char *name, void *value, size_t size, int flags) ...@@ -122,7 +125,8 @@ sys_lsetxattr(char *path, char *name, void *value, size_t size, int flags)
} }
asmlinkage long asmlinkage long
sys_fsetxattr(int fd, char *name, void *value, size_t size, int flags) sys_fsetxattr(int fd, char __user *name, void __user *value,
size_t size, int flags)
{ {
struct file *f; struct file *f;
int error = -EBADF; int error = -EBADF;
...@@ -139,7 +143,7 @@ sys_fsetxattr(int fd, char *name, void *value, size_t size, int flags) ...@@ -139,7 +143,7 @@ sys_fsetxattr(int fd, char *name, void *value, size_t size, int flags)
* Extended attribute GET operations * Extended attribute GET operations
*/ */
static ssize_t static ssize_t
getxattr(struct dentry *d, char *name, void *value, size_t size) getxattr(struct dentry *d, char __user *name, void __user *value, size_t size)
{ {
ssize_t error; ssize_t error;
void *kvalue; void *kvalue;
...@@ -172,7 +176,8 @@ getxattr(struct dentry *d, char *name, void *value, size_t size) ...@@ -172,7 +176,8 @@ getxattr(struct dentry *d, char *name, void *value, size_t size)
} }
asmlinkage ssize_t asmlinkage ssize_t
sys_getxattr(char *path, char *name, void *value, size_t size) sys_getxattr(char __user *path, char __user *name, void __user *value,
size_t size)
{ {
struct nameidata nd; struct nameidata nd;
ssize_t error; ssize_t error;
...@@ -186,7 +191,8 @@ sys_getxattr(char *path, char *name, void *value, size_t size) ...@@ -186,7 +191,8 @@ sys_getxattr(char *path, char *name, void *value, size_t size)
} }
asmlinkage ssize_t asmlinkage ssize_t
sys_lgetxattr(char *path, char *name, void *value, size_t size) sys_lgetxattr(char __user *path, char __user *name, void __user *value,
size_t size)
{ {
struct nameidata nd; struct nameidata nd;
ssize_t error; ssize_t error;
...@@ -200,7 +206,7 @@ sys_lgetxattr(char *path, char *name, void *value, size_t size) ...@@ -200,7 +206,7 @@ sys_lgetxattr(char *path, char *name, void *value, size_t size)
} }
asmlinkage ssize_t asmlinkage ssize_t
sys_fgetxattr(int fd, char *name, void *value, size_t size) sys_fgetxattr(int fd, char __user *name, void __user *value, size_t size)
{ {
struct file *f; struct file *f;
ssize_t error = -EBADF; ssize_t error = -EBADF;
...@@ -217,7 +223,7 @@ sys_fgetxattr(int fd, char *name, void *value, size_t size) ...@@ -217,7 +223,7 @@ sys_fgetxattr(int fd, char *name, void *value, size_t size)
* Extended attribute LIST operations * Extended attribute LIST operations
*/ */
static ssize_t static ssize_t
listxattr(struct dentry *d, char *list, size_t size) listxattr(struct dentry *d, char __user *list, size_t size)
{ {
ssize_t error; ssize_t error;
char *klist; char *klist;
...@@ -243,7 +249,7 @@ listxattr(struct dentry *d, char *list, size_t size) ...@@ -243,7 +249,7 @@ listxattr(struct dentry *d, char *list, size_t size)
} }
asmlinkage ssize_t asmlinkage ssize_t
sys_listxattr(char *path, char *list, size_t size) sys_listxattr(char __user *path, char __user *list, size_t size)
{ {
struct nameidata nd; struct nameidata nd;
ssize_t error; ssize_t error;
...@@ -257,7 +263,7 @@ sys_listxattr(char *path, char *list, size_t size) ...@@ -257,7 +263,7 @@ sys_listxattr(char *path, char *list, size_t size)
} }
asmlinkage ssize_t asmlinkage ssize_t
sys_llistxattr(char *path, char *list, size_t size) sys_llistxattr(char __user *path, char __user *list, size_t size)
{ {
struct nameidata nd; struct nameidata nd;
ssize_t error; ssize_t error;
...@@ -271,7 +277,7 @@ sys_llistxattr(char *path, char *list, size_t size) ...@@ -271,7 +277,7 @@ sys_llistxattr(char *path, char *list, size_t size)
} }
asmlinkage ssize_t asmlinkage ssize_t
sys_flistxattr(int fd, char *list, size_t size) sys_flistxattr(int fd, char __user *list, size_t size)
{ {
struct file *f; struct file *f;
ssize_t error = -EBADF; ssize_t error = -EBADF;
...@@ -288,7 +294,7 @@ sys_flistxattr(int fd, char *list, size_t size) ...@@ -288,7 +294,7 @@ sys_flistxattr(int fd, char *list, size_t size)
* Extended attribute REMOVE operations * Extended attribute REMOVE operations
*/ */
static long static long
removexattr(struct dentry *d, char *name) removexattr(struct dentry *d, char __user *name)
{ {
int error; int error;
char kname[XATTR_NAME_MAX + 1]; char kname[XATTR_NAME_MAX + 1];
...@@ -313,7 +319,7 @@ removexattr(struct dentry *d, char *name) ...@@ -313,7 +319,7 @@ removexattr(struct dentry *d, char *name)
} }
asmlinkage long asmlinkage long
sys_removexattr(char *path, char *name) sys_removexattr(char __user *path, char __user *name)
{ {
struct nameidata nd; struct nameidata nd;
int error; int error;
...@@ -327,7 +333,7 @@ sys_removexattr(char *path, char *name) ...@@ -327,7 +333,7 @@ sys_removexattr(char *path, char *name)
} }
asmlinkage long asmlinkage long
sys_lremovexattr(char *path, char *name) sys_lremovexattr(char __user *path, char __user *name)
{ {
struct nameidata nd; struct nameidata nd;
int error; int error;
...@@ -341,7 +347,7 @@ sys_lremovexattr(char *path, char *name) ...@@ -341,7 +347,7 @@ sys_lremovexattr(char *path, char *name)
} }
asmlinkage long asmlinkage long
sys_fremovexattr(int fd, char *name) sys_fremovexattr(int fd, char __user *name)
{ {
struct file *f; struct file *f;
int error = -EBADF; int error = -EBADF;
......
...@@ -290,7 +290,7 @@ enum { ...@@ -290,7 +290,7 @@ enum {
#ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE #ifdef CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE
extern struct cpufreq_governor cpufreq_gov_performance; extern struct cpufreq_governor cpufreq_gov_performance;
#define CPUFREQ_DEFAULT_GOVERNOR &cpufreq_gov_performance #define CPUFREQ_DEFAULT_GOVERNOR &cpufreq_gov_performance
#elif CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE #elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE)
extern struct cpufreq_governor cpufreq_gov_userspace; extern struct cpufreq_governor cpufreq_gov_userspace;
#define CPUFREQ_DEFAULT_GOVERNOR &cpufreq_gov_userspace #define CPUFREQ_DEFAULT_GOVERNOR &cpufreq_gov_userspace
#endif #endif
......
...@@ -48,9 +48,10 @@ struct file; ...@@ -48,9 +48,10 @@ struct file;
/* Kernel space functions implementing the user space "epoll" API */ /* Kernel space functions implementing the user space "epoll" API */
asmlinkage long sys_epoll_create(int size); asmlinkage long sys_epoll_create(int size);
asmlinkage long sys_epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); asmlinkage long sys_epoll_ctl(int epfd, int op, int fd,
asmlinkage long sys_epoll_wait(int epfd, struct epoll_event *events, int maxevents, struct epoll_event __user *event);
int timeout); asmlinkage long sys_epoll_wait(int epfd, struct epoll_event __user *events,
int maxevents, int timeout);
#ifdef CONFIG_EPOLL #ifdef CONFIG_EPOLL
......
...@@ -81,7 +81,7 @@ extern int dirty_expire_centisecs; ...@@ -81,7 +81,7 @@ extern int dirty_expire_centisecs;
struct ctl_table; struct ctl_table;
struct file; struct file;
int dirty_writeback_centisecs_handler(struct ctl_table *, int, struct file *, int dirty_writeback_centisecs_handler(struct ctl_table *, int, struct file *,
void *, size_t *); void __user *, size_t *);
void page_writeback_init(void); void page_writeback_init(void);
void balance_dirty_pages(struct address_space *mapping); void balance_dirty_pages(struct address_space *mapping);
......
...@@ -643,7 +643,7 @@ static ctl_table vm_table[] = { ...@@ -643,7 +643,7 @@ static ctl_table vm_table[] = {
.data = &dirty_writeback_centisecs, .data = &dirty_writeback_centisecs,
.maxlen = sizeof(dirty_writeback_centisecs), .maxlen = sizeof(dirty_writeback_centisecs),
.mode = 0644, .mode = 0644,
.proc_handler = dirty_writeback_centisecs_handler, .proc_handler = &dirty_writeback_centisecs_handler,
}, },
{ {
.ctl_name = VM_DIRTY_EXPIRE_CS, .ctl_name = VM_DIRTY_EXPIRE_CS,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment