diff options
Diffstat (limited to 'net/sunrpc/auth_gss/gss_mech_switch.c')
-rw-r--r-- | net/sunrpc/auth_gss/gss_mech_switch.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/net/sunrpc/auth_gss/gss_mech_switch.c b/net/sunrpc/auth_gss/gss_mech_switch.c index 76e4c6f4ac3c..2689de39dc78 100644 --- a/net/sunrpc/auth_gss/gss_mech_switch.c +++ b/net/sunrpc/auth_gss/gss_mech_switch.c | |||
@@ -249,14 +249,15 @@ EXPORT_SYMBOL_GPL(gss_mech_put); | |||
249 | int | 249 | int |
250 | gss_import_sec_context(const void *input_token, size_t bufsize, | 250 | gss_import_sec_context(const void *input_token, size_t bufsize, |
251 | struct gss_api_mech *mech, | 251 | struct gss_api_mech *mech, |
252 | struct gss_ctx **ctx_id) | 252 | struct gss_ctx **ctx_id, |
253 | gfp_t gfp_mask) | ||
253 | { | 254 | { |
254 | if (!(*ctx_id = kzalloc(sizeof(**ctx_id), GFP_KERNEL))) | 255 | if (!(*ctx_id = kzalloc(sizeof(**ctx_id), gfp_mask))) |
255 | return -ENOMEM; | 256 | return -ENOMEM; |
256 | (*ctx_id)->mech_type = gss_mech_get(mech); | 257 | (*ctx_id)->mech_type = gss_mech_get(mech); |
257 | 258 | ||
258 | return mech->gm_ops | 259 | return mech->gm_ops |
259 | ->gss_import_sec_context(input_token, bufsize, *ctx_id); | 260 | ->gss_import_sec_context(input_token, bufsize, *ctx_id, gfp_mask); |
260 | } | 261 | } |
261 | 262 | ||
262 | /* gss_get_mic: compute a mic over message and return mic_token. */ | 263 | /* gss_get_mic: compute a mic over message and return mic_token. */ |
@@ -285,6 +286,20 @@ gss_verify_mic(struct gss_ctx *context_handle, | |||
285 | mic_token); | 286 | mic_token); |
286 | } | 287 | } |
287 | 288 | ||
289 | /* | ||
290 | * This function is called from both the client and server code. | ||
291 | * Each makes guarantees about how much "slack" space is available | ||
292 | * for the underlying function in "buf"'s head and tail while | ||
293 | * performing the wrap. | ||
294 | * | ||
295 | * The client and server code allocate RPC_MAX_AUTH_SIZE extra | ||
296 | * space in both the head and tail which is available for use by | ||
297 | * the wrap function. | ||
298 | * | ||
299 | * Underlying functions should verify they do not use more than | ||
300 | * RPC_MAX_AUTH_SIZE of extra space in either the head or tail | ||
301 | * when performing the wrap. | ||
302 | */ | ||
288 | u32 | 303 | u32 |
289 | gss_wrap(struct gss_ctx *ctx_id, | 304 | gss_wrap(struct gss_ctx *ctx_id, |
290 | int offset, | 305 | int offset, |