File: memzero_explicit.c

package info (click to toggle)
optee-os 4.7.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 31,560 kB
  • sloc: ansic: 441,914; asm: 12,903; python: 3,719; makefile: 1,676; sh: 238
file content (23 lines) | stat: -rw-r--r-- 613 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// SPDX-License-Identifier: BSD-2-Clause
/*
 * Copyright (C) 2019 Linaro Limited
 */

#include <string.h>
#include <string_ext.h>

/*
 * This method prevents dead store elimination, which could happen in case
 * link-time optimization (LTO) is used.
 * See "Dead Store Elimination (Still) Considered Harmful" [1] section 3.3.3.
 *
 * [1]
 * http://www.usenix.org/system/files/conference/usenixsecurity17/sec17-yang.pdf
 */
static volatile void * (*memset_func)(void *, int, size_t) =
	(volatile void * (*)(void *, int, size_t))&memset;

void memzero_explicit(void *s, size_t count)
{
	memset_func(s, 0, count);
}