Skip to content

Commit

Permalink
crypto: fips - Move fips_enabled sysctl into fips.c
Browse files Browse the repository at this point in the history
There is currently a large ifdef FIPS code section in proc.c.
Ostensibly it's there because the fips_enabled sysctl sits under
/proc/sys/crypto.  However, no other crypto sysctls exist.

In fact, the whole ethos of the crypto API is against such user
interfaces so this patch moves all the FIPS sysctl code over to
fips.c.

Signed-off-by: Herbert Xu <[email protected]>
  • Loading branch information
herbertx committed Apr 23, 2015
1 parent 76450f9 commit 94072cb
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 41 deletions.
48 changes: 48 additions & 0 deletions crypto/fips.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
#include <linux/export.h>
#include <linux/fips.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sysctl.h>

int fips_enabled;
EXPORT_SYMBOL_GPL(fips_enabled);
Expand All @@ -28,3 +30,49 @@ static int fips_enable(char *str)
}

__setup("fips=", fips_enable);

static struct ctl_table crypto_sysctl_table[] = {
{
.procname = "fips_enabled",
.data = &fips_enabled,
.maxlen = sizeof(int),
.mode = 0444,
.proc_handler = proc_dointvec
},
{}
};

static struct ctl_table crypto_dir_table[] = {
{
.procname = "crypto",
.mode = 0555,
.child = crypto_sysctl_table
},
{}
};

static struct ctl_table_header *crypto_sysctls;

static void crypto_proc_fips_init(void)
{
crypto_sysctls = register_sysctl_table(crypto_dir_table);
}

static void crypto_proc_fips_exit(void)
{
unregister_sysctl_table(crypto_sysctls);
}

static int __init fips_init(void)
{
crypto_proc_fips_init();
return 0;
}

static void __exit fips_exit(void)
{
crypto_proc_fips_exit();
}

module_init(fips_init);
module_exit(fips_exit);
41 changes: 0 additions & 41 deletions crypto/proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,47 +20,8 @@
#include <linux/rwsem.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/sysctl.h>
#include "internal.h"

#ifdef CONFIG_CRYPTO_FIPS
static struct ctl_table crypto_sysctl_table[] = {
{
.procname = "fips_enabled",
.data = &fips_enabled,
.maxlen = sizeof(int),
.mode = 0444,
.proc_handler = proc_dointvec
},
{}
};

static struct ctl_table crypto_dir_table[] = {
{
.procname = "crypto",
.mode = 0555,
.child = crypto_sysctl_table
},
{}
};

static struct ctl_table_header *crypto_sysctls;

static void crypto_proc_fips_init(void)
{
crypto_sysctls = register_sysctl_table(crypto_dir_table);
}

static void crypto_proc_fips_exit(void)
{
if (crypto_sysctls)
unregister_sysctl_table(crypto_sysctls);
}
#else
#define crypto_proc_fips_init()
#define crypto_proc_fips_exit()
#endif

static void *c_start(struct seq_file *m, loff_t *pos)
{
down_read(&crypto_alg_sem);
Expand Down Expand Up @@ -148,11 +109,9 @@ static const struct file_operations proc_crypto_ops = {
void __init crypto_init_proc(void)
{
proc_create("crypto", 0, NULL, &proc_crypto_ops);
crypto_proc_fips_init();
}

void __exit crypto_exit_proc(void)
{
crypto_proc_fips_exit();
remove_proc_entry("crypto", NULL);
}

0 comments on commit 94072cb

Please sign in to comment.