diff options
Diffstat (limited to 'releases/2.6.39.3/nfsd-fix-dependency-of-nfsd-on-auth_rpcgss.patch')
-rw-r--r-- | releases/2.6.39.3/nfsd-fix-dependency-of-nfsd-on-auth_rpcgss.patch | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/releases/2.6.39.3/nfsd-fix-dependency-of-nfsd-on-auth_rpcgss.patch b/releases/2.6.39.3/nfsd-fix-dependency-of-nfsd-on-auth_rpcgss.patch new file mode 100644 index 0000000000..021e3e091e --- /dev/null +++ b/releases/2.6.39.3/nfsd-fix-dependency-of-nfsd-on-auth_rpcgss.patch @@ -0,0 +1,106 @@ +From b084f598df36b62dfae83c10ed17f0b66b50f442 Mon Sep 17 00:00:00 2001 +From: "J. Bruce Fields" <bfields@redhat.com> +Date: Tue, 31 May 2011 12:24:58 -0400 +Subject: nfsd: fix dependency of nfsd on auth_rpcgss + +From: "J. Bruce Fields" <bfields@redhat.com> + +commit b084f598df36b62dfae83c10ed17f0b66b50f442 upstream. + +Commit b0b0c0a26e84 "nfsd: add proc file listing kernel's gss_krb5 +enctypes" added an nunnecessary dependency of nfsd on the auth_rpcgss +module. + +It's a little ad hoc, but since the only piece of information nfsd needs +from rpcsec_gss_krb5 is a single static string, one solution is just to +share it with an include file. + +Reported-by: Michael Guntsche <mike@it-loops.com> +Cc: Kevin Coffman <kwc@citi.umich.edu> +Signed-off-by: J. Bruce Fields <bfields@redhat.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + fs/nfsd/nfsctl.c | 19 ++++++------------- + include/linux/sunrpc/gss_krb5_enctypes.h | 4 ++++ + net/sunrpc/auth_gss/gss_krb5_mech.c | 3 ++- + 3 files changed, 12 insertions(+), 14 deletions(-) + +--- a/fs/nfsd/nfsctl.c ++++ b/fs/nfsd/nfsctl.c +@@ -13,6 +13,7 @@ + #include <linux/lockd/lockd.h> + #include <linux/sunrpc/clnt.h> + #include <linux/sunrpc/gss_api.h> ++#include <linux/sunrpc/gss_krb5_enctypes.h> + + #include "idmap.h" + #include "nfsd.h" +@@ -189,18 +190,10 @@ static struct file_operations export_fea + .release = single_release, + }; + +-#ifdef CONFIG_SUNRPC_GSS ++#if defined(CONFIG_SUNRPC_GSS) || defined(CONFIG_SUNRPC_GSS_MODULE) + static int supported_enctypes_show(struct seq_file *m, void *v) + { +- struct gss_api_mech *k5mech; +- +- k5mech = gss_mech_get_by_name("krb5"); +- if (k5mech == NULL) +- goto out; +- if (k5mech->gm_upcall_enctypes != NULL) +- seq_printf(m, k5mech->gm_upcall_enctypes); +- gss_mech_put(k5mech); +-out: ++ seq_printf(m, KRB5_SUPPORTED_ENCTYPES); + return 0; + } + +@@ -215,7 +208,7 @@ static struct file_operations supported_ + .llseek = seq_lseek, + .release = single_release, + }; +-#endif /* CONFIG_SUNRPC_GSS */ ++#endif /* CONFIG_SUNRPC_GSS or CONFIG_SUNRPC_GSS_MODULE */ + + extern int nfsd_pool_stats_open(struct inode *inode, struct file *file); + extern int nfsd_pool_stats_release(struct inode *inode, struct file *file); +@@ -1427,9 +1420,9 @@ static int nfsd_fill_super(struct super_ + [NFSD_Versions] = {"versions", &transaction_ops, S_IWUSR|S_IRUSR}, + [NFSD_Ports] = {"portlist", &transaction_ops, S_IWUSR|S_IRUGO}, + [NFSD_MaxBlkSize] = {"max_block_size", &transaction_ops, S_IWUSR|S_IRUGO}, +-#ifdef CONFIG_SUNRPC_GSS ++#if defined(CONFIG_SUNRPC_GSS) || defined(CONFIG_SUNRPC_GSS_MODULE) + [NFSD_SupportedEnctypes] = {"supported_krb5_enctypes", &supported_enctypes_ops, S_IRUGO}, +-#endif /* CONFIG_SUNRPC_GSS */ ++#endif /* CONFIG_SUNRPC_GSS or CONFIG_SUNRPC_GSS_MODULE */ + #ifdef CONFIG_NFSD_V4 + [NFSD_Leasetime] = {"nfsv4leasetime", &transaction_ops, S_IWUSR|S_IRUSR}, + [NFSD_Gracetime] = {"nfsv4gracetime", &transaction_ops, S_IWUSR|S_IRUSR}, +--- /dev/null ++++ b/include/linux/sunrpc/gss_krb5_enctypes.h +@@ -0,0 +1,4 @@ ++/* ++ * Dumb way to share this static piece of information with nfsd ++ */ ++#define KRB5_SUPPORTED_ENCTYPES "18,17,16,23,3,1,2" +--- a/net/sunrpc/auth_gss/gss_krb5_mech.c ++++ b/net/sunrpc/auth_gss/gss_krb5_mech.c +@@ -43,6 +43,7 @@ + #include <linux/sunrpc/gss_krb5.h> + #include <linux/sunrpc/xdr.h> + #include <linux/crypto.h> ++#include <linux/sunrpc/gss_krb5_enctypes.h> + + #ifdef RPC_DEBUG + # define RPCDBG_FACILITY RPCDBG_AUTH +@@ -750,7 +751,7 @@ static struct gss_api_mech gss_kerberos_ + .gm_ops = &gss_kerberos_ops, + .gm_pf_num = ARRAY_SIZE(gss_kerberos_pfs), + .gm_pfs = gss_kerberos_pfs, +- .gm_upcall_enctypes = "18,17,16,23,3,1,2", ++ .gm_upcall_enctypes = KRB5_SUPPORTED_ENCTYPES, + }; + + static int __init init_kerberos_module(void) |