]> git.hungrycats.org Git - linux/commitdiff
Fix user pointer annotations in more places, now that 'sparse'
authorLinus Torvalds <torvalds@penguin.transmeta.com>
Wed, 16 Apr 2003 08:10:06 +0000 (01:10 -0700)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Wed, 16 Apr 2003 08:10:06 +0000 (01:10 -0700)
verifies declarations against definitions and checks argument
types.

fs/read_write.c
include/linux/fs.h
include/linux/uio.h

index 7e73a7603924ee493b85e6977b6caad34d26906f..ae48047d849cf6c470409eec59490a4b0e11f7be 100644 (file)
@@ -335,7 +335,7 @@ static ssize_t do_readv_writev(int type, struct file *file,
                               const struct iovec __user * uvector,
                               unsigned long nr_segs, loff_t *pos)
 {
-       typedef ssize_t (*io_fn_t)(struct file *, char *, size_t, loff_t *);
+       typedef ssize_t (*io_fn_t)(struct file *, char __user *, size_t, loff_t *);
        typedef ssize_t (*iov_fn_t)(struct file *, const struct iovec *, unsigned long, loff_t *);
 
        size_t tot_len;
@@ -423,7 +423,7 @@ static ssize_t do_readv_writev(int type, struct file *file,
        ret = 0;
        vector = iov;
        while (nr_segs > 0) {
-               void * base;
+               void __user * base;
                size_t len;
                ssize_t nr;
 
index 5af89265c804f1c23176e4306c290053dcf38dfa..df578c422b25282d546d1141cf0c62bee0b06091 100644 (file)
@@ -752,11 +752,11 @@ struct inode_operations {
 
 struct seq_file;
 
-extern ssize_t vfs_read(struct file *, char *, size_t, loff_t *);
-extern ssize_t vfs_write(struct file *, const char *, size_t, loff_t *);
-extern ssize_t vfs_readv(struct file *, const struct iovec *,
+extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
+extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
+extern ssize_t vfs_readv(struct file *, const struct iovec __user *,
                unsigned long, loff_t *);
-extern ssize_t vfs_writev(struct file *, const struct iovec *,
+extern ssize_t vfs_writev(struct file *, const struct iovec __user *,
                unsigned long, loff_t *);
 
 /*
@@ -1202,16 +1202,16 @@ extern int generic_file_mmap(struct file *, struct vm_area_struct *);
 extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *);
 extern int file_read_actor(read_descriptor_t * desc, struct page *page, unsigned long offset, unsigned long size);
 extern int file_send_actor(read_descriptor_t * desc, struct page *page, unsigned long offset, unsigned long size);
-extern ssize_t generic_file_read(struct file *, char *, size_t, loff_t *);
+extern ssize_t generic_file_read(struct file *, char __user *, size_t, loff_t *);
 int generic_write_checks(struct inode *inode, struct file *file,
                        loff_t *pos, size_t *count, int isblk);
-extern ssize_t generic_file_write(struct file *, const char *, size_t, loff_t *);
+extern ssize_t generic_file_write(struct file *, const char __user *, size_t, loff_t *);
 extern ssize_t generic_file_aio_read(struct kiocb *, char *, size_t, loff_t);
 extern ssize_t generic_file_aio_write(struct kiocb *, const char *, size_t, loff_t);
 extern ssize_t generic_file_aio_write_nolock(struct kiocb *, const struct iovec *,
                                unsigned long, loff_t *);
-extern ssize_t do_sync_read(struct file *filp, char *buf, size_t len, loff_t *ppos);
-extern ssize_t do_sync_write(struct file *filp, const char *buf, size_t len, loff_t *ppos);
+extern ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos);
+extern ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos);
 ssize_t generic_file_write_nolock(struct file *file, const struct iovec *iov,
                                unsigned long nr_segs, loff_t *ppos);
 extern ssize_t generic_file_sendfile(struct file *, loff_t *, size_t, read_actor_t, void *);
@@ -1247,9 +1247,9 @@ static inline void do_generic_file_read(struct file * filp, loff_t *ppos,
 
 extern struct file_operations generic_ro_fops;
 
-extern int vfs_readlink(struct dentry *, char *, int, const char *);
+extern int vfs_readlink(struct dentry *, char __user *, int, const char *);
 extern int vfs_follow_link(struct nameidata *, const char *);
-extern int page_readlink(struct dentry *, char *, int);
+extern int page_readlink(struct dentry *, char __user *, int);
 extern int page_follow_link(struct dentry *, struct nameidata *);
 extern int page_symlink(struct inode *inode, const char *symname, int len);
 extern struct inode_operations page_symlink_inode_operations;
index 85b2f0ec9d3f0ba65fbed81865a2832f1bedcd56..6baad885c7452eb77a199c8a91d8338250a2ed36 100644 (file)
@@ -18,7 +18,7 @@
 
 struct iovec
 {
-       void *iov_base;         /* BSD uses caddr_t (1003.1g requires void *) */
+       void __user *iov_base;  /* BSD uses caddr_t (1003.1g requires void *) */
        __kernel_size_t iov_len; /* Must be size_t (1003.1g) */
 };