xref: /aosp_15_r20/external/strace/fetch_struct_keyctl_kdf_params.c (revision cf84ac9a129d8ea9952db616b4e9b904c4bdde56)
1*cf84ac9aSAndroid Build Coastguard Worker #include "defs.h"
2*cf84ac9aSAndroid Build Coastguard Worker 
3*cf84ac9aSAndroid Build Coastguard Worker #include DEF_MPERS_TYPE(struct_keyctl_kdf_params)
4*cf84ac9aSAndroid Build Coastguard Worker 
5*cf84ac9aSAndroid Build Coastguard Worker #include "keyctl_kdf_params.h"
6*cf84ac9aSAndroid Build Coastguard Worker typedef struct keyctl_kdf_params struct_keyctl_kdf_params;
7*cf84ac9aSAndroid Build Coastguard Worker 
8*cf84ac9aSAndroid Build Coastguard Worker #include MPERS_DEFS
9*cf84ac9aSAndroid Build Coastguard Worker 
MPERS_PRINTER_DECL(int,fetch_keyctl_kdf_params,struct tcb * const tcp,kernel_ulong_t addr,struct strace_keyctl_kdf_params * p)10*cf84ac9aSAndroid Build Coastguard Worker MPERS_PRINTER_DECL(int, fetch_keyctl_kdf_params, struct tcb *const tcp,
11*cf84ac9aSAndroid Build Coastguard Worker 		   kernel_ulong_t addr, struct strace_keyctl_kdf_params *p)
12*cf84ac9aSAndroid Build Coastguard Worker {
13*cf84ac9aSAndroid Build Coastguard Worker 	struct_keyctl_kdf_params kdf;
14*cf84ac9aSAndroid Build Coastguard Worker 	int ret;
15*cf84ac9aSAndroid Build Coastguard Worker 
16*cf84ac9aSAndroid Build Coastguard Worker 	if ((ret = umove(tcp, addr, &kdf)))
17*cf84ac9aSAndroid Build Coastguard Worker 		return ret;
18*cf84ac9aSAndroid Build Coastguard Worker 
19*cf84ac9aSAndroid Build Coastguard Worker 	p->hashname = (kernel_ulong_t)
20*cf84ac9aSAndroid Build Coastguard Worker #ifndef IN_MPERS
21*cf84ac9aSAndroid Build Coastguard Worker 		(uintptr_t)
22*cf84ac9aSAndroid Build Coastguard Worker #endif
23*cf84ac9aSAndroid Build Coastguard Worker 		kdf.hashname;
24*cf84ac9aSAndroid Build Coastguard Worker 	p->otherinfo = (kernel_ulong_t)
25*cf84ac9aSAndroid Build Coastguard Worker #ifndef IN_MPERS
26*cf84ac9aSAndroid Build Coastguard Worker 		(uintptr_t)
27*cf84ac9aSAndroid Build Coastguard Worker #endif
28*cf84ac9aSAndroid Build Coastguard Worker 		kdf.otherinfo;
29*cf84ac9aSAndroid Build Coastguard Worker 	p->otherinfolen = kdf.otherinfolen;
30*cf84ac9aSAndroid Build Coastguard Worker 
31*cf84ac9aSAndroid Build Coastguard Worker 	memcpy(p->__spare, kdf.__spare, sizeof(kdf.__spare));
32*cf84ac9aSAndroid Build Coastguard Worker 
33*cf84ac9aSAndroid Build Coastguard Worker 	return 0;
34*cf84ac9aSAndroid Build Coastguard Worker }
35