/* See the end of this file for copyright, license, and warranty information. */ #include #include #include #include #include #include #include long sys_read(int fd, __user void *buf, size_t len) { long ret; void *copy; struct file *f = file_get(fd); if (f == NULL) return -EBADF; copy = kmalloc(len); if (copy == NULL) return -ENOMEM; ret = file_read(copy, f, len); if (ret >= 0) ret = copy_to_user(buf, copy, ret); kfree(copy); file_put(f); return ret; } /* * This file is part of Ardix. * Copyright (c) 2020, 2021 Felix Kopp . * * Ardix is non-violent software: you may only use, redistribute, * and/or modify it under the terms of the CNPLv6+ as found in * the LICENSE file in the source code root directory or at * . * * Ardix comes with ABSOLUTELY NO WARRANTY, to the extent * permitted by applicable law. See the CNPLv6+ for details. */