]> Git Repo - linux.git/blob - tools/testing/selftests/bpf/progs/crypto_basic.c
Linux 6.14-rc3
[linux.git] / tools / testing / selftests / bpf / progs / crypto_basic.c
1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (c) 2023 Meta Platforms, Inc. and affiliates. */
3
4 #include "vmlinux.h"
5 #include <bpf/bpf_helpers.h>
6 #include <bpf/bpf_tracing.h>
7 #include "bpf_misc.h"
8 #include "bpf_kfuncs.h"
9 #include "crypto_common.h"
10
11 int status;
12 SEC("syscall")
13 int crypto_release(void *ctx)
14 {
15         struct bpf_crypto_params params = {
16                 .type = "skcipher",
17                 .algo = "ecb(aes)",
18                 .key_len = 16,
19         };
20
21         struct bpf_crypto_ctx *cctx;
22         int err = 0;
23
24         status = 0;
25
26         cctx = bpf_crypto_ctx_create(&params, sizeof(params), &err);
27
28         if (!cctx) {
29                 status = err;
30                 return 0;
31         }
32
33         bpf_crypto_ctx_release(cctx);
34
35         return 0;
36 }
37
38 SEC("syscall")
39 __failure __msg("Unreleased reference")
40 int crypto_acquire(void *ctx)
41 {
42         struct bpf_crypto_params params = {
43                 .type = "skcipher",
44                 .algo = "ecb(aes)",
45                 .key_len = 16,
46         };
47         struct bpf_crypto_ctx *cctx;
48         int err = 0;
49
50         status = 0;
51
52         cctx = bpf_crypto_ctx_create(&params, sizeof(params), &err);
53
54         if (!cctx) {
55                 status = err;
56                 return 0;
57         }
58
59         cctx = bpf_crypto_ctx_acquire(cctx);
60         if (!cctx)
61                 return -EINVAL;
62
63         bpf_crypto_ctx_release(cctx);
64
65         return 0;
66 }
67
68 char __license[] SEC("license") = "GPL";
This page took 0.034604 seconds and 4 git commands to generate.