mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
891 B
41 lines
891 B
// SPDX-License-Identifier: GPL-2.0-or-later |
|
/* |
|
* |
|
* Copyright (C) IBM Corporation, 2010 |
|
* |
|
* Author: Anton Blanchard <[email protected]> |
|
*/ |
|
#include <linux/export.h> |
|
#include <linux/compiler.h> |
|
#include <linux/types.h> |
|
#include <asm/checksum.h> |
|
#include <linux/uaccess.h> |
|
|
|
__wsum csum_and_copy_from_user(const void __user *src, void *dst, |
|
int len) |
|
{ |
|
__wsum csum; |
|
|
|
if (unlikely(!user_read_access_begin(src, len))) |
|
return 0; |
|
|
|
csum = csum_partial_copy_generic((void __force *)src, dst, len); |
|
|
|
user_read_access_end(); |
|
return csum; |
|
} |
|
EXPORT_SYMBOL(csum_and_copy_from_user); |
|
|
|
__wsum csum_and_copy_to_user(const void *src, void __user *dst, int len) |
|
{ |
|
__wsum csum; |
|
|
|
if (unlikely(!user_write_access_begin(dst, len))) |
|
return 0; |
|
|
|
csum = csum_partial_copy_generic(src, (void __force *)dst, len); |
|
|
|
user_write_access_end(); |
|
return csum; |
|
} |
|
EXPORT_SYMBOL(csum_and_copy_to_user);
|
|
|