瀏覽代碼

crypto: Add a report function pointer to crypto_type

We add a report function pointer to struct crypto_type. This function
pointer is used from the crypto userspace configuration API to report
crypto algorithms to userspace.

Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Steffen Klassert 13 年之前
父節點
當前提交
b6aa63c09b
共有 2 個文件被更改,包括 7 次插入0 次删除
  1. 5 0
      crypto/crypto_user.c
  2. 2 0
      include/crypto/algapi.h

+ 5 - 0
crypto/crypto_user.c

@@ -84,6 +84,11 @@ static int crypto_report_one(struct crypto_alg *alg,
 
 
 	NLA_PUT_U32(skb, CRYPTOCFGA_PRIORITY_VAL, alg->cra_priority);
 	NLA_PUT_U32(skb, CRYPTOCFGA_PRIORITY_VAL, alg->cra_priority);
 
 
+	if (alg->cra_type && alg->cra_type->report) {
+		if (alg->cra_type->report(skb, alg))
+			goto nla_put_failure;
+	}
+
 	return 0;
 	return 0;
 
 
 nla_put_failure:
 nla_put_failure:

+ 2 - 0
include/crypto/algapi.h

@@ -15,6 +15,7 @@
 #include <linux/crypto.h>
 #include <linux/crypto.h>
 #include <linux/list.h>
 #include <linux/list.h>
 #include <linux/kernel.h>
 #include <linux/kernel.h>
+#include <linux/skbuff.h>
 
 
 struct module;
 struct module;
 struct rtattr;
 struct rtattr;
@@ -26,6 +27,7 @@ struct crypto_type {
 	int (*init)(struct crypto_tfm *tfm, u32 type, u32 mask);
 	int (*init)(struct crypto_tfm *tfm, u32 type, u32 mask);
 	int (*init_tfm)(struct crypto_tfm *tfm);
 	int (*init_tfm)(struct crypto_tfm *tfm);
 	void (*show)(struct seq_file *m, struct crypto_alg *alg);
 	void (*show)(struct seq_file *m, struct crypto_alg *alg);
+	int (*report)(struct sk_buff *skb, struct crypto_alg *alg);
 	struct crypto_alg *(*lookup)(const char *name, u32 type, u32 mask);
 	struct crypto_alg *(*lookup)(const char *name, u32 type, u32 mask);
 
 
 	unsigned int type;
 	unsigned int type;