Skip to content

Commit c06cfb0

Browse files
committed
KEYS: Remove key_type::match in favour of overriding default by match_preparse
A previous patch added a ->match_preparse() method to the key type. This is allowed to override the function called by the iteration algorithm. Therefore, we can just set a default that simply checks for an exact match of the key description with the original criterion data and allow match_preparse to override it as needed. The key_type::match op is then redundant and can be removed, as can the user_match() function. Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Vivek Goyal <vgoyal@redhat.com>
1 parent 614d8c3 commit c06cfb0

19 files changed

Lines changed: 31 additions & 45 deletions

File tree

crypto/asymmetric_keys/asymmetric_type.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ EXPORT_SYMBOL_GPL(asymmetric_keyid_match);
5959
* "id:<id>" - request a key matching the ID
6060
* "<subtype>:<id>" - request a key of a subtype
6161
*/
62-
static int asymmetric_key_match(const struct key *key,
63-
const struct key_match_data *match_data)
62+
static int asymmetric_key_cmp(const struct key *key,
63+
const struct key_match_data *match_data)
6464
{
6565
const struct asymmetric_key_subtype *subtype = asymmetric_key_subtype(key);
6666
const char *description = match_data->raw_data;
@@ -110,6 +110,7 @@ static int asymmetric_key_match(const struct key *key,
110110
static int asymmetric_key_match_preparse(struct key_match_data *match_data)
111111
{
112112
match_data->lookup_type = KEYRING_SEARCH_LOOKUP_ITERATE;
113+
match_data->cmp = asymmetric_key_cmp;
113114
return 0;
114115
}
115116

@@ -224,7 +225,6 @@ struct key_type key_type_asymmetric = {
224225
.free_preparse = asymmetric_key_free_preparse,
225226
.instantiate = generic_key_instantiate,
226227
.match_preparse = asymmetric_key_match_preparse,
227-
.match = asymmetric_key_match,
228228
.match_free = asymmetric_key_match_free,
229229
.destroy = asymmetric_key_destroy,
230230
.describe = asymmetric_key_describe,

crypto/asymmetric_keys/pkcs7_key_type.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ static struct key_type key_type_pkcs7 = {
7575
.preparse = pkcs7_preparse,
7676
.free_preparse = user_free_preparse,
7777
.instantiate = generic_key_instantiate,
78-
.match = user_match,
7978
.revoke = user_revoke,
8079
.destroy = user_destroy,
8180
.describe = user_describe,

fs/cifs/cifs_spnego.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ cifs_spnego_key_destroy(struct key *key)
6262
struct key_type cifs_spnego_key_type = {
6363
.name = "cifs.spnego",
6464
.instantiate = cifs_spnego_key_instantiate,
65-
.match = user_match,
6665
.destroy = cifs_spnego_key_destroy,
6766
.describe = user_describe,
6867
};

fs/cifs/cifsacl.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ static struct key_type cifs_idmap_key_type = {
8484
.instantiate = cifs_idmap_key_instantiate,
8585
.destroy = cifs_idmap_key_destroy,
8686
.describe = user_describe,
87-
.match = user_match,
8887
};
8988

9089
static char *

fs/nfs/idmap.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,6 @@ static struct key_type key_type_id_resolver = {
177177
.preparse = user_preparse,
178178
.free_preparse = user_free_preparse,
179179
.instantiate = generic_key_instantiate,
180-
.match = user_match,
181180
.revoke = user_revoke,
182181
.destroy = user_destroy,
183182
.describe = user_describe,
@@ -401,7 +400,6 @@ static struct key_type key_type_id_resolver_legacy = {
401400
.preparse = user_preparse,
402401
.free_preparse = user_free_preparse,
403402
.instantiate = generic_key_instantiate,
404-
.match = user_match,
405403
.revoke = user_revoke,
406404
.destroy = user_destroy,
407405
.describe = user_describe,

include/keys/user-type.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,10 @@ extern struct key_type key_type_user;
3636
extern struct key_type key_type_logon;
3737

3838
struct key_preparsed_payload;
39-
struct key_match_data;
4039

4140
extern int user_preparse(struct key_preparsed_payload *prep);
4241
extern void user_free_preparse(struct key_preparsed_payload *prep);
4342
extern int user_update(struct key *key, struct key_preparsed_payload *prep);
44-
extern int user_match(const struct key *key,
45-
const struct key_match_data *match_data);
4643
extern void user_revoke(struct key *key);
4744
extern void user_destroy(struct key *key);
4845
extern void user_describe(const struct key *user, struct seq_file *m);

include/linux/key-type.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,6 @@ struct key_type {
113113
*/
114114
int (*match_preparse)(struct key_match_data *match_data);
115115

116-
/* match a key against a description */
117-
int (*match)(const struct key *key,
118-
const struct key_match_data *match_data);
119-
120116
/* Free preparsed match data (optional). This should be supplied it
121117
* ->match_preparse() is supplied. */
122118
void (*match_free)(struct key_match_data *match_data);

net/ceph/crypto.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,6 @@ struct key_type key_type_ceph = {
476476
.preparse = ceph_key_preparse,
477477
.free_preparse = ceph_key_free_preparse,
478478
.instantiate = generic_key_instantiate,
479-
.match = user_match,
480479
.destroy = ceph_key_destroy,
481480
};
482481

net/dns_resolver/dns_key.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,8 @@ static void dns_resolver_free_preparse(struct key_preparsed_payload *prep)
176176
* The domain name may be a simple name or an absolute domain name (which
177177
* should end with a period). The domain name is case-independent.
178178
*/
179-
static int
180-
dns_resolver_match(const struct key *key,
181-
const struct key_match_data *match_data)
179+
static int dns_resolver_cmp(const struct key *key,
180+
const struct key_match_data *match_data)
182181
{
183182
int slen, dlen, ret = 0;
184183
const char *src = key->description, *dsp = match_data->raw_data;
@@ -209,6 +208,16 @@ dns_resolver_match(const struct key *key,
209208
return ret;
210209
}
211210

211+
/*
212+
* Preparse the match criterion.
213+
*/
214+
static int dns_resolver_match_preparse(struct key_match_data *match_data)
215+
{
216+
match_data->lookup_type = KEYRING_SEARCH_LOOKUP_ITERATE;
217+
match_data->cmp = dns_resolver_cmp;
218+
return 0;
219+
}
220+
212221
/*
213222
* Describe a DNS key
214223
*/
@@ -243,7 +252,7 @@ struct key_type key_type_dns_resolver = {
243252
.preparse = dns_resolver_preparse,
244253
.free_preparse = dns_resolver_free_preparse,
245254
.instantiate = generic_key_instantiate,
246-
.match = dns_resolver_match,
255+
.match_preparse = dns_resolver_match_preparse,
247256
.revoke = user_revoke,
248257
.destroy = user_destroy,
249258
.describe = dns_resolver_describe,

net/rxrpc/ar-key.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ struct key_type key_type_rxrpc = {
4444
.preparse = rxrpc_preparse,
4545
.free_preparse = rxrpc_free_preparse,
4646
.instantiate = generic_key_instantiate,
47-
.match = user_match,
4847
.destroy = rxrpc_destroy,
4948
.describe = rxrpc_describe,
5049
.read = rxrpc_read,
@@ -61,7 +60,6 @@ struct key_type key_type_rxrpc_s = {
6160
.preparse = rxrpc_preparse_s,
6261
.free_preparse = rxrpc_free_preparse_s,
6362
.instantiate = generic_key_instantiate,
64-
.match = user_match,
6563
.destroy = rxrpc_destroy_s,
6664
.describe = rxrpc_describe,
6765
};

0 commit comments

Comments
 (0)