cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

checksum_wrappers.c (813B)


      1// SPDX-License-Identifier: GPL-2.0-or-later
      2/*
      3 *
      4 * Copyright (C) IBM Corporation, 2010
      5 *
      6 * Author: Anton Blanchard <anton@au.ibm.com>
      7 */
      8#include <linux/export.h>
      9#include <linux/compiler.h>
     10#include <linux/types.h>
     11#include <asm/checksum.h>
     12#include <linux/uaccess.h>
     13
     14__wsum csum_and_copy_from_user(const void __user *src, void *dst,
     15			       int len)
     16{
     17	__wsum csum;
     18
     19	if (unlikely(!user_read_access_begin(src, len)))
     20		return 0;
     21
     22	csum = csum_partial_copy_generic((void __force *)src, dst, len);
     23
     24	user_read_access_end();
     25	return csum;
     26}
     27
     28__wsum csum_and_copy_to_user(const void *src, void __user *dst, int len)
     29{
     30	__wsum csum;
     31
     32	if (unlikely(!user_write_access_begin(dst, len)))
     33		return 0;
     34
     35	csum = csum_partial_copy_generic(src, (void __force *)dst, len);
     36
     37	user_write_access_end();
     38	return csum;
     39}