read_write.c (3ce4a7bf66263748194b77ccefd284be963c6304) | read_write.c (36028d5dd71175c332ab634e089e16dbdfe3812b) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * linux/fs/read_write.c 4 * 5 * Copyright (C) 1991, 1992 Linus Torvalds 6 */ 7 8#include <linux/slab.h> --- 596 unchanged lines hidden (view full) --- 605} 606 607SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf, 608 size_t, count) 609{ 610 return ksys_write(fd, buf, count); 611} 612 | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * linux/fs/read_write.c 4 * 5 * Copyright (C) 1991, 1992 Linus Torvalds 6 */ 7 8#include <linux/slab.h> --- 596 unchanged lines hidden (view full) --- 605} 606 607SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf, 608 size_t, count) 609{ 610 return ksys_write(fd, buf, count); 611} 612 |
613SYSCALL_DEFINE4(pread64, unsigned int, fd, char __user *, buf, 614 size_t, count, loff_t, pos) | 613ssize_t ksys_pread64(unsigned int fd, char __user *buf, size_t count, 614 loff_t pos) |
615{ 616 struct fd f; 617 ssize_t ret = -EBADF; 618 619 if (pos < 0) 620 return -EINVAL; 621 622 f = fdget(fd); 623 if (f.file) { 624 ret = -ESPIPE; 625 if (f.file->f_mode & FMODE_PREAD) 626 ret = vfs_read(f.file, buf, count, &pos); 627 fdput(f); 628 } 629 630 return ret; 631} 632 | 615{ 616 struct fd f; 617 ssize_t ret = -EBADF; 618 619 if (pos < 0) 620 return -EINVAL; 621 622 f = fdget(fd); 623 if (f.file) { 624 ret = -ESPIPE; 625 if (f.file->f_mode & FMODE_PREAD) 626 ret = vfs_read(f.file, buf, count, &pos); 627 fdput(f); 628 } 629 630 return ret; 631} 632 |
633SYSCALL_DEFINE4(pwrite64, unsigned int, fd, const char __user *, buf, 634 size_t, count, loff_t, pos) | 633SYSCALL_DEFINE4(pread64, unsigned int, fd, char __user *, buf, 634 size_t, count, loff_t, pos) |
635{ | 635{ |
636 return ksys_pread64(fd, buf, count, pos); 637} 638 639ssize_t ksys_pwrite64(unsigned int fd, const char __user *buf, 640 size_t count, loff_t pos) 641{ |
|
636 struct fd f; 637 ssize_t ret = -EBADF; 638 639 if (pos < 0) 640 return -EINVAL; 641 642 f = fdget(fd); 643 if (f.file) { 644 ret = -ESPIPE; 645 if (f.file->f_mode & FMODE_PWRITE) 646 ret = vfs_write(f.file, buf, count, &pos); 647 fdput(f); 648 } 649 650 return ret; 651} 652 | 642 struct fd f; 643 ssize_t ret = -EBADF; 644 645 if (pos < 0) 646 return -EINVAL; 647 648 f = fdget(fd); 649 if (f.file) { 650 ret = -ESPIPE; 651 if (f.file->f_mode & FMODE_PWRITE) 652 ret = vfs_write(f.file, buf, count, &pos); 653 fdput(f); 654 } 655 656 return ret; 657} 658 |
659SYSCALL_DEFINE4(pwrite64, unsigned int, fd, const char __user *, buf, 660 size_t, count, loff_t, pos) 661{ 662 return ksys_pwrite64(fd, buf, count, pos); 663} 664 |
|
653static ssize_t do_iter_readv_writev(struct file *filp, struct iov_iter *iter, 654 loff_t *ppos, int type, rwf_t flags) 655{ 656 struct kiocb kiocb; 657 ssize_t ret; 658 659 init_sync_kiocb(&kiocb, filp); 660 ret = kiocb_set_rw_flags(&kiocb, flags); --- 1399 unchanged lines hidden --- | 665static ssize_t do_iter_readv_writev(struct file *filp, struct iov_iter *iter, 666 loff_t *ppos, int type, rwf_t flags) 667{ 668 struct kiocb kiocb; 669 ssize_t ret; 670 671 init_sync_kiocb(&kiocb, filp); 672 ret = kiocb_set_rw_flags(&kiocb, flags); --- 1399 unchanged lines hidden --- |