vm_userfaultfd_ctx
VM_WARN_ON_ONCE(!!cur->vm_userfaultfd_ctx.ctx ^
if (cur->vm_userfaultfd_ctx.ctx &&
cur->vm_userfaultfd_ctx.ctx != ctx)
VM_WARN_ON_ONCE(!!cur->vm_userfaultfd_ctx.ctx ^
if (cur->vm_userfaultfd_ctx.ctx &&
cur->vm_userfaultfd_ctx.ctx != ctx)
if (!vma->vm_userfaultfd_ctx.ctx)
VM_WARN_ON_ONCE(vma->vm_userfaultfd_ctx.ctx != ctx);
wake_userfault(vma->vm_userfaultfd_ctx.ctx, &range);
return userfaultfd_wp_async_ctx(vma->vm_userfaultfd_ctx.ctx);
ctx = vma->vm_userfaultfd_ctx.ctx;
octx = vma->vm_userfaultfd_ctx.ctx;
vma->vm_userfaultfd_ctx.ctx = ctx;
struct vm_userfaultfd_ctx *vm_ctx)
ctx = vma->vm_userfaultfd_ctx.ctx;
void mremap_userfaultfd_complete(struct vm_userfaultfd_ctx *vm_ctx,
void mremap_userfaultfd_fail(struct vm_userfaultfd_ctx *vm_ctx)
ctx = vma->vm_userfaultfd_ctx.ctx;
struct userfaultfd_ctx *ctx = vma->vm_userfaultfd_ctx.ctx;
struct userfaultfd_ctx *ctx = vma->vm_userfaultfd_ctx.ctx;
struct vm_userfaultfd_ctx vm_userfaultfd_ctx;
#define NULL_VM_UFFD_CTX ((struct vm_userfaultfd_ctx) { NULL, })
#define NULL_VM_UFFD_CTX ((struct vm_userfaultfd_ctx) {})
struct vm_userfaultfd_ctx vm_ctx)
return vma->vm_userfaultfd_ctx.ctx == vm_ctx.ctx;
struct userfaultfd_ctx *uffd_ctx = vma->vm_userfaultfd_ctx.ctx;
struct vm_userfaultfd_ctx *);
extern void mremap_userfaultfd_complete(struct vm_userfaultfd_ctx *,
void mremap_userfaultfd_fail(struct vm_userfaultfd_ctx *);
struct vm_userfaultfd_ctx vm_ctx)
struct vm_userfaultfd_ctx *ctx)
static inline void mremap_userfaultfd_complete(struct vm_userfaultfd_ctx *ctx,
static inline void mremap_userfaultfd_fail(struct vm_userfaultfd_ctx *ctx)
struct vm_userfaultfd_ctx uf = NULL_VM_UFFD_CTX;
struct vm_userfaultfd_ctx *uf;
if (!dst_vma->vm_userfaultfd_ctx.ctx ||
dst_vma->vm_userfaultfd_ctx.ctx != ctx)
vma->vm_userfaultfd_ctx = (struct vm_userfaultfd_ctx){ctx};
VM_WARN_ON_ONCE(vma->vm_userfaultfd_ctx.ctx &&
vma->vm_userfaultfd_ctx.ctx != ctx);
if (vma->vm_userfaultfd_ctx.ctx == ctx &&
(struct vm_userfaultfd_ctx){ctx},
if (vma->vm_userfaultfd_ctx.ctx == ctx)
VM_WARN_ON_ONCE(!!vma->vm_userfaultfd_ctx.ctx ^
if (vma->vm_userfaultfd_ctx.ctx != ctx) {
if (!dst_vma->vm_userfaultfd_ctx.ctx)
const vma_flags_t *vma_flags, struct vm_userfaultfd_ctx new_ctx,
struct vm_userfaultfd_ctx uffd_ctx;
.uffd_ctx = vma_->vm_userfaultfd_ctx, \
struct vm_userfaultfd_ctx new_ctx, bool give_up_on_oom);
memcpy(&dest->vm_userfaultfd_ctx, &src->vm_userfaultfd_ctx,
sizeof(dest->vm_userfaultfd_ctx));
struct vm_userfaultfd_ctx vm_userfaultfd_ctx;
struct vm_userfaultfd_ctx vm_ctx)