gss_msg 310 net/sunrpc/auth_gss/auth_gss.c gss_release_msg(struct gss_upcall_msg *gss_msg) gss_msg 312 net/sunrpc/auth_gss/auth_gss.c struct net *net = gss_msg->auth->net; gss_msg 313 net/sunrpc/auth_gss/auth_gss.c if (!refcount_dec_and_test(&gss_msg->count)) gss_msg 316 net/sunrpc/auth_gss/auth_gss.c BUG_ON(!list_empty(&gss_msg->list)); gss_msg 317 net/sunrpc/auth_gss/auth_gss.c if (gss_msg->ctx != NULL) gss_msg 318 net/sunrpc/auth_gss/auth_gss.c gss_put_ctx(gss_msg->ctx); gss_msg 319 net/sunrpc/auth_gss/auth_gss.c rpc_destroy_wait_queue(&gss_msg->rpc_waitqueue); gss_msg 320 net/sunrpc/auth_gss/auth_gss.c gss_put_auth(gss_msg->auth); gss_msg 321 net/sunrpc/auth_gss/auth_gss.c kfree_const(gss_msg->service_name); gss_msg 322 net/sunrpc/auth_gss/auth_gss.c kfree(gss_msg); gss_msg 345 net/sunrpc/auth_gss/auth_gss.c gss_add_msg(struct gss_upcall_msg *gss_msg) gss_msg 347 net/sunrpc/auth_gss/auth_gss.c struct rpc_pipe *pipe = gss_msg->pipe; gss_msg 351 net/sunrpc/auth_gss/auth_gss.c old = __gss_find_upcall(pipe, gss_msg->uid, gss_msg->auth); gss_msg 353 net/sunrpc/auth_gss/auth_gss.c refcount_inc(&gss_msg->count); gss_msg 354 net/sunrpc/auth_gss/auth_gss.c list_add(&gss_msg->list, &pipe->in_downcall); gss_msg 356 net/sunrpc/auth_gss/auth_gss.c gss_msg = old; gss_msg 358 net/sunrpc/auth_gss/auth_gss.c return gss_msg; gss_msg 362 net/sunrpc/auth_gss/auth_gss.c __gss_unhash_msg(struct gss_upcall_msg *gss_msg) gss_msg 364 net/sunrpc/auth_gss/auth_gss.c list_del_init(&gss_msg->list); gss_msg 365 net/sunrpc/auth_gss/auth_gss.c rpc_wake_up_status(&gss_msg->rpc_waitqueue, gss_msg->msg.errno); gss_msg 366 net/sunrpc/auth_gss/auth_gss.c wake_up_all(&gss_msg->waitqueue); gss_msg 367 net/sunrpc/auth_gss/auth_gss.c refcount_dec(&gss_msg->count); gss_msg 371 net/sunrpc/auth_gss/auth_gss.c gss_unhash_msg(struct gss_upcall_msg *gss_msg) gss_msg 373 net/sunrpc/auth_gss/auth_gss.c struct rpc_pipe *pipe = gss_msg->pipe; gss_msg 375 net/sunrpc/auth_gss/auth_gss.c if (list_empty(&gss_msg->list)) gss_msg 378 net/sunrpc/auth_gss/auth_gss.c if (!list_empty(&gss_msg->list)) gss_msg 379 net/sunrpc/auth_gss/auth_gss.c __gss_unhash_msg(gss_msg); gss_msg 384 net/sunrpc/auth_gss/auth_gss.c gss_handle_downcall_result(struct gss_cred *gss_cred, struct gss_upcall_msg *gss_msg) gss_msg 386 net/sunrpc/auth_gss/auth_gss.c switch (gss_msg->msg.errno) { gss_msg 388 net/sunrpc/auth_gss/auth_gss.c if (gss_msg->ctx == NULL) gss_msg 391 net/sunrpc/auth_gss/auth_gss.c gss_cred_set_ctx(&gss_cred->gc_base, gss_msg->ctx); gss_msg 398 net/sunrpc/auth_gss/auth_gss.c rpc_wake_up_status(&gss_msg->rpc_waitqueue, gss_msg->msg.errno); gss_msg 406 net/sunrpc/auth_gss/auth_gss.c struct gss_upcall_msg *gss_msg = gss_cred->gc_upcall; gss_msg 407 net/sunrpc/auth_gss/auth_gss.c struct rpc_pipe *pipe = gss_msg->pipe; gss_msg 410 net/sunrpc/auth_gss/auth_gss.c gss_handle_downcall_result(gss_cred, gss_msg); gss_msg 412 net/sunrpc/auth_gss/auth_gss.c task->tk_status = gss_msg->msg.errno; gss_msg 413 net/sunrpc/auth_gss/auth_gss.c gss_release_msg(gss_msg); gss_msg 416 net/sunrpc/auth_gss/auth_gss.c static void gss_encode_v0_msg(struct gss_upcall_msg *gss_msg, gss_msg 421 net/sunrpc/auth_gss/auth_gss.c uid_t uid = from_kuid_munged(userns, gss_msg->uid); gss_msg 422 net/sunrpc/auth_gss/auth_gss.c memcpy(gss_msg->databuf, &uid, sizeof(uid)); gss_msg 423 net/sunrpc/auth_gss/auth_gss.c gss_msg->msg.data = gss_msg->databuf; gss_msg 424 net/sunrpc/auth_gss/auth_gss.c gss_msg->msg.len = sizeof(uid); gss_msg 426 net/sunrpc/auth_gss/auth_gss.c BUILD_BUG_ON(sizeof(uid) > sizeof(gss_msg->databuf)); gss_msg 433 net/sunrpc/auth_gss/auth_gss.c struct gss_upcall_msg *gss_msg = container_of(msg, gss_msg 437 net/sunrpc/auth_gss/auth_gss.c gss_encode_v0_msg(gss_msg, file->f_cred); gss_msg 441 net/sunrpc/auth_gss/auth_gss.c static int gss_encode_v1_msg(struct gss_upcall_msg *gss_msg, gss_msg 447 net/sunrpc/auth_gss/auth_gss.c struct gss_api_mech *mech = gss_msg->auth->mech; gss_msg 448 net/sunrpc/auth_gss/auth_gss.c char *p = gss_msg->databuf; gss_msg 449 net/sunrpc/auth_gss/auth_gss.c size_t buflen = sizeof(gss_msg->databuf); gss_msg 453 net/sunrpc/auth_gss/auth_gss.c from_kuid_munged(userns, gss_msg->uid)); gss_msg 456 net/sunrpc/auth_gss/auth_gss.c gss_msg->msg.len = len; gss_msg 466 net/sunrpc/auth_gss/auth_gss.c gss_msg->msg.len += len; gss_msg 492 net/sunrpc/auth_gss/auth_gss.c gss_msg->msg.len += len; gss_msg 500 net/sunrpc/auth_gss/auth_gss.c gss_msg->msg.len += len; gss_msg 502 net/sunrpc/auth_gss/auth_gss.c trace_rpcgss_upcall_msg(gss_msg->databuf); gss_msg 506 net/sunrpc/auth_gss/auth_gss.c gss_msg->msg.len += len; gss_msg 507 net/sunrpc/auth_gss/auth_gss.c gss_msg->msg.data = gss_msg->databuf; gss_msg 518 net/sunrpc/auth_gss/auth_gss.c struct gss_upcall_msg *gss_msg = container_of(msg, gss_msg 523 net/sunrpc/auth_gss/auth_gss.c err = gss_encode_v1_msg(gss_msg, gss_msg 524 net/sunrpc/auth_gss/auth_gss.c gss_msg->service_name, gss_msg 525 net/sunrpc/auth_gss/auth_gss.c gss_msg->auth->target_name, gss_msg 537 net/sunrpc/auth_gss/auth_gss.c struct gss_upcall_msg *gss_msg; gss_msg 541 net/sunrpc/auth_gss/auth_gss.c gss_msg = kzalloc(sizeof(*gss_msg), GFP_NOFS); gss_msg 542 net/sunrpc/auth_gss/auth_gss.c if (gss_msg == NULL) gss_msg 548 net/sunrpc/auth_gss/auth_gss.c gss_msg->pipe = gss_auth->gss_pipe[vers]->pipe; gss_msg 549 net/sunrpc/auth_gss/auth_gss.c INIT_LIST_HEAD(&gss_msg->list); gss_msg 550 net/sunrpc/auth_gss/auth_gss.c rpc_init_wait_queue(&gss_msg->rpc_waitqueue, "RPCSEC_GSS upcall waitq"); gss_msg 551 net/sunrpc/auth_gss/auth_gss.c init_waitqueue_head(&gss_msg->waitqueue); gss_msg 552 net/sunrpc/auth_gss/auth_gss.c refcount_set(&gss_msg->count, 1); gss_msg 553 net/sunrpc/auth_gss/auth_gss.c gss_msg->uid = uid; gss_msg 554 net/sunrpc/auth_gss/auth_gss.c gss_msg->auth = gss_auth; gss_msg 557 net/sunrpc/auth_gss/auth_gss.c gss_msg->service_name = kstrdup_const(service_name, GFP_NOFS); gss_msg 558 net/sunrpc/auth_gss/auth_gss.c if (!gss_msg->service_name) { gss_msg 563 net/sunrpc/auth_gss/auth_gss.c return gss_msg; gss_msg 567 net/sunrpc/auth_gss/auth_gss.c kfree(gss_msg); gss_msg 577 net/sunrpc/auth_gss/auth_gss.c struct gss_upcall_msg *gss_new, *gss_msg; gss_msg 583 net/sunrpc/auth_gss/auth_gss.c gss_msg = gss_add_msg(gss_new); gss_msg 584 net/sunrpc/auth_gss/auth_gss.c if (gss_msg == gss_new) { gss_msg 586 net/sunrpc/auth_gss/auth_gss.c refcount_inc(&gss_msg->count); gss_msg 590 net/sunrpc/auth_gss/auth_gss.c refcount_dec(&gss_msg->count); gss_msg 592 net/sunrpc/auth_gss/auth_gss.c gss_msg = ERR_PTR(res); gss_msg 596 net/sunrpc/auth_gss/auth_gss.c return gss_msg; gss_msg 612 net/sunrpc/auth_gss/auth_gss.c struct gss_upcall_msg *gss_msg; gss_msg 616 net/sunrpc/auth_gss/auth_gss.c gss_msg = gss_setup_upcall(gss_auth, cred); gss_msg 617 net/sunrpc/auth_gss/auth_gss.c if (PTR_ERR(gss_msg) == -EAGAIN) { gss_msg 626 net/sunrpc/auth_gss/auth_gss.c if (IS_ERR(gss_msg)) { gss_msg 627 net/sunrpc/auth_gss/auth_gss.c err = PTR_ERR(gss_msg); gss_msg 630 net/sunrpc/auth_gss/auth_gss.c pipe = gss_msg->pipe; gss_msg 634 net/sunrpc/auth_gss/auth_gss.c else if (gss_msg->ctx == NULL && gss_msg->msg.errno >= 0) { gss_msg 635 net/sunrpc/auth_gss/auth_gss.c gss_cred->gc_upcall = gss_msg; gss_msg 637 net/sunrpc/auth_gss/auth_gss.c refcount_inc(&gss_msg->count); gss_msg 638 net/sunrpc/auth_gss/auth_gss.c rpc_sleep_on(&gss_msg->rpc_waitqueue, task, gss_upcall_callback); gss_msg 640 net/sunrpc/auth_gss/auth_gss.c gss_handle_downcall_result(gss_cred, gss_msg); gss_msg 641 net/sunrpc/auth_gss/auth_gss.c err = gss_msg->msg.errno; gss_msg 644 net/sunrpc/auth_gss/auth_gss.c gss_release_msg(gss_msg); gss_msg 658 net/sunrpc/auth_gss/auth_gss.c struct gss_upcall_msg *gss_msg; gss_msg 670 net/sunrpc/auth_gss/auth_gss.c gss_msg = gss_setup_upcall(gss_auth, cred); gss_msg 671 net/sunrpc/auth_gss/auth_gss.c if (PTR_ERR(gss_msg) == -EAGAIN) { gss_msg 682 net/sunrpc/auth_gss/auth_gss.c if (IS_ERR(gss_msg)) { gss_msg 683 net/sunrpc/auth_gss/auth_gss.c err = PTR_ERR(gss_msg); gss_msg 686 net/sunrpc/auth_gss/auth_gss.c pipe = gss_msg->pipe; gss_msg 688 net/sunrpc/auth_gss/auth_gss.c prepare_to_wait(&gss_msg->waitqueue, &wait, TASK_KILLABLE); gss_msg 690 net/sunrpc/auth_gss/auth_gss.c if (gss_msg->ctx != NULL || gss_msg->msg.errno < 0) { gss_msg 700 net/sunrpc/auth_gss/auth_gss.c if (gss_msg->ctx) gss_msg 701 net/sunrpc/auth_gss/auth_gss.c gss_cred_set_ctx(cred, gss_msg->ctx); gss_msg 703 net/sunrpc/auth_gss/auth_gss.c err = gss_msg->msg.errno; gss_msg 706 net/sunrpc/auth_gss/auth_gss.c finish_wait(&gss_msg->waitqueue, &wait); gss_msg 707 net/sunrpc/auth_gss/auth_gss.c gss_release_msg(gss_msg); gss_msg 721 net/sunrpc/auth_gss/auth_gss.c struct gss_upcall_msg *gss_msg; gss_msg 760 net/sunrpc/auth_gss/auth_gss.c gss_msg = __gss_find_upcall(pipe, uid, NULL); gss_msg 761 net/sunrpc/auth_gss/auth_gss.c if (gss_msg == NULL) { gss_msg 765 net/sunrpc/auth_gss/auth_gss.c list_del_init(&gss_msg->list); gss_msg 768 net/sunrpc/auth_gss/auth_gss.c p = gss_fill_context(p, end, ctx, gss_msg->auth->mech); gss_msg 774 net/sunrpc/auth_gss/auth_gss.c gss_msg->msg.errno = err; gss_msg 781 net/sunrpc/auth_gss/auth_gss.c gss_msg->msg.errno = -EAGAIN; gss_msg 786 net/sunrpc/auth_gss/auth_gss.c gss_msg->msg.errno = -EIO; gss_msg 790 net/sunrpc/auth_gss/auth_gss.c gss_msg->ctx = gss_get_ctx(ctx); gss_msg 795 net/sunrpc/auth_gss/auth_gss.c __gss_unhash_msg(gss_msg); gss_msg 797 net/sunrpc/auth_gss/auth_gss.c gss_release_msg(gss_msg); gss_msg 845 net/sunrpc/auth_gss/auth_gss.c struct gss_upcall_msg *gss_msg; gss_msg 849 net/sunrpc/auth_gss/auth_gss.c list_for_each_entry(gss_msg, &pipe->in_downcall, list) { gss_msg 851 net/sunrpc/auth_gss/auth_gss.c if (!list_empty(&gss_msg->msg.list)) gss_msg 853 net/sunrpc/auth_gss/auth_gss.c gss_msg->msg.errno = -EPIPE; gss_msg 854 net/sunrpc/auth_gss/auth_gss.c refcount_inc(&gss_msg->count); gss_msg 855 net/sunrpc/auth_gss/auth_gss.c __gss_unhash_msg(gss_msg); gss_msg 857 net/sunrpc/auth_gss/auth_gss.c gss_release_msg(gss_msg); gss_msg 868 net/sunrpc/auth_gss/auth_gss.c struct gss_upcall_msg *gss_msg = container_of(msg, struct gss_upcall_msg, msg); gss_msg 871 net/sunrpc/auth_gss/auth_gss.c refcount_inc(&gss_msg->count); gss_msg 872 net/sunrpc/auth_gss/auth_gss.c gss_unhash_msg(gss_msg); gss_msg 875 net/sunrpc/auth_gss/auth_gss.c gss_release_msg(gss_msg); gss_msg 877 net/sunrpc/auth_gss/auth_gss.c gss_release_msg(gss_msg);