You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull more misc uaccess and vfs updates from Al Viro:
"The rest of the stuff from -next (more uaccess work) + assorted fixes"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
score: traps: Add missing include file to fix build error
fs/super.c: don't fool lockdep in freeze_super() and thaw_super() paths
fs/super.c: fix race between freeze_super() and thaw_super()
overlayfs: Fix setting IOP_XATTR flag
iov_iter: kernel-doc import_iovec() and rw_copy_check_uvector()
blackfin: no access_ok() for __copy_{to,from}_user()
arm64: don't zero in __copy_from_user{,_inatomic}
arm: don't zero in __copy_from_user_inatomic()/__copy_from_user()
arc: don't leak bits of kernel stack into coredump
alpha: get rid of tail-zeroing in __copy_user()
This commit is contained in:
@@ -1139,6 +1139,28 @@ const void *dup_iter(struct iov_iter *new, struct iov_iter *old, gfp_t flags)
|
||||
}
|
||||
EXPORT_SYMBOL(dup_iter);
|
||||
|
||||
/**
|
||||
* import_iovec() - Copy an array of &struct iovec from userspace
|
||||
* into the kernel, check that it is valid, and initialize a new
|
||||
* &struct iov_iter iterator to access it.
|
||||
*
|
||||
* @type: One of %READ or %WRITE.
|
||||
* @uvector: Pointer to the userspace array.
|
||||
* @nr_segs: Number of elements in userspace array.
|
||||
* @fast_segs: Number of elements in @iov.
|
||||
* @iov: (input and output parameter) Pointer to pointer to (usually small
|
||||
* on-stack) kernel array.
|
||||
* @i: Pointer to iterator that will be initialized on success.
|
||||
*
|
||||
* If the array pointed to by *@iov is large enough to hold all @nr_segs,
|
||||
* then this function places %NULL in *@iov on return. Otherwise, a new
|
||||
* array will be allocated and the result placed in *@iov. This means that
|
||||
* the caller may call kfree() on *@iov regardless of whether the small
|
||||
* on-stack array was used or not (and regardless of whether this function
|
||||
* returns an error or not).
|
||||
*
|
||||
* Return: 0 on success or negative error code on error.
|
||||
*/
|
||||
int import_iovec(int type, const struct iovec __user * uvector,
|
||||
unsigned nr_segs, unsigned fast_segs,
|
||||
struct iovec **iov, struct iov_iter *i)
|
||||
|
||||
Reference in New Issue
Block a user