--- --- 1 file changed, 21 insertions(+) --- diff -puN net/sunrpc/auth_gss/auth_gss.c~gss-parse-new-keyring-downcall net/sunrpc/auth_gss/auth_gss.c --- linux-2.6.18-rc5/net/sunrpc/auth_gss/auth_gss.c~gss-parse-new-keyring-downcall 2006-10-13 13:42:00.000000000 -0400 +++ linux-2.6.18-rc5-andros/net/sunrpc/auth_gss/auth_gss.c 2006-10-13 13:43:12.000000000 -0400 @@ -668,6 +668,10 @@ gss_pipe_downcall(struct file *filp, con struct gss_cl_ctx *ctx; char principal[32]; uid_t uid; +#ifdef CONFIG_RPCSEC_GSS_KEYRING + key_serial_t skey, pkey, tkey; +#endif + int err = -EFBIG; if (mlen > MSG_BUF_MAXSIZE) @@ -688,6 +692,23 @@ gss_pipe_downcall(struct file *filp, con err = PTR_ERR(p); goto err; } +#ifdef CONFIG_RPCSEC_GSS_KEYRING + p = simple_get_bytes(p, end, &skey, sizeof(skey)); + if (IS_ERR(p)) { + err = PTR_ERR(p); + goto err; + } + p = simple_get_bytes(p, end, &pkey, sizeof(pkey)); + if (IS_ERR(p)) { + err = PTR_ERR(p); + goto err; + } + p = simple_get_bytes(p, end, &tkey, sizeof(tkey)); + if (IS_ERR(p)) { + err = PTR_ERR(p); + goto err; + } +#endif err = -ENOMEM; snprintf(principal, sizeof(principal), "%u@%s", uid, clnt->cl_server); _