177c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes#include "defs.h"
277c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes
377c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes#include DEF_MPERS_TYPE(struct_keyctl_kdf_params)
477c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes
577c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes#include "keyctl_kdf_params.h"
677c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughestypedef struct keyctl_kdf_params struct_keyctl_kdf_params;
777c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes
877c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes#include MPERS_DEFS
977c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes
1077c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott HughesMPERS_PRINTER_DECL(int, fetch_keyctl_kdf_params, struct tcb *const tcp,
1177c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes		   kernel_ulong_t addr, struct strace_keyctl_kdf_params *p)
1277c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes{
1377c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes	struct_keyctl_kdf_params kdf;
1477c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes	int ret;
1577c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes
1677c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes	if ((ret = umove(tcp, addr, &kdf)))
1777c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes		return ret;
1877c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes
1977c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes	p->hashname = (kernel_ulong_t)
2077c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes#ifndef IN_MPERS
2177c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes		(uintptr_t)
2277c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes#endif
2377c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes		kdf.hashname;
2477c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes	p->otherinfo = (kernel_ulong_t)
2577c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes#ifndef IN_MPERS
2677c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes		(uintptr_t)
2777c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes#endif
2877c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes		kdf.otherinfo;
2977c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes	p->otherinfolen = kdf.otherinfolen;
3077c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes
3177c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes	memcpy(p->__spare, kdf.__spare, sizeof(kdf.__spare));
3277c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes
3377c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes	return 0;
3477c3ff8e0644f1e120e4b2ebc7222150b0446f3bElliott Hughes}
35