The timer_setup() API has being used since 3.10.0-957.x
kernel. So change gck_timer to a embedded struct to avoid
crashed on new timer API.
Signed-off-by: Yang Sheng <ys@whamcloud.com>
Change-Id: Ie12e21bca4169746016c8ac0e3ee4a125893ebf6
Reviewed-on: https://review.whamcloud.com/36708
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Li Dongyang <dongyangli@ddn.com>
Reviewed-by: Sebastien Buisson <sbuisson@ddn.com>
Tested-by: Sebastien Buisson <sbuisson@ddn.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
};
struct gss_cli_ctx_keyring {
};
struct gss_cli_ctx_keyring {
- struct gss_cli_ctx gck_base;
- struct key *gck_key;
- struct timer_list *gck_timer;
+ struct gss_cli_ctx gck_base;
+ struct key *gck_key;
+ struct timer_list gck_timer;
static void ctx_upcall_timeout_kr(cfs_timer_cb_arg_t data)
{
struct gss_cli_ctx_keyring *gctx_kr = cfs_from_timer(gctx_kr,
static void ctx_upcall_timeout_kr(cfs_timer_cb_arg_t data)
{
struct gss_cli_ctx_keyring *gctx_kr = cfs_from_timer(gctx_kr,
struct ptlrpc_cli_ctx *ctx = &(gctx_kr->gck_base.gc_base);
struct key *key = gctx_kr->gck_key;
struct ptlrpc_cli_ctx *ctx = &(gctx_kr->gck_base.gc_base);
struct key *key = gctx_kr->gck_key;
static void ctx_start_timer_kr(struct ptlrpc_cli_ctx *ctx, time64_t timeout)
{
struct gss_cli_ctx_keyring *gctx_kr = ctx2gctx_keyring(ctx);
static void ctx_start_timer_kr(struct ptlrpc_cli_ctx *ctx, time64_t timeout)
{
struct gss_cli_ctx_keyring *gctx_kr = ctx2gctx_keyring(ctx);
- struct timer_list *timer = gctx_kr->gck_timer;
+ struct timer_list *timer = &gctx_kr->gck_timer;
void ctx_clear_timer_kr(struct ptlrpc_cli_ctx *ctx)
{
struct gss_cli_ctx_keyring *gctx_kr = ctx2gctx_keyring(ctx);
void ctx_clear_timer_kr(struct ptlrpc_cli_ctx *ctx)
{
struct gss_cli_ctx_keyring *gctx_kr = ctx2gctx_keyring(ctx);
- struct timer_list *timer = gctx_kr->gck_timer;
-
- if (timer == NULL)
- return;
+ struct timer_list *timer = &gctx_kr->gck_timer;
CDEBUG(D_SEC, "ctx %p, key %p\n", ctx, gctx_kr->gck_key);
CDEBUG(D_SEC, "ctx %p, key %p\n", ctx, gctx_kr->gck_key);
- gctx_kr->gck_timer = NULL;
-
del_singleshot_timer_sync(timer);
del_singleshot_timer_sync(timer);
if (gctx_kr == NULL)
return NULL;
if (gctx_kr == NULL)
return NULL;
- OBD_ALLOC_PTR(gctx_kr->gck_timer);
- if (gctx_kr->gck_timer == NULL) {
- OBD_FREE_PTR(gctx_kr);
- return NULL;
- }
- cfs_timer_setup(gctx_kr->gck_timer, NULL, 0, 0);
+ cfs_timer_setup(&gctx_kr->gck_timer, NULL, 0, 0);
ctx = &gctx_kr->gck_base.gc_base;
if (gss_cli_ctx_init_common(sec, ctx, &gss_keyring_ctxops, vcred)) {
ctx = &gctx_kr->gck_base.gc_base;
if (gss_cli_ctx_init_common(sec, ctx, &gss_keyring_ctxops, vcred)) {
- OBD_FREE_PTR(gctx_kr->gck_timer);
OBD_FREE_PTR(gctx_kr);
return NULL;
}
OBD_FREE_PTR(gctx_kr);
return NULL;
}
LASSERT(gctx_kr->gck_key == NULL);
ctx_clear_timer_kr(ctx);
LASSERT(gctx_kr->gck_key == NULL);
ctx_clear_timer_kr(ctx);
- LASSERT(gctx_kr->gck_timer == NULL);
if (gss_cli_ctx_fini_common(sec, ctx))
return;
if (gss_cli_ctx_fini_common(sec, ctx))
return;