Lines Matching +full:data +full:- +full:shift
1 // SPDX-License-Identifier: GPL-2.0-only
2 // Copyright (C) 2019-2020 Arm Ltd.
5 #include <linux/kasan-checks.h>
10 static u64 accumulate(u64 sum, u64 data) in accumulate() argument
12 sum += data; in accumulate()
13 if (sum < data) in accumulate()
19 * We over-read the buffer and this makes KASAN unhappy. Instead, disable
24 unsigned int offset, shift, sum; in do_csum() local
26 u64 data, sum64 = 0; in do_csum() local
35 * should absolutely not be pointing to anything read-sensitive. We do, in do_csum()
38 * compensate with an explicit check up-front. in do_csum()
41 ptr = (u64 *)(buff - offset); in do_csum()
42 len = len + offset - 8; in do_csum()
49 shift = offset * 8; in do_csum()
50 data = *ptr++; in do_csum()
51 data = (data >> shift) << shift; in do_csum()
67 len -= 64; in do_csum()
88 sum64 = accumulate(sum64, data); in do_csum()
91 len -= 16; in do_csum()
94 data = tmp >> 64; in do_csum()
98 sum64 = accumulate(sum64, data); in do_csum()
99 data = *ptr; in do_csum()
100 len -= 8; in do_csum()
103 * Tail: zero any over-read bytes similarly to the head, again in do_csum()
106 shift = len * -8; in do_csum()
107 data = (data << shift) >> shift; in do_csum()
108 sum64 = accumulate(sum64, data); in do_csum()
127 src = *(const __uint128_t *)saddr->s6_addr; in csum_ipv6_magic()
128 dst = *(const __uint128_t *)daddr->s6_addr; in csum_ipv6_magic()