Lines Matching refs:ctx
61 static inline int selinux_authorizable_ctx(struct xfrm_sec_ctx *ctx) in selinux_authorizable_ctx() argument
63 return (ctx && in selinux_authorizable_ctx()
64 (ctx->ctx_doi == XFRM_SC_DOI_LSM) && in selinux_authorizable_ctx()
65 (ctx->ctx_alg == XFRM_SC_ALG_SELINUX)); in selinux_authorizable_ctx()
86 struct xfrm_sec_ctx *ctx = NULL; in selinux_xfrm_alloc_user() local
98 ctx = kmalloc(sizeof(*ctx) + str_len + 1, gfp); in selinux_xfrm_alloc_user()
99 if (!ctx) in selinux_xfrm_alloc_user()
102 ctx->ctx_doi = XFRM_SC_DOI_LSM; in selinux_xfrm_alloc_user()
103 ctx->ctx_alg = XFRM_SC_ALG_SELINUX; in selinux_xfrm_alloc_user()
104 ctx->ctx_len = str_len; in selinux_xfrm_alloc_user()
105 memcpy(ctx->ctx_str, &uctx[1], str_len); in selinux_xfrm_alloc_user()
106 ctx->ctx_str[str_len] = '\0'; in selinux_xfrm_alloc_user()
107 rc = security_context_to_sid(ctx->ctx_str, str_len, &ctx->ctx_sid, gfp); in selinux_xfrm_alloc_user()
111 rc = avc_has_perm(tsec->sid, ctx->ctx_sid, in selinux_xfrm_alloc_user()
116 *ctxp = ctx; in selinux_xfrm_alloc_user()
121 kfree(ctx); in selinux_xfrm_alloc_user()
128 static void selinux_xfrm_free(struct xfrm_sec_ctx *ctx) in selinux_xfrm_free() argument
130 if (!ctx) in selinux_xfrm_free()
134 kfree(ctx); in selinux_xfrm_free()
140 static int selinux_xfrm_delete(struct xfrm_sec_ctx *ctx) in selinux_xfrm_delete() argument
144 if (!ctx) in selinux_xfrm_delete()
147 return avc_has_perm(tsec->sid, ctx->ctx_sid, in selinux_xfrm_delete()
156 int selinux_xfrm_policy_lookup(struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir) in selinux_xfrm_policy_lookup() argument
162 if (!ctx) in selinux_xfrm_policy_lookup()
166 if (!selinux_authorizable_ctx(ctx)) in selinux_xfrm_policy_lookup()
169 rc = avc_has_perm(fl_secid, ctx->ctx_sid, in selinux_xfrm_policy_lookup()
239 struct xfrm_sec_ctx *ctx = x->security; in selinux_xfrm_skb_sid_ingress() local
242 sid_session = ctx->ctx_sid; in selinux_xfrm_skb_sid_ingress()
245 } else if (sid_session != ctx->ctx_sid) { in selinux_xfrm_skb_sid_ingress()
317 void selinux_xfrm_policy_free(struct xfrm_sec_ctx *ctx) in selinux_xfrm_policy_free() argument
319 selinux_xfrm_free(ctx); in selinux_xfrm_policy_free()
325 int selinux_xfrm_policy_delete(struct xfrm_sec_ctx *ctx) in selinux_xfrm_policy_delete() argument
327 return selinux_xfrm_delete(ctx); in selinux_xfrm_policy_delete()
348 struct xfrm_sec_ctx *ctx; in selinux_xfrm_state_alloc_acquire() local
362 ctx = kmalloc(sizeof(*ctx) + str_len, GFP_ATOMIC); in selinux_xfrm_state_alloc_acquire()
363 if (!ctx) { in selinux_xfrm_state_alloc_acquire()
368 ctx->ctx_doi = XFRM_SC_DOI_LSM; in selinux_xfrm_state_alloc_acquire()
369 ctx->ctx_alg = XFRM_SC_ALG_SELINUX; in selinux_xfrm_state_alloc_acquire()
370 ctx->ctx_sid = secid; in selinux_xfrm_state_alloc_acquire()
371 ctx->ctx_len = str_len; in selinux_xfrm_state_alloc_acquire()
372 memcpy(ctx->ctx_str, ctx_str, str_len); in selinux_xfrm_state_alloc_acquire()
374 x->security = ctx; in selinux_xfrm_state_alloc_acquire()
416 struct xfrm_sec_ctx *ctx = x->security; in selinux_xfrm_sock_rcv_skb() local
417 peer_sid = ctx->ctx_sid; in selinux_xfrm_sock_rcv_skb()