annotate RWF_... flags
[AV: added missing annotations in syscalls.h/compat.h] Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
4f59c71852
commit
ddef7ed2b5
|
@ -969,7 +969,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
|
|||
int use_wgather;
|
||||
loff_t pos = offset;
|
||||
unsigned int pflags = current->flags;
|
||||
int flags = 0;
|
||||
rwf_t flags = 0;
|
||||
|
||||
if (test_bit(RQ_LOCAL, &rqstp->rq_flags))
|
||||
/*
|
||||
|
|
|
@ -33,7 +33,7 @@ const struct file_operations generic_ro_fops = {
|
|||
|
||||
EXPORT_SYMBOL(generic_ro_fops);
|
||||
|
||||
static inline int unsigned_offsets(struct file *file)
|
||||
static inline bool unsigned_offsets(struct file *file)
|
||||
{
|
||||
return file->f_mode & FMODE_UNSIGNED_OFFSET;
|
||||
}
|
||||
|
@ -633,7 +633,7 @@ unsigned long iov_shorten(struct iovec *iov, unsigned long nr_segs, size_t to)
|
|||
EXPORT_SYMBOL(iov_shorten);
|
||||
|
||||
static ssize_t do_iter_readv_writev(struct file *filp, struct iov_iter *iter,
|
||||
loff_t *ppos, int type, int flags)
|
||||
loff_t *ppos, int type, rwf_t flags)
|
||||
{
|
||||
struct kiocb kiocb;
|
||||
ssize_t ret;
|
||||
|
@ -655,7 +655,7 @@ static ssize_t do_iter_readv_writev(struct file *filp, struct iov_iter *iter,
|
|||
|
||||
/* Do it by hand, with file-ops */
|
||||
static ssize_t do_loop_readv_writev(struct file *filp, struct iov_iter *iter,
|
||||
loff_t *ppos, int type, int flags)
|
||||
loff_t *ppos, int type, rwf_t flags)
|
||||
{
|
||||
ssize_t ret = 0;
|
||||
|
||||
|
@ -871,7 +871,7 @@ out:
|
|||
#endif
|
||||
|
||||
static ssize_t do_iter_read(struct file *file, struct iov_iter *iter,
|
||||
loff_t *pos, int flags)
|
||||
loff_t *pos, rwf_t flags)
|
||||
{
|
||||
size_t tot_len;
|
||||
ssize_t ret = 0;
|
||||
|
@ -899,7 +899,7 @@ out:
|
|||
}
|
||||
|
||||
ssize_t vfs_iter_read(struct file *file, struct iov_iter *iter, loff_t *ppos,
|
||||
int flags)
|
||||
rwf_t flags)
|
||||
{
|
||||
if (!file->f_op->read_iter)
|
||||
return -EINVAL;
|
||||
|
@ -908,7 +908,7 @@ ssize_t vfs_iter_read(struct file *file, struct iov_iter *iter, loff_t *ppos,
|
|||
EXPORT_SYMBOL(vfs_iter_read);
|
||||
|
||||
static ssize_t do_iter_write(struct file *file, struct iov_iter *iter,
|
||||
loff_t *pos, int flags)
|
||||
loff_t *pos, rwf_t flags)
|
||||
{
|
||||
size_t tot_len;
|
||||
ssize_t ret = 0;
|
||||
|
@ -935,7 +935,7 @@ static ssize_t do_iter_write(struct file *file, struct iov_iter *iter,
|
|||
}
|
||||
|
||||
ssize_t vfs_iter_write(struct file *file, struct iov_iter *iter, loff_t *ppos,
|
||||
int flags)
|
||||
rwf_t flags)
|
||||
{
|
||||
if (!file->f_op->write_iter)
|
||||
return -EINVAL;
|
||||
|
@ -944,7 +944,7 @@ ssize_t vfs_iter_write(struct file *file, struct iov_iter *iter, loff_t *ppos,
|
|||
EXPORT_SYMBOL(vfs_iter_write);
|
||||
|
||||
ssize_t vfs_readv(struct file *file, const struct iovec __user *vec,
|
||||
unsigned long vlen, loff_t *pos, int flags)
|
||||
unsigned long vlen, loff_t *pos, rwf_t flags)
|
||||
{
|
||||
struct iovec iovstack[UIO_FASTIOV];
|
||||
struct iovec *iov = iovstack;
|
||||
|
@ -962,7 +962,7 @@ ssize_t vfs_readv(struct file *file, const struct iovec __user *vec,
|
|||
EXPORT_SYMBOL(vfs_readv);
|
||||
|
||||
ssize_t vfs_writev(struct file *file, const struct iovec __user *vec,
|
||||
unsigned long vlen, loff_t *pos, int flags)
|
||||
unsigned long vlen, loff_t *pos, rwf_t flags)
|
||||
{
|
||||
struct iovec iovstack[UIO_FASTIOV];
|
||||
struct iovec *iov = iovstack;
|
||||
|
@ -981,7 +981,7 @@ ssize_t vfs_writev(struct file *file, const struct iovec __user *vec,
|
|||
EXPORT_SYMBOL(vfs_writev);
|
||||
|
||||
static ssize_t do_readv(unsigned long fd, const struct iovec __user *vec,
|
||||
unsigned long vlen, int flags)
|
||||
unsigned long vlen, rwf_t flags)
|
||||
{
|
||||
struct fd f = fdget_pos(fd);
|
||||
ssize_t ret = -EBADF;
|
||||
|
@ -1001,7 +1001,7 @@ static ssize_t do_readv(unsigned long fd, const struct iovec __user *vec,
|
|||
}
|
||||
|
||||
static ssize_t do_writev(unsigned long fd, const struct iovec __user *vec,
|
||||
unsigned long vlen, int flags)
|
||||
unsigned long vlen, rwf_t flags)
|
||||
{
|
||||
struct fd f = fdget_pos(fd);
|
||||
ssize_t ret = -EBADF;
|
||||
|
@ -1027,7 +1027,7 @@ static inline loff_t pos_from_hilo(unsigned long high, unsigned long low)
|
|||
}
|
||||
|
||||
static ssize_t do_preadv(unsigned long fd, const struct iovec __user *vec,
|
||||
unsigned long vlen, loff_t pos, int flags)
|
||||
unsigned long vlen, loff_t pos, rwf_t flags)
|
||||
{
|
||||
struct fd f;
|
||||
ssize_t ret = -EBADF;
|
||||
|
@ -1050,7 +1050,7 @@ static ssize_t do_preadv(unsigned long fd, const struct iovec __user *vec,
|
|||
}
|
||||
|
||||
static ssize_t do_pwritev(unsigned long fd, const struct iovec __user *vec,
|
||||
unsigned long vlen, loff_t pos, int flags)
|
||||
unsigned long vlen, loff_t pos, rwf_t flags)
|
||||
{
|
||||
struct fd f;
|
||||
ssize_t ret = -EBADF;
|
||||
|
@ -1094,7 +1094,7 @@ SYSCALL_DEFINE5(preadv, unsigned long, fd, const struct iovec __user *, vec,
|
|||
|
||||
SYSCALL_DEFINE6(preadv2, unsigned long, fd, const struct iovec __user *, vec,
|
||||
unsigned long, vlen, unsigned long, pos_l, unsigned long, pos_h,
|
||||
int, flags)
|
||||
rwf_t, flags)
|
||||
{
|
||||
loff_t pos = pos_from_hilo(pos_h, pos_l);
|
||||
|
||||
|
@ -1114,7 +1114,7 @@ SYSCALL_DEFINE5(pwritev, unsigned long, fd, const struct iovec __user *, vec,
|
|||
|
||||
SYSCALL_DEFINE6(pwritev2, unsigned long, fd, const struct iovec __user *, vec,
|
||||
unsigned long, vlen, unsigned long, pos_l, unsigned long, pos_h,
|
||||
int, flags)
|
||||
rwf_t, flags)
|
||||
{
|
||||
loff_t pos = pos_from_hilo(pos_h, pos_l);
|
||||
|
||||
|
@ -1127,7 +1127,7 @@ SYSCALL_DEFINE6(pwritev2, unsigned long, fd, const struct iovec __user *, vec,
|
|||
#ifdef CONFIG_COMPAT
|
||||
static size_t compat_readv(struct file *file,
|
||||
const struct compat_iovec __user *vec,
|
||||
unsigned long vlen, loff_t *pos, int flags)
|
||||
unsigned long vlen, loff_t *pos, rwf_t flags)
|
||||
{
|
||||
struct iovec iovstack[UIO_FASTIOV];
|
||||
struct iovec *iov = iovstack;
|
||||
|
@ -1147,7 +1147,7 @@ static size_t compat_readv(struct file *file,
|
|||
|
||||
static size_t do_compat_readv(compat_ulong_t fd,
|
||||
const struct compat_iovec __user *vec,
|
||||
compat_ulong_t vlen, int flags)
|
||||
compat_ulong_t vlen, rwf_t flags)
|
||||
{
|
||||
struct fd f = fdget_pos(fd);
|
||||
ssize_t ret;
|
||||
|
@ -1173,7 +1173,7 @@ COMPAT_SYSCALL_DEFINE3(readv, compat_ulong_t, fd,
|
|||
|
||||
static long do_compat_preadv64(unsigned long fd,
|
||||
const struct compat_iovec __user *vec,
|
||||
unsigned long vlen, loff_t pos, int flags)
|
||||
unsigned long vlen, loff_t pos, rwf_t flags)
|
||||
{
|
||||
struct fd f;
|
||||
ssize_t ret;
|
||||
|
@ -1211,7 +1211,7 @@ COMPAT_SYSCALL_DEFINE5(preadv, compat_ulong_t, fd,
|
|||
#ifdef __ARCH_WANT_COMPAT_SYS_PREADV64V2
|
||||
COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd,
|
||||
const struct compat_iovec __user *,vec,
|
||||
unsigned long, vlen, loff_t, pos, int, flags)
|
||||
unsigned long, vlen, loff_t, pos, rwf_t, flags)
|
||||
{
|
||||
return do_compat_preadv64(fd, vec, vlen, pos, flags);
|
||||
}
|
||||
|
@ -1220,7 +1220,7 @@ COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd,
|
|||
COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd,
|
||||
const struct compat_iovec __user *,vec,
|
||||
compat_ulong_t, vlen, u32, pos_low, u32, pos_high,
|
||||
int, flags)
|
||||
rwf_t, flags)
|
||||
{
|
||||
loff_t pos = ((loff_t)pos_high << 32) | pos_low;
|
||||
|
||||
|
@ -1232,7 +1232,7 @@ COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd,
|
|||
|
||||
static size_t compat_writev(struct file *file,
|
||||
const struct compat_iovec __user *vec,
|
||||
unsigned long vlen, loff_t *pos, int flags)
|
||||
unsigned long vlen, loff_t *pos, rwf_t flags)
|
||||
{
|
||||
struct iovec iovstack[UIO_FASTIOV];
|
||||
struct iovec *iov = iovstack;
|
||||
|
@ -1254,7 +1254,7 @@ static size_t compat_writev(struct file *file,
|
|||
|
||||
static size_t do_compat_writev(compat_ulong_t fd,
|
||||
const struct compat_iovec __user* vec,
|
||||
compat_ulong_t vlen, int flags)
|
||||
compat_ulong_t vlen, rwf_t flags)
|
||||
{
|
||||
struct fd f = fdget_pos(fd);
|
||||
ssize_t ret;
|
||||
|
@ -1279,7 +1279,7 @@ COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd,
|
|||
|
||||
static long do_compat_pwritev64(unsigned long fd,
|
||||
const struct compat_iovec __user *vec,
|
||||
unsigned long vlen, loff_t pos, int flags)
|
||||
unsigned long vlen, loff_t pos, rwf_t flags)
|
||||
{
|
||||
struct fd f;
|
||||
ssize_t ret;
|
||||
|
@ -1317,7 +1317,7 @@ COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd,
|
|||
#ifdef __ARCH_WANT_COMPAT_SYS_PWRITEV64V2
|
||||
COMPAT_SYSCALL_DEFINE5(pwritev64v2, unsigned long, fd,
|
||||
const struct compat_iovec __user *,vec,
|
||||
unsigned long, vlen, loff_t, pos, int, flags)
|
||||
unsigned long, vlen, loff_t, pos, rwf_t, flags)
|
||||
{
|
||||
return do_compat_pwritev64(fd, vec, vlen, pos, flags);
|
||||
}
|
||||
|
@ -1325,7 +1325,7 @@ COMPAT_SYSCALL_DEFINE5(pwritev64v2, unsigned long, fd,
|
|||
|
||||
COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd,
|
||||
const struct compat_iovec __user *,vec,
|
||||
compat_ulong_t, vlen, u32, pos_low, u32, pos_high, int, flags)
|
||||
compat_ulong_t, vlen, u32, pos_low, u32, pos_high, rwf_t, flags)
|
||||
{
|
||||
loff_t pos = ((loff_t)pos_high << 32) | pos_low;
|
||||
|
||||
|
|
|
@ -365,10 +365,10 @@ asmlinkage ssize_t compat_sys_pwritev(compat_ulong_t fd,
|
|||
compat_ulong_t vlen, u32 pos_low, u32 pos_high);
|
||||
asmlinkage ssize_t compat_sys_preadv2(compat_ulong_t fd,
|
||||
const struct compat_iovec __user *vec,
|
||||
compat_ulong_t vlen, u32 pos_low, u32 pos_high, int flags);
|
||||
compat_ulong_t vlen, u32 pos_low, u32 pos_high, rwf_t flags);
|
||||
asmlinkage ssize_t compat_sys_pwritev2(compat_ulong_t fd,
|
||||
const struct compat_iovec __user *vec,
|
||||
compat_ulong_t vlen, u32 pos_low, u32 pos_high, int flags);
|
||||
compat_ulong_t vlen, u32 pos_low, u32 pos_high, rwf_t flags);
|
||||
|
||||
#ifdef __ARCH_WANT_COMPAT_SYS_PREADV64
|
||||
asmlinkage long compat_sys_preadv64(unsigned long fd,
|
||||
|
@ -382,6 +382,18 @@ asmlinkage long compat_sys_pwritev64(unsigned long fd,
|
|||
unsigned long vlen, loff_t pos);
|
||||
#endif
|
||||
|
||||
#ifdef __ARCH_WANT_COMPAT_SYS_PREADV64V2
|
||||
asmlinkage long compat_sys_readv64v2(unsigned long fd,
|
||||
const struct compat_iovec __user *vec,
|
||||
unsigned long vlen, loff_t pos, rwf_t flags);
|
||||
#endif
|
||||
|
||||
#ifdef __ARCH_WANT_COMPAT_SYS_PWRITEV64V2
|
||||
asmlinkage long compat_sys_pwritev64v2(unsigned long fd,
|
||||
const struct compat_iovec __user *vec,
|
||||
unsigned long vlen, loff_t pos, rwf_t flags);
|
||||
#endif
|
||||
|
||||
asmlinkage long compat_sys_lseek(unsigned int, compat_off_t, unsigned int);
|
||||
|
||||
asmlinkage long compat_sys_execve(const char __user *filename, const compat_uptr_t __user *argv,
|
||||
|
|
|
@ -72,6 +72,8 @@ extern int leases_enable, lease_break_time;
|
|||
extern int sysctl_protected_symlinks;
|
||||
extern int sysctl_protected_hardlinks;
|
||||
|
||||
typedef __kernel_rwf_t rwf_t;
|
||||
|
||||
struct buffer_head;
|
||||
typedef int (get_block_t)(struct inode *inode, sector_t iblock,
|
||||
struct buffer_head *bh_result, int create);
|
||||
|
@ -1758,9 +1760,9 @@ extern ssize_t __vfs_write(struct file *, const char __user *, size_t, loff_t *)
|
|||
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 *, int);
|
||||
unsigned long, loff_t *, rwf_t);
|
||||
extern ssize_t vfs_writev(struct file *, const struct iovec __user *,
|
||||
unsigned long, loff_t *, int);
|
||||
unsigned long, loff_t *, rwf_t);
|
||||
extern ssize_t vfs_copy_file_range(struct file *, loff_t , struct file *,
|
||||
loff_t, size_t, unsigned int);
|
||||
extern int vfs_clone_file_prep_inodes(struct inode *inode_in, loff_t pos_in,
|
||||
|
@ -2874,9 +2876,9 @@ extern ssize_t generic_file_direct_write(struct kiocb *, struct iov_iter *);
|
|||
extern ssize_t generic_perform_write(struct file *, struct iov_iter *, loff_t);
|
||||
|
||||
ssize_t vfs_iter_read(struct file *file, struct iov_iter *iter, loff_t *ppos,
|
||||
int flags);
|
||||
rwf_t flags);
|
||||
ssize_t vfs_iter_write(struct file *file, struct iov_iter *iter, loff_t *ppos,
|
||||
int flags);
|
||||
rwf_t flags);
|
||||
|
||||
/* fs/block_dev.c */
|
||||
extern ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to);
|
||||
|
@ -3143,7 +3145,7 @@ static inline int iocb_flags(struct file *file)
|
|||
return res;
|
||||
}
|
||||
|
||||
static inline int kiocb_set_rw_flags(struct kiocb *ki, int flags)
|
||||
static inline int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags)
|
||||
{
|
||||
if (unlikely(flags & ~RWF_SUPPORTED))
|
||||
return -EOPNOTSUPP;
|
||||
|
|
|
@ -579,12 +579,12 @@ asmlinkage long sys_preadv(unsigned long fd, const struct iovec __user *vec,
|
|||
unsigned long vlen, unsigned long pos_l, unsigned long pos_h);
|
||||
asmlinkage long sys_preadv2(unsigned long fd, const struct iovec __user *vec,
|
||||
unsigned long vlen, unsigned long pos_l, unsigned long pos_h,
|
||||
int flags);
|
||||
rwf_t flags);
|
||||
asmlinkage long sys_pwritev(unsigned long fd, const struct iovec __user *vec,
|
||||
unsigned long vlen, unsigned long pos_l, unsigned long pos_h);
|
||||
asmlinkage long sys_pwritev2(unsigned long fd, const struct iovec __user *vec,
|
||||
unsigned long vlen, unsigned long pos_l, unsigned long pos_h,
|
||||
int flags);
|
||||
rwf_t flags);
|
||||
asmlinkage long sys_getcwd(char __user *buf, unsigned long size);
|
||||
asmlinkage long sys_mkdir(const char __user *pathname, umode_t mode);
|
||||
asmlinkage long sys_chdir(const char __user *filename);
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#define __LINUX__AIO_ABI_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/fs.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
typedef __kernel_ulong_t aio_context_t;
|
||||
|
@ -62,14 +63,6 @@ struct io_event {
|
|||
__s64 res2; /* secondary result */
|
||||
};
|
||||
|
||||
#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
|
||||
#define PADDED(x,y) x, y
|
||||
#elif defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
|
||||
#define PADDED(x,y) y, x
|
||||
#else
|
||||
#error edit for your odd byteorder.
|
||||
#endif
|
||||
|
||||
/*
|
||||
* we always use a 64bit off_t when communicating
|
||||
* with userland. its up to libraries to do the
|
||||
|
@ -79,8 +72,16 @@ struct io_event {
|
|||
struct iocb {
|
||||
/* these are internal to the kernel/libc. */
|
||||
__u64 aio_data; /* data to be returned in event's data */
|
||||
__u32 PADDED(aio_key, aio_rw_flags);
|
||||
/* the kernel sets aio_key to the req # */
|
||||
|
||||
#if defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
|
||||
__u32 aio_key; /* the kernel sets aio_key to the req # */
|
||||
__kernel_rwf_t aio_rw_flags; /* RWF_* flags */
|
||||
#elif defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
|
||||
__kernel_rwf_t aio_rw_flags; /* RWF_* flags */
|
||||
__u32 aio_key; /* the kernel sets aio_key to the req # */
|
||||
#else
|
||||
#error edit for your odd byteorder.
|
||||
#endif
|
||||
|
||||
/* common fields */
|
||||
__u16 aio_lio_opcode; /* see IOCB_CMD_ above */
|
||||
|
|
|
@ -358,13 +358,25 @@ struct fscrypt_key {
|
|||
#define SYNC_FILE_RANGE_WRITE 2
|
||||
#define SYNC_FILE_RANGE_WAIT_AFTER 4
|
||||
|
||||
/* flags for preadv2/pwritev2: */
|
||||
#define RWF_HIPRI 0x00000001 /* high priority request, poll if possible */
|
||||
#define RWF_DSYNC 0x00000002 /* per-IO O_DSYNC */
|
||||
#define RWF_SYNC 0x00000004 /* per-IO O_SYNC */
|
||||
#define RWF_NOWAIT 0x00000008 /* per-IO, return -EAGAIN if operation would block */
|
||||
/*
|
||||
* Flags for preadv2/pwritev2:
|
||||
*/
|
||||
|
||||
#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC |\
|
||||
RWF_NOWAIT)
|
||||
typedef int __bitwise __kernel_rwf_t;
|
||||
|
||||
/* high priority request, poll if possible */
|
||||
#define RWF_HIPRI ((__force __kernel_rwf_t)0x00000001)
|
||||
|
||||
/* per-IO O_DSYNC */
|
||||
#define RWF_DSYNC ((__force __kernel_rwf_t)0x00000002)
|
||||
|
||||
/* per-IO O_SYNC */
|
||||
#define RWF_SYNC ((__force __kernel_rwf_t)0x00000004)
|
||||
|
||||
/* per-IO, return -EAGAIN if operation would block */
|
||||
#define RWF_NOWAIT ((__force __kernel_rwf_t)0x00000008)
|
||||
|
||||
/* mask of flags supported by the kernel */
|
||||
#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT)
|
||||
|
||||
#endif /* _UAPI_LINUX_FS_H */
|
||||
|
|
Loading…
Reference in New Issue