X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fsunrpc%2Fauth_gss%2Fgss_mech_switch.c;h=a0db9f5004f10d350f2b6ff3943863b5a2303b88;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=f5030f3fc42aaff3526853ab9acbce3bd8fd840e;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/net/sunrpc/auth_gss/gss_mech_switch.c b/net/sunrpc/auth_gss/gss_mech_switch.c index f5030f3fc..a0db9f500 100644 --- a/net/sunrpc/auth_gss/gss_mech_switch.c +++ b/net/sunrpc/auth_gss/gss_mech_switch.c @@ -51,7 +51,7 @@ #endif static LIST_HEAD(registered_mechs); -static spinlock_t registered_mechs_lock = SPIN_LOCK_UNLOCKED; +static DEFINE_SPINLOCK(registered_mechs_lock); static void gss_mech_free(struct gss_api_mech *gm) @@ -150,9 +150,8 @@ gss_mech_get_by_name(char *name) spin_lock(®istered_mechs_lock); list_for_each_entry(pos, ®istered_mechs, gm_list) { if (0 == strcmp(name, pos->gm_name)) { - if (!try_module_get(pos->gm_owner)) - continue; - gm = pos; + if (try_module_get(pos->gm_owner)) + gm = pos; break; } } @@ -182,13 +181,12 @@ gss_mech_get_by_pseudoflavor(u32 pseudoflavor) spin_lock(®istered_mechs_lock); list_for_each_entry(pos, ®istered_mechs, gm_list) { - if (!try_module_get(pos->gm_owner)) - continue; if (!mech_supports_pseudoflavor(pos, pseudoflavor)) { module_put(pos->gm_owner); continue; } - gm = pos; + if (try_module_get(pos->gm_owner)) + gm = pos; break; } spin_unlock(®istered_mechs_lock);