diff mbox

autoload rpcsec_gss_krb5

Message ID 20110622213209.GA3010@fieldses.org (mailing list archive)
State New, archived
Headers show

Commit Message

J. Bruce Fields June 22, 2011, 9:32 p.m. UTC
There are three layers of modules required for rpcsec_gss to work:
auth_gss, a mechanism (rpcsec_gss_krb5), and then any crypto algorithms.

We autoload all of those except rpcsec_gss_krb5.

Objections?

(I suppose another option would be to get rid of the gss mechanism layer
entirely, now that we've only got one of them.  But I'd rather keep it.)

--b.

commit 027c33f5a292b5a4bbfc1ad9ced19ad4626d056b
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Wed Jun 22 10:50:08 2011 -0400

    rpc: allow autoloading of gss mechanisms
    
    Remove the need for an explicit modprobe of rpcsec_gss_krb5.
    
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

J. Bruce Fields June 23, 2011, 3:59 p.m. UTC | #1
By the way:

On Wed, Jun 22, 2011 at 05:32:09PM -0400, J. Bruce Fields wrote:
> diff --git a/net/sunrpc/auth_gss/gss_krb5_mech.c b/net/sunrpc/auth_gss/gss_krb5_mech.c
> index 0a9a2ec..5c33926 100644
> --- a/net/sunrpc/auth_gss/gss_krb5_mech.c
> +++ b/net/sunrpc/auth_gss/gss_krb5_mech.c
> @@ -743,6 +743,13 @@ static struct pf_desc gss_kerberos_pfs[] = {
>  	},
>  };
>  
> +MODULE_ALIAS("rpc-auth-gss-krb5");
> +MODULE_ALIAS("rpc-auth-gss-krb5i");
> +MODULE_ALIAS("rpc-auth-gss-krb5p");
> +MODULE_ALIAS("rpc-auth-gss-390003");
> +MODULE_ALIAS("rpc-auth-gss-390004");
> +MODULE_ALIAS("rpc-auth-gss-390005");

Is there any reason we don't do this for the auth modules, and the pnfs
layout modules?  Seems silly to wait for distro's to add it to
modprobe.conf if we don't need to.

--b.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mkrtchyan, Tigran June 23, 2011, 8:06 p.m. UTC | #2
On Thu, Jun 23, 2011 at 5:59 PM, J. Bruce Fields <bfields@fieldses.org> wrote:
> By the way:
>
> On Wed, Jun 22, 2011 at 05:32:09PM -0400, J. Bruce Fields wrote:
>> diff --git a/net/sunrpc/auth_gss/gss_krb5_mech.c b/net/sunrpc/auth_gss/gss_krb5_mech.c
>> index 0a9a2ec..5c33926 100644
>> --- a/net/sunrpc/auth_gss/gss_krb5_mech.c
>> +++ b/net/sunrpc/auth_gss/gss_krb5_mech.c
>> @@ -743,6 +743,13 @@ static struct pf_desc gss_kerberos_pfs[] = {
>>       },
>>  };
>>
>> +MODULE_ALIAS("rpc-auth-gss-krb5");
>> +MODULE_ALIAS("rpc-auth-gss-krb5i");
>> +MODULE_ALIAS("rpc-auth-gss-krb5p");
>> +MODULE_ALIAS("rpc-auth-gss-390003");
>> +MODULE_ALIAS("rpc-auth-gss-390004");
>> +MODULE_ALIAS("rpc-auth-gss-390005");
>
> Is there any reason we don't do this for the auth modules, and the pnfs
> layout modules?  Seems silly to wait for distro's to add it to
> modprobe.conf if we don't need to.
>

I recall a discussion at connectaton 2010, where Peter Staubach from
RedHat ( at that time )
requested a way to disable pNFS without rebuilding the kernel.

Probably that's why autoload is not implemented.

Regards,
   Tigran.

> --b.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
J. Bruce Fields June 23, 2011, 8:11 p.m. UTC | #3
On Thu, Jun 23, 2011 at 10:06:14PM +0200, Tigran Mkrtchyan wrote:
> On Thu, Jun 23, 2011 at 5:59 PM, J. Bruce Fields <bfields@fieldses.org> wrote:
> > By the way:
> >
> > On Wed, Jun 22, 2011 at 05:32:09PM -0400, J. Bruce Fields wrote:
> >> diff --git a/net/sunrpc/auth_gss/gss_krb5_mech.c b/net/sunrpc/auth_gss/gss_krb5_mech.c
> >> index 0a9a2ec..5c33926 100644
> >> --- a/net/sunrpc/auth_gss/gss_krb5_mech.c
> >> +++ b/net/sunrpc/auth_gss/gss_krb5_mech.c
> >> @@ -743,6 +743,13 @@ static struct pf_desc gss_kerberos_pfs[] = {
> >>       },
> >>  };
> >>
> >> +MODULE_ALIAS("rpc-auth-gss-krb5");
> >> +MODULE_ALIAS("rpc-auth-gss-krb5i");
> >> +MODULE_ALIAS("rpc-auth-gss-krb5p");
> >> +MODULE_ALIAS("rpc-auth-gss-390003");
> >> +MODULE_ALIAS("rpc-auth-gss-390004");
> >> +MODULE_ALIAS("rpc-auth-gss-390005");
> >
> > Is there any reason we don't do this for the auth modules, and the pnfs
> > layout modules?  Seems silly to wait for distro's to add it to
> > modprobe.conf if we don't need to.
> >
> 
> I recall a discussion at connectaton 2010, where Peter Staubach from
> RedHat ( at that time )
> requested a way to disable pNFS without rebuilding the kernel.
> 
> Probably that's why autoload is not implemented.

