diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
index 19f0190a0b970f92d4e5670056c7aff9a696bf6c..9c843974bb48b2f59607f8afd18394171758244f 100644
--- a/net/sunrpc/auth_gss/svcauth_gss.c
+++ b/net/sunrpc/auth_gss/svcauth_gss.c
@@ -1529,18 +1529,19 @@ static int create_krb5_enctypes_proc_entry(struct net *net)
 {
 	struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
 
-	if (!proc_create_data("gss_krb5_enctypes", S_IFREG | 0444,
-			      sn->proc_net_rpc,
-			      &gss_krb5_enctypes_proc_ops, net))
-		return -ENOMEM;
-	return 0;
+	sn->gss_krb5_enctypes =
+		proc_create_data("gss_krb5_enctypes", S_IFREG | 0444,
+				 sn->proc_net_rpc, &gss_krb5_enctypes_proc_ops,
+				 net);
+	return sn->gss_krb5_enctypes ? 0 : -ENOMEM;
 }
 
 static void destroy_krb5_enctypes_proc_entry(struct net *net)
 {
 	struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
 
-	remove_proc_entry("gss_krb5_enctypes", sn->proc_net_rpc);
+	if (sn->gss_krb5_enctypes)
+		remove_proc_entry("gss_krb5_enctypes", sn->proc_net_rpc);
 }
 
 #else /* CONFIG_PROC_FS */
diff --git a/net/sunrpc/netns.h b/net/sunrpc/netns.h
index 7ec10b92bea149b2d1b15a150302621039182569..4efb5f28d881865693a539d0d1722a17054aa5a3 100644
--- a/net/sunrpc/netns.h
+++ b/net/sunrpc/netns.h
@@ -33,6 +33,7 @@ struct sunrpc_net {
 	int pipe_version;
 	atomic_t pipe_users;
 	struct proc_dir_entry *use_gssp_proc;
+	struct proc_dir_entry *gss_krb5_enctypes;
 };
 
 extern unsigned int sunrpc_net_id;