Well, autoload *is* implemented, you just have to add an alias command
to modprobe.conf before it'll work.

And if we embed the alias in the module instead, it will still be
possible to disable autloading by adding a "backlist <modulename>" to
modproble.conf.

So I don't *think* that's the issue, unless I've missed something.

--b.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/sunrpc/auth_gss/gss_krb5_mech.c b/net/sunrpc/auth_gss/gss_krb5_mech.c
index 0a9a2ec..5c33926 100644
--- a/net/sunrpc/auth_gss/gss_krb5_mech.c
+++ b/net/sunrpc/auth_gss/gss_krb5_mech.c
@@ -743,6 +743,13 @@  static struct pf_desc gss_kerberos_pfs[] = {
 	},
 };
 
+MODULE_ALIAS("rpc-auth-gss-krb5");
+MODULE_ALIAS("rpc-auth-gss-krb5i");
+MODULE_ALIAS("rpc-auth-gss-krb5p");
+MODULE_ALIAS("rpc-auth-gss-390003");
+MODULE_ALIAS("rpc-auth-gss-390004");
+MODULE_ALIAS("rpc-auth-gss-390005");
+
 static struct gss_api_mech gss_kerberos_mech = {
 	.gm_name	= "krb5",
 	.gm_owner	= THIS_MODULE,
diff --git a/net/sunrpc/auth_gss/gss_mech_switch.c b/net/sunrpc/auth_gss/gss_mech_switch.c
index e3c36a2..ca8cad8 100644
--- a/net/sunrpc/auth_gss/gss_mech_switch.c
+++ b/net/sunrpc/auth_gss/gss_mech_switch.c
@@ -141,7 +141,7 @@  gss_mech_get(struct gss_api_mech *gm)
 EXPORT_SYMBOL_GPL(gss_mech_get);
 
 struct gss_api_mech *
-gss_mech_get_by_name(const char *name)
+_gss_mech_get_by_name(const char *name)
 {
 	struct gss_api_mech	*pos, *gm = NULL;
 
@@ -158,6 +158,17 @@  gss_mech_get_by_name(const char *name)
 
 }
 
+struct gss_api_mech * gss_mech_get_by_name(const char *name)
+{
+	struct gss_api_mech *gm = NULL;
+
+	gm = _gss_mech_get_by_name(name);
+	if (!gm) {
+		request_module("rpc-auth-gss-%s", name);
+		gm = _gss_mech_get_by_name(name);
+	}
+	return gm;
+}
 EXPORT_SYMBOL_GPL(gss_mech_get_by_name);
 
 struct gss_api_mech *
@@ -194,10 +205,9 @@  mech_supports_pseudoflavor(struct gss_api_mech *gm, u32 pseudoflavor)
 	return 0;
 }
 
-struct gss_api_mech *
-gss_mech_get_by_pseudoflavor(u32 pseudoflavor)
+struct gss_api_mech *_gss_mech_get_by_pseudoflavor(u32 pseudoflavor)
 {
-	struct gss_api_mech *pos, *gm = NULL;
+	struct gss_api_mech *gm = NULL, *pos;
 
 	spin_lock(&registered_mechs_lock);
 	list_for_each_entry(pos, &registered_mechs, gm_list) {
@@ -213,6 +223,20 @@  gss_mech_get_by_pseudoflavor(u32 pseudoflavor)
 	return gm;
 }
 
+struct gss_api_mech *
+gss_mech_get_by_pseudoflavor(u32 pseudoflavor)
+{
+	struct gss_api_mech *gm;
+
+	gm = _gss_mech_get_by_pseudoflavor(pseudoflavor);
+
+	if (!gm) {
+		request_module("rpc-auth-gss-%u", pseudoflavor);
+		gm = _gss_mech_get_by_pseudoflavor(pseudoflavor);
+	}
+	return gm;
+}
+
 EXPORT_SYMBOL_GPL(gss_mech_get_by_pseudoflavor);
 
 int gss_mech_list_pseudoflavors(rpc_authflavor_t *array_ptr)