netlabel: shorter names for the NetLabel catmap funcs/structs
Historically the NetLabel LSM secattr catmap functions and data structures have had very long names which makes a mess of the NetLabel code and anyone who uses NetLabel. This patch renames the catmap functions and structures from "*_secattr_catmap_*" to just "*_catmap_*" which improves things greatly. There are no substantial code or logic changes in this patch. Signed-off-by: Paul Moore <pmoore@redhat.com> Tested-by: Casey Schaufler <casey@schaufler-ca.com>
This commit is contained in:
parent
d960a6184a
commit
4fbe63d1c7
|
@ -139,7 +139,7 @@ struct netlbl_lsm_cache {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct netlbl_lsm_secattr_catmap - NetLabel LSM secattr category bitmap
|
* struct netlbl_lsm_catmap - NetLabel LSM secattr category bitmap
|
||||||
* @startbit: the value of the lowest order bit in the bitmap
|
* @startbit: the value of the lowest order bit in the bitmap
|
||||||
* @bitmap: the category bitmap
|
* @bitmap: the category bitmap
|
||||||
* @next: pointer to the next bitmap "node" or NULL
|
* @next: pointer to the next bitmap "node" or NULL
|
||||||
|
@ -162,10 +162,10 @@ struct netlbl_lsm_cache {
|
||||||
#define NETLBL_CATMAP_SIZE (NETLBL_CATMAP_MAPSIZE * \
|
#define NETLBL_CATMAP_SIZE (NETLBL_CATMAP_MAPSIZE * \
|
||||||
NETLBL_CATMAP_MAPCNT)
|
NETLBL_CATMAP_MAPCNT)
|
||||||
#define NETLBL_CATMAP_BIT (NETLBL_CATMAP_MAPTYPE)0x01
|
#define NETLBL_CATMAP_BIT (NETLBL_CATMAP_MAPTYPE)0x01
|
||||||
struct netlbl_lsm_secattr_catmap {
|
struct netlbl_lsm_catmap {
|
||||||
u32 startbit;
|
u32 startbit;
|
||||||
NETLBL_CATMAP_MAPTYPE bitmap[NETLBL_CATMAP_MAPCNT];
|
NETLBL_CATMAP_MAPTYPE bitmap[NETLBL_CATMAP_MAPCNT];
|
||||||
struct netlbl_lsm_secattr_catmap *next;
|
struct netlbl_lsm_catmap *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -209,7 +209,7 @@ struct netlbl_lsm_secattr {
|
||||||
struct netlbl_lsm_cache *cache;
|
struct netlbl_lsm_cache *cache;
|
||||||
struct {
|
struct {
|
||||||
struct {
|
struct {
|
||||||
struct netlbl_lsm_secattr_catmap *cat;
|
struct netlbl_lsm_catmap *cat;
|
||||||
u32 lvl;
|
u32 lvl;
|
||||||
} mls;
|
} mls;
|
||||||
u32 secid;
|
u32 secid;
|
||||||
|
@ -258,7 +258,7 @@ static inline void netlbl_secattr_cache_free(struct netlbl_lsm_cache *cache)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* netlbl_secattr_catmap_alloc - Allocate a LSM secattr catmap
|
* netlbl_catmap_alloc - Allocate a LSM secattr catmap
|
||||||
* @flags: memory allocation flags
|
* @flags: memory allocation flags
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
|
@ -266,24 +266,22 @@ static inline void netlbl_secattr_cache_free(struct netlbl_lsm_cache *cache)
|
||||||
* on failure.
|
* on failure.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static inline struct netlbl_lsm_secattr_catmap *netlbl_secattr_catmap_alloc(
|
static inline struct netlbl_lsm_catmap *netlbl_catmap_alloc(gfp_t flags)
|
||||||
gfp_t flags)
|
|
||||||
{
|
{
|
||||||
return kzalloc(sizeof(struct netlbl_lsm_secattr_catmap), flags);
|
return kzalloc(sizeof(struct netlbl_lsm_catmap), flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* netlbl_secattr_catmap_free - Free a LSM secattr catmap
|
* netlbl_catmap_free - Free a LSM secattr catmap
|
||||||
* @catmap: the category bitmap
|
* @catmap: the category bitmap
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Free a LSM secattr catmap.
|
* Free a LSM secattr catmap.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static inline void netlbl_secattr_catmap_free(
|
static inline void netlbl_catmap_free(struct netlbl_lsm_catmap *catmap)
|
||||||
struct netlbl_lsm_secattr_catmap *catmap)
|
|
||||||
{
|
{
|
||||||
struct netlbl_lsm_secattr_catmap *iter;
|
struct netlbl_lsm_catmap *iter;
|
||||||
|
|
||||||
while (catmap) {
|
while (catmap) {
|
||||||
iter = catmap;
|
iter = catmap;
|
||||||
|
@ -321,7 +319,7 @@ static inline void netlbl_secattr_destroy(struct netlbl_lsm_secattr *secattr)
|
||||||
if (secattr->flags & NETLBL_SECATTR_CACHE)
|
if (secattr->flags & NETLBL_SECATTR_CACHE)
|
||||||
netlbl_secattr_cache_free(secattr->cache);
|
netlbl_secattr_cache_free(secattr->cache);
|
||||||
if (secattr->flags & NETLBL_SECATTR_MLS_CAT)
|
if (secattr->flags & NETLBL_SECATTR_MLS_CAT)
|
||||||
netlbl_secattr_catmap_free(secattr->attr.mls.cat);
|
netlbl_catmap_free(secattr->attr.mls.cat);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -390,24 +388,22 @@ int netlbl_cfg_cipsov4_map_add(u32 doi,
|
||||||
/*
|
/*
|
||||||
* LSM security attribute operations
|
* LSM security attribute operations
|
||||||
*/
|
*/
|
||||||
int netlbl_secattr_catmap_walk(struct netlbl_lsm_secattr_catmap *catmap,
|
int netlbl_catmap_walk(struct netlbl_lsm_catmap *catmap, u32 offset);
|
||||||
u32 offset);
|
int netlbl_catmap_walkrng(struct netlbl_lsm_catmap *catmap, u32 offset);
|
||||||
int netlbl_secattr_catmap_walk_rng(struct netlbl_lsm_secattr_catmap *catmap,
|
int netlbl_catmap_getlong(struct netlbl_lsm_catmap *catmap,
|
||||||
u32 offset);
|
u32 *offset,
|
||||||
int netlbl_secattr_catmap_getlong(struct netlbl_lsm_secattr_catmap *catmap,
|
unsigned long *bitmap);
|
||||||
u32 *offset,
|
int netlbl_catmap_setbit(struct netlbl_lsm_catmap **catmap,
|
||||||
unsigned long *bitmap);
|
u32 bit,
|
||||||
int netlbl_secattr_catmap_setbit(struct netlbl_lsm_secattr_catmap **catmap,
|
gfp_t flags);
|
||||||
u32 bit,
|
int netlbl_catmap_setrng(struct netlbl_lsm_catmap **catmap,
|
||||||
gfp_t flags);
|
u32 start,
|
||||||
int netlbl_secattr_catmap_setrng(struct netlbl_lsm_secattr_catmap **catmap,
|
u32 end,
|
||||||
u32 start,
|
gfp_t flags);
|
||||||
u32 end,
|
int netlbl_catmap_setlong(struct netlbl_lsm_catmap **catmap,
|
||||||
gfp_t flags);
|
u32 offset,
|
||||||
int netlbl_secattr_catmap_setlong(struct netlbl_lsm_secattr_catmap **catmap,
|
unsigned long bitmap,
|
||||||
u32 offset,
|
gfp_t flags);
|
||||||
unsigned long bitmap,
|
|
||||||
gfp_t flags);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* LSM protocol operations (NetLabel LSM/kernel API)
|
* LSM protocol operations (NetLabel LSM/kernel API)
|
||||||
|
@ -499,45 +495,39 @@ static inline int netlbl_cfg_cipsov4_map_add(u32 doi,
|
||||||
{
|
{
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
static inline int netlbl_secattr_catmap_walk(
|
static inline int netlbl_catmap_walk(struct netlbl_lsm_catmap *catmap,
|
||||||
struct netlbl_lsm_secattr_catmap *catmap,
|
u32 offset)
|
||||||
u32 offset)
|
|
||||||
{
|
{
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
static inline int netlbl_secattr_catmap_walk_rng(
|
static inline int netlbl_catmap_walkrng(struct netlbl_lsm_catmap *catmap,
|
||||||
struct netlbl_lsm_secattr_catmap *catmap,
|
u32 offset)
|
||||||
u32 offset)
|
|
||||||
{
|
{
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
static inline int netlbl_secattr_catmap_getlong(
|
static inline int netlbl_catmap_getlong(struct netlbl_lsm_catmap *catmap,
|
||||||
struct netlbl_lsm_secattr_catmap *catmap,
|
u32 *offset,
|
||||||
u32 *offset,
|
unsigned long *bitmap)
|
||||||
unsigned long *bitmap)
|
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static inline int netlbl_secattr_catmap_setbit(
|
static inline int netlbl_catmap_setbit(struct netlbl_lsm_catmap **catmap,
|
||||||
struct netlbl_lsm_secattr_catmap **catmap,
|
u32 bit,
|
||||||
u32 bit,
|
gfp_t flags)
|
||||||
gfp_t flags)
|
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static inline int netlbl_secattr_catmap_setrng(
|
static inline int netlbl_catmap_setrng(struct netlbl_lsm_catmap **catmap,
|
||||||
struct netlbl_lsm_secattr_catmap **catmap,
|
u32 start,
|
||||||
u32 start,
|
u32 end,
|
||||||
u32 end,
|
gfp_t flags)
|
||||||
gfp_t flags)
|
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static int netlbl_secattr_catmap_setlong(
|
static int netlbl_catmap_setlong(struct netlbl_lsm_catmap **catmap,
|
||||||
struct netlbl_lsm_secattr_catmap **catmap,
|
u32 offset,
|
||||||
u32 offset,
|
unsigned long bitmap,
|
||||||
unsigned long bitmap,
|
gfp_t flags)
|
||||||
gfp_t flags)
|
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -890,8 +890,8 @@ static int cipso_v4_map_cat_rbm_hton(const struct cipso_v4_doi *doi_def,
|
||||||
}
|
}
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
host_spot = netlbl_secattr_catmap_walk(secattr->attr.mls.cat,
|
host_spot = netlbl_catmap_walk(secattr->attr.mls.cat,
|
||||||
host_spot + 1);
|
host_spot + 1);
|
||||||
if (host_spot < 0)
|
if (host_spot < 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -973,7 +973,7 @@ static int cipso_v4_map_cat_rbm_ntoh(const struct cipso_v4_doi *doi_def,
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ret_val = netlbl_secattr_catmap_setbit(&secattr->attr.mls.cat,
|
ret_val = netlbl_catmap_setbit(&secattr->attr.mls.cat,
|
||||||
host_spot,
|
host_spot,
|
||||||
GFP_ATOMIC);
|
GFP_ATOMIC);
|
||||||
if (ret_val != 0)
|
if (ret_val != 0)
|
||||||
|
@ -1039,8 +1039,7 @@ static int cipso_v4_map_cat_enum_hton(const struct cipso_v4_doi *doi_def,
|
||||||
u32 cat_iter = 0;
|
u32 cat_iter = 0;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
cat = netlbl_secattr_catmap_walk(secattr->attr.mls.cat,
|
cat = netlbl_catmap_walk(secattr->attr.mls.cat, cat + 1);
|
||||||
cat + 1);
|
|
||||||
if (cat < 0)
|
if (cat < 0)
|
||||||
break;
|
break;
|
||||||
if ((cat_iter + 2) > net_cat_len)
|
if ((cat_iter + 2) > net_cat_len)
|
||||||
|
@ -1075,9 +1074,9 @@ static int cipso_v4_map_cat_enum_ntoh(const struct cipso_v4_doi *doi_def,
|
||||||
u32 iter;
|
u32 iter;
|
||||||
|
|
||||||
for (iter = 0; iter < net_cat_len; iter += 2) {
|
for (iter = 0; iter < net_cat_len; iter += 2) {
|
||||||
ret_val = netlbl_secattr_catmap_setbit(&secattr->attr.mls.cat,
|
ret_val = netlbl_catmap_setbit(&secattr->attr.mls.cat,
|
||||||
get_unaligned_be16(&net_cat[iter]),
|
get_unaligned_be16(&net_cat[iter]),
|
||||||
GFP_ATOMIC);
|
GFP_ATOMIC);
|
||||||
if (ret_val != 0)
|
if (ret_val != 0)
|
||||||
return ret_val;
|
return ret_val;
|
||||||
}
|
}
|
||||||
|
@ -1155,8 +1154,7 @@ static int cipso_v4_map_cat_rng_hton(const struct cipso_v4_doi *doi_def,
|
||||||
return -ENOSPC;
|
return -ENOSPC;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
iter = netlbl_secattr_catmap_walk(secattr->attr.mls.cat,
|
iter = netlbl_catmap_walk(secattr->attr.mls.cat, iter + 1);
|
||||||
iter + 1);
|
|
||||||
if (iter < 0)
|
if (iter < 0)
|
||||||
break;
|
break;
|
||||||
cat_size += (iter == 0 ? 0 : sizeof(u16));
|
cat_size += (iter == 0 ? 0 : sizeof(u16));
|
||||||
|
@ -1164,8 +1162,7 @@ static int cipso_v4_map_cat_rng_hton(const struct cipso_v4_doi *doi_def,
|
||||||
return -ENOSPC;
|
return -ENOSPC;
|
||||||
array[array_cnt++] = iter;
|
array[array_cnt++] = iter;
|
||||||
|
|
||||||
iter = netlbl_secattr_catmap_walk_rng(secattr->attr.mls.cat,
|
iter = netlbl_catmap_walkrng(secattr->attr.mls.cat, iter);
|
||||||
iter);
|
|
||||||
if (iter < 0)
|
if (iter < 0)
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
cat_size += sizeof(u16);
|
cat_size += sizeof(u16);
|
||||||
|
@ -1217,10 +1214,10 @@ static int cipso_v4_map_cat_rng_ntoh(const struct cipso_v4_doi *doi_def,
|
||||||
else
|
else
|
||||||
cat_low = 0;
|
cat_low = 0;
|
||||||
|
|
||||||
ret_val = netlbl_secattr_catmap_setrng(&secattr->attr.mls.cat,
|
ret_val = netlbl_catmap_setrng(&secattr->attr.mls.cat,
|
||||||
cat_low,
|
cat_low,
|
||||||
cat_high,
|
cat_high,
|
||||||
GFP_ATOMIC);
|
GFP_ATOMIC);
|
||||||
if (ret_val != 0)
|
if (ret_val != 0)
|
||||||
return ret_val;
|
return ret_val;
|
||||||
}
|
}
|
||||||
|
@ -1340,7 +1337,7 @@ static int cipso_v4_parsetag_rbm(const struct cipso_v4_doi *doi_def,
|
||||||
tag_len - 4,
|
tag_len - 4,
|
||||||
secattr);
|
secattr);
|
||||||
if (ret_val != 0) {
|
if (ret_val != 0) {
|
||||||
netlbl_secattr_catmap_free(secattr->attr.mls.cat);
|
netlbl_catmap_free(secattr->attr.mls.cat);
|
||||||
return ret_val;
|
return ret_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1431,7 +1428,7 @@ static int cipso_v4_parsetag_enum(const struct cipso_v4_doi *doi_def,
|
||||||
tag_len - 4,
|
tag_len - 4,
|
||||||
secattr);
|
secattr);
|
||||||
if (ret_val != 0) {
|
if (ret_val != 0) {
|
||||||
netlbl_secattr_catmap_free(secattr->attr.mls.cat);
|
netlbl_catmap_free(secattr->attr.mls.cat);
|
||||||
return ret_val;
|
return ret_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1521,7 +1518,7 @@ static int cipso_v4_parsetag_rng(const struct cipso_v4_doi *doi_def,
|
||||||
tag_len - 4,
|
tag_len - 4,
|
||||||
secattr);
|
secattr);
|
||||||
if (ret_val != 0) {
|
if (ret_val != 0) {
|
||||||
netlbl_secattr_catmap_free(secattr->attr.mls.cat);
|
netlbl_catmap_free(secattr->attr.mls.cat);
|
||||||
return ret_val;
|
return ret_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -410,7 +410,7 @@ out_entry:
|
||||||
#define _CM_F_WALK 0x00000002
|
#define _CM_F_WALK 0x00000002
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _netlbl_secattr_catmap_getnode - Get a individual node from a catmap
|
* _netlbl_catmap_getnode - Get a individual node from a catmap
|
||||||
* @catmap: pointer to the category bitmap
|
* @catmap: pointer to the category bitmap
|
||||||
* @offset: the requested offset
|
* @offset: the requested offset
|
||||||
* @cm_flags: catmap flags, see _CM_F_*
|
* @cm_flags: catmap flags, see _CM_F_*
|
||||||
|
@ -424,36 +424,36 @@ out_entry:
|
||||||
* be returned. Returns a pointer to the node on success, NULL on failure.
|
* be returned. Returns a pointer to the node on success, NULL on failure.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static struct netlbl_lsm_secattr_catmap *_netlbl_secattr_catmap_getnode(
|
static struct netlbl_lsm_catmap *_netlbl_catmap_getnode(
|
||||||
struct netlbl_lsm_secattr_catmap **catmap,
|
struct netlbl_lsm_catmap **catmap,
|
||||||
u32 offset,
|
u32 offset,
|
||||||
unsigned int cm_flags,
|
unsigned int cm_flags,
|
||||||
gfp_t gfp_flags)
|
gfp_t gfp_flags)
|
||||||
{
|
{
|
||||||
struct netlbl_lsm_secattr_catmap *iter = *catmap;
|
struct netlbl_lsm_catmap *iter = *catmap;
|
||||||
struct netlbl_lsm_secattr_catmap *prev = NULL;
|
struct netlbl_lsm_catmap *prev = NULL;
|
||||||
|
|
||||||
if (iter == NULL)
|
if (iter == NULL)
|
||||||
goto secattr_catmap_getnode_alloc;
|
goto catmap_getnode_alloc;
|
||||||
if (offset < iter->startbit)
|
if (offset < iter->startbit)
|
||||||
goto secattr_catmap_getnode_walk;
|
goto catmap_getnode_walk;
|
||||||
while (iter && offset >= (iter->startbit + NETLBL_CATMAP_SIZE)) {
|
while (iter && offset >= (iter->startbit + NETLBL_CATMAP_SIZE)) {
|
||||||
prev = iter;
|
prev = iter;
|
||||||
iter = iter->next;
|
iter = iter->next;
|
||||||
}
|
}
|
||||||
if (iter == NULL || offset < iter->startbit)
|
if (iter == NULL || offset < iter->startbit)
|
||||||
goto secattr_catmap_getnode_walk;
|
goto catmap_getnode_walk;
|
||||||
|
|
||||||
return iter;
|
return iter;
|
||||||
|
|
||||||
secattr_catmap_getnode_walk:
|
catmap_getnode_walk:
|
||||||
if (cm_flags & _CM_F_WALK)
|
if (cm_flags & _CM_F_WALK)
|
||||||
return iter;
|
return iter;
|
||||||
secattr_catmap_getnode_alloc:
|
catmap_getnode_alloc:
|
||||||
if (!(cm_flags & _CM_F_ALLOC))
|
if (!(cm_flags & _CM_F_ALLOC))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
iter = netlbl_secattr_catmap_alloc(gfp_flags);
|
iter = netlbl_catmap_alloc(gfp_flags);
|
||||||
if (iter == NULL)
|
if (iter == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
iter->startbit = offset & ~(NETLBL_CATMAP_SIZE - 1);
|
iter->startbit = offset & ~(NETLBL_CATMAP_SIZE - 1);
|
||||||
|
@ -470,7 +470,7 @@ secattr_catmap_getnode_alloc:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* netlbl_secattr_catmap_walk - Walk a LSM secattr catmap looking for a bit
|
* netlbl_catmap_walk - Walk a LSM secattr catmap looking for a bit
|
||||||
* @catmap: the category bitmap
|
* @catmap: the category bitmap
|
||||||
* @offset: the offset to start searching at, in bits
|
* @offset: the offset to start searching at, in bits
|
||||||
*
|
*
|
||||||
|
@ -479,15 +479,14 @@ secattr_catmap_getnode_alloc:
|
||||||
* returns the spot of the first set bit or -ENOENT if no bits are set.
|
* returns the spot of the first set bit or -ENOENT if no bits are set.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int netlbl_secattr_catmap_walk(struct netlbl_lsm_secattr_catmap *catmap,
|
int netlbl_catmap_walk(struct netlbl_lsm_catmap *catmap, u32 offset)
|
||||||
u32 offset)
|
|
||||||
{
|
{
|
||||||
struct netlbl_lsm_secattr_catmap *iter = catmap;
|
struct netlbl_lsm_catmap *iter = catmap;
|
||||||
u32 idx;
|
u32 idx;
|
||||||
u32 bit;
|
u32 bit;
|
||||||
NETLBL_CATMAP_MAPTYPE bitmap;
|
NETLBL_CATMAP_MAPTYPE bitmap;
|
||||||
|
|
||||||
iter = _netlbl_secattr_catmap_getnode(&catmap, offset, _CM_F_WALK, 0);
|
iter = _netlbl_catmap_getnode(&catmap, offset, _CM_F_WALK, 0);
|
||||||
if (iter == NULL)
|
if (iter == NULL)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
if (offset > iter->startbit) {
|
if (offset > iter->startbit) {
|
||||||
|
@ -524,7 +523,7 @@ int netlbl_secattr_catmap_walk(struct netlbl_lsm_secattr_catmap *catmap,
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* netlbl_secattr_catmap_walk_rng - Find the end of a string of set bits
|
* netlbl_catmap_walkrng - Find the end of a string of set bits
|
||||||
* @catmap: the category bitmap
|
* @catmap: the category bitmap
|
||||||
* @offset: the offset to start searching at, in bits
|
* @offset: the offset to start searching at, in bits
|
||||||
*
|
*
|
||||||
|
@ -534,17 +533,16 @@ int netlbl_secattr_catmap_walk(struct netlbl_lsm_secattr_catmap *catmap,
|
||||||
* the end of the bitmap.
|
* the end of the bitmap.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int netlbl_secattr_catmap_walk_rng(struct netlbl_lsm_secattr_catmap *catmap,
|
int netlbl_catmap_walkrng(struct netlbl_lsm_catmap *catmap, u32 offset)
|
||||||
u32 offset)
|
|
||||||
{
|
{
|
||||||
struct netlbl_lsm_secattr_catmap *iter;
|
struct netlbl_lsm_catmap *iter;
|
||||||
struct netlbl_lsm_secattr_catmap *prev = NULL;
|
struct netlbl_lsm_catmap *prev = NULL;
|
||||||
u32 idx;
|
u32 idx;
|
||||||
u32 bit;
|
u32 bit;
|
||||||
NETLBL_CATMAP_MAPTYPE bitmask;
|
NETLBL_CATMAP_MAPTYPE bitmask;
|
||||||
NETLBL_CATMAP_MAPTYPE bitmap;
|
NETLBL_CATMAP_MAPTYPE bitmap;
|
||||||
|
|
||||||
iter = _netlbl_secattr_catmap_getnode(&catmap, offset, _CM_F_WALK, 0);
|
iter = _netlbl_catmap_getnode(&catmap, offset, _CM_F_WALK, 0);
|
||||||
if (iter == NULL)
|
if (iter == NULL)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
if (offset > iter->startbit) {
|
if (offset > iter->startbit) {
|
||||||
|
@ -584,7 +582,7 @@ int netlbl_secattr_catmap_walk_rng(struct netlbl_lsm_secattr_catmap *catmap,
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* netlbl_secattr_catmap_getlong - Export an unsigned long bitmap
|
* netlbl_catmap_getlong - Export an unsigned long bitmap
|
||||||
* @catmap: pointer to the category bitmap
|
* @catmap: pointer to the category bitmap
|
||||||
* @offset: pointer to the requested offset
|
* @offset: pointer to the requested offset
|
||||||
* @bitmap: the exported bitmap
|
* @bitmap: the exported bitmap
|
||||||
|
@ -597,11 +595,11 @@ int netlbl_secattr_catmap_walk_rng(struct netlbl_lsm_secattr_catmap *catmap,
|
||||||
* Returns zero on sucess, negative values on failure.
|
* Returns zero on sucess, negative values on failure.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int netlbl_secattr_catmap_getlong(struct netlbl_lsm_secattr_catmap *catmap,
|
int netlbl_catmap_getlong(struct netlbl_lsm_catmap *catmap,
|
||||||
u32 *offset,
|
u32 *offset,
|
||||||
unsigned long *bitmap)
|
unsigned long *bitmap)
|
||||||
{
|
{
|
||||||
struct netlbl_lsm_secattr_catmap *iter;
|
struct netlbl_lsm_catmap *iter;
|
||||||
u32 off = *offset;
|
u32 off = *offset;
|
||||||
u32 idx;
|
u32 idx;
|
||||||
|
|
||||||
|
@ -613,7 +611,7 @@ int netlbl_secattr_catmap_getlong(struct netlbl_lsm_secattr_catmap *catmap,
|
||||||
off = catmap->startbit;
|
off = catmap->startbit;
|
||||||
*offset = off;
|
*offset = off;
|
||||||
}
|
}
|
||||||
iter = _netlbl_secattr_catmap_getnode(&catmap, off, _CM_F_NONE, 0);
|
iter = _netlbl_catmap_getnode(&catmap, off, _CM_F_NONE, 0);
|
||||||
if (iter == NULL) {
|
if (iter == NULL) {
|
||||||
*offset = (u32)-1;
|
*offset = (u32)-1;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -632,7 +630,7 @@ int netlbl_secattr_catmap_getlong(struct netlbl_lsm_secattr_catmap *catmap,
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* netlbl_secattr_catmap_setbit - Set a bit in a LSM secattr catmap
|
* netlbl_catmap_setbit - Set a bit in a LSM secattr catmap
|
||||||
* @catmap: pointer to the category bitmap
|
* @catmap: pointer to the category bitmap
|
||||||
* @bit: the bit to set
|
* @bit: the bit to set
|
||||||
* @flags: memory allocation flags
|
* @flags: memory allocation flags
|
||||||
|
@ -642,14 +640,14 @@ int netlbl_secattr_catmap_getlong(struct netlbl_lsm_secattr_catmap *catmap,
|
||||||
* negative values on failure.
|
* negative values on failure.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int netlbl_secattr_catmap_setbit(struct netlbl_lsm_secattr_catmap **catmap,
|
int netlbl_catmap_setbit(struct netlbl_lsm_catmap **catmap,
|
||||||
u32 bit,
|
u32 bit,
|
||||||
gfp_t flags)
|
gfp_t flags)
|
||||||
{
|
{
|
||||||
struct netlbl_lsm_secattr_catmap *iter;
|
struct netlbl_lsm_catmap *iter;
|
||||||
u32 idx;
|
u32 idx;
|
||||||
|
|
||||||
iter = _netlbl_secattr_catmap_getnode(catmap, bit, _CM_F_ALLOC, flags);
|
iter = _netlbl_catmap_getnode(catmap, bit, _CM_F_ALLOC, flags);
|
||||||
if (iter == NULL)
|
if (iter == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
@ -661,7 +659,7 @@ int netlbl_secattr_catmap_setbit(struct netlbl_lsm_secattr_catmap **catmap,
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* netlbl_secattr_catmap_setrng - Set a range of bits in a LSM secattr catmap
|
* netlbl_catmap_setrng - Set a range of bits in a LSM secattr catmap
|
||||||
* @catmap: pointer to the category bitmap
|
* @catmap: pointer to the category bitmap
|
||||||
* @start: the starting bit
|
* @start: the starting bit
|
||||||
* @end: the last bit in the string
|
* @end: the last bit in the string
|
||||||
|
@ -672,10 +670,10 @@ int netlbl_secattr_catmap_setbit(struct netlbl_lsm_secattr_catmap **catmap,
|
||||||
* on success, negative values on failure.
|
* on success, negative values on failure.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int netlbl_secattr_catmap_setrng(struct netlbl_lsm_secattr_catmap **catmap,
|
int netlbl_catmap_setrng(struct netlbl_lsm_catmap **catmap,
|
||||||
u32 start,
|
u32 start,
|
||||||
u32 end,
|
u32 end,
|
||||||
gfp_t flags)
|
gfp_t flags)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
u32 spot = start;
|
u32 spot = start;
|
||||||
|
@ -683,22 +681,20 @@ int netlbl_secattr_catmap_setrng(struct netlbl_lsm_secattr_catmap **catmap,
|
||||||
while (rc == 0 && spot <= end) {
|
while (rc == 0 && spot <= end) {
|
||||||
if (((spot & (BITS_PER_LONG - 1)) != 0) &&
|
if (((spot & (BITS_PER_LONG - 1)) != 0) &&
|
||||||
((end - spot) > BITS_PER_LONG)) {
|
((end - spot) > BITS_PER_LONG)) {
|
||||||
rc = netlbl_secattr_catmap_setlong(catmap,
|
rc = netlbl_catmap_setlong(catmap,
|
||||||
spot,
|
spot,
|
||||||
(unsigned long)-1,
|
(unsigned long)-1,
|
||||||
flags);
|
flags);
|
||||||
spot += BITS_PER_LONG;
|
spot += BITS_PER_LONG;
|
||||||
} else
|
} else
|
||||||
rc = netlbl_secattr_catmap_setbit(catmap,
|
rc = netlbl_catmap_setbit(catmap, spot++, flags);
|
||||||
spot++,
|
|
||||||
flags);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* netlbl_secattr_catmap_setlong - Import an unsigned long bitmap
|
* netlbl_catmap_setlong - Import an unsigned long bitmap
|
||||||
* @catmap: pointer to the category bitmap
|
* @catmap: pointer to the category bitmap
|
||||||
* @offset: offset to the start of the imported bitmap
|
* @offset: offset to the start of the imported bitmap
|
||||||
* @bitmap: the bitmap to import
|
* @bitmap: the bitmap to import
|
||||||
|
@ -710,20 +706,19 @@ int netlbl_secattr_catmap_setrng(struct netlbl_lsm_secattr_catmap **catmap,
|
||||||
* on success, negative values on failure.
|
* on success, negative values on failure.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int netlbl_secattr_catmap_setlong(struct netlbl_lsm_secattr_catmap **catmap,
|
int netlbl_catmap_setlong(struct netlbl_lsm_catmap **catmap,
|
||||||
u32 offset,
|
u32 offset,
|
||||||
unsigned long bitmap,
|
unsigned long bitmap,
|
||||||
gfp_t flags)
|
gfp_t flags)
|
||||||
{
|
{
|
||||||
struct netlbl_lsm_secattr_catmap *iter;
|
struct netlbl_lsm_catmap *iter;
|
||||||
u32 idx;
|
u32 idx;
|
||||||
|
|
||||||
/* only allow aligned offsets */
|
/* only allow aligned offsets */
|
||||||
if ((offset & (BITS_PER_LONG - 1)) != 0)
|
if ((offset & (BITS_PER_LONG - 1)) != 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
iter = _netlbl_secattr_catmap_getnode(catmap,
|
iter = _netlbl_catmap_getnode(catmap, offset, _CM_F_ALLOC, flags);
|
||||||
offset, _CM_F_ALLOC, flags);
|
|
||||||
if (iter == NULL)
|
if (iter == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,7 @@ int ebitmap_cpy(struct ebitmap *dst, struct ebitmap *src)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int ebitmap_netlbl_export(struct ebitmap *ebmap,
|
int ebitmap_netlbl_export(struct ebitmap *ebmap,
|
||||||
struct netlbl_lsm_secattr_catmap **catmap)
|
struct netlbl_lsm_catmap **catmap)
|
||||||
{
|
{
|
||||||
struct ebitmap_node *e_iter = ebmap->node;
|
struct ebitmap_node *e_iter = ebmap->node;
|
||||||
unsigned long e_map;
|
unsigned long e_map;
|
||||||
|
@ -100,7 +100,7 @@ int ebitmap_netlbl_export(struct ebitmap *ebmap,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*catmap != NULL)
|
if (*catmap != NULL)
|
||||||
netlbl_secattr_catmap_free(*catmap);
|
netlbl_catmap_free(*catmap);
|
||||||
*catmap = NULL;
|
*catmap = NULL;
|
||||||
|
|
||||||
while (e_iter) {
|
while (e_iter) {
|
||||||
|
@ -108,10 +108,10 @@ int ebitmap_netlbl_export(struct ebitmap *ebmap,
|
||||||
for (iter = 0; iter < EBITMAP_UNIT_NUMS; iter++) {
|
for (iter = 0; iter < EBITMAP_UNIT_NUMS; iter++) {
|
||||||
e_map = e_iter->maps[iter];
|
e_map = e_iter->maps[iter];
|
||||||
if (e_map != 0) {
|
if (e_map != 0) {
|
||||||
rc = netlbl_secattr_catmap_setlong(catmap,
|
rc = netlbl_catmap_setlong(catmap,
|
||||||
offset,
|
offset,
|
||||||
e_map,
|
e_map,
|
||||||
GFP_ATOMIC);
|
GFP_ATOMIC);
|
||||||
if (rc != 0)
|
if (rc != 0)
|
||||||
goto netlbl_export_failure;
|
goto netlbl_export_failure;
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ int ebitmap_netlbl_export(struct ebitmap *ebmap,
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
netlbl_export_failure:
|
netlbl_export_failure:
|
||||||
netlbl_secattr_catmap_free(*catmap);
|
netlbl_catmap_free(*catmap);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ netlbl_export_failure:
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int ebitmap_netlbl_import(struct ebitmap *ebmap,
|
int ebitmap_netlbl_import(struct ebitmap *ebmap,
|
||||||
struct netlbl_lsm_secattr_catmap *catmap)
|
struct netlbl_lsm_catmap *catmap)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
struct ebitmap_node *e_iter = NULL;
|
struct ebitmap_node *e_iter = NULL;
|
||||||
|
@ -147,7 +147,7 @@ int ebitmap_netlbl_import(struct ebitmap *ebmap,
|
||||||
unsigned long bitmap;
|
unsigned long bitmap;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
rc = netlbl_secattr_catmap_getlong(catmap, &offset, &bitmap);
|
rc = netlbl_catmap_getlong(catmap, &offset, &bitmap);
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
goto netlbl_import_failure;
|
goto netlbl_import_failure;
|
||||||
if (offset == (u32)-1)
|
if (offset == (u32)-1)
|
||||||
|
|
|
@ -132,17 +132,17 @@ int ebitmap_write(struct ebitmap *e, void *fp);
|
||||||
|
|
||||||
#ifdef CONFIG_NETLABEL
|
#ifdef CONFIG_NETLABEL
|
||||||
int ebitmap_netlbl_export(struct ebitmap *ebmap,
|
int ebitmap_netlbl_export(struct ebitmap *ebmap,
|
||||||
struct netlbl_lsm_secattr_catmap **catmap);
|
struct netlbl_lsm_catmap **catmap);
|
||||||
int ebitmap_netlbl_import(struct ebitmap *ebmap,
|
int ebitmap_netlbl_import(struct ebitmap *ebmap,
|
||||||
struct netlbl_lsm_secattr_catmap *catmap);
|
struct netlbl_lsm_catmap *catmap);
|
||||||
#else
|
#else
|
||||||
static inline int ebitmap_netlbl_export(struct ebitmap *ebmap,
|
static inline int ebitmap_netlbl_export(struct ebitmap *ebmap,
|
||||||
struct netlbl_lsm_secattr_catmap **catmap)
|
struct netlbl_lsm_catmap **catmap)
|
||||||
{
|
{
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
static inline int ebitmap_netlbl_import(struct ebitmap *ebmap,
|
static inline int ebitmap_netlbl_import(struct ebitmap *ebmap,
|
||||||
struct netlbl_lsm_secattr_catmap *catmap)
|
struct netlbl_lsm_catmap *catmap)
|
||||||
{
|
{
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
|
@ -441,10 +441,10 @@ int smk_netlbl_mls(int level, char *catset, struct netlbl_lsm_secattr *sap,
|
||||||
for (m = 0x80; m != 0; m >>= 1, cat++) {
|
for (m = 0x80; m != 0; m >>= 1, cat++) {
|
||||||
if ((m & *cp) == 0)
|
if ((m & *cp) == 0)
|
||||||
continue;
|
continue;
|
||||||
rc = netlbl_secattr_catmap_setbit(&sap->attr.mls.cat,
|
rc = netlbl_catmap_setbit(&sap->attr.mls.cat,
|
||||||
cat, GFP_ATOMIC);
|
cat, GFP_ATOMIC);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
netlbl_secattr_catmap_free(sap->attr.mls.cat);
|
netlbl_catmap_free(sap->attr.mls.cat);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3091,9 +3091,9 @@ static struct smack_known *smack_from_secattr(struct netlbl_lsm_secattr *sap,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
for (acat = -1, kcat = -1; acat == kcat; ) {
|
for (acat = -1, kcat = -1; acat == kcat; ) {
|
||||||
acat = netlbl_secattr_catmap_walk(
|
acat = netlbl_catmap_walk(sap->attr.mls.cat,
|
||||||
sap->attr.mls.cat, acat + 1);
|
acat + 1);
|
||||||
kcat = netlbl_secattr_catmap_walk(
|
kcat = netlbl_catmap_walk(
|
||||||
skp->smk_netlabel.attr.mls.cat,
|
skp->smk_netlabel.attr.mls.cat,
|
||||||
kcat + 1);
|
kcat + 1);
|
||||||
if (acat < 0 || kcat < 0)
|
if (acat < 0 || kcat < 0)
|
||||||
|
|
|
@ -777,7 +777,7 @@ static int cipso_seq_show(struct seq_file *s, void *v)
|
||||||
struct list_head *list = v;
|
struct list_head *list = v;
|
||||||
struct smack_known *skp =
|
struct smack_known *skp =
|
||||||
list_entry(list, struct smack_known, list);
|
list_entry(list, struct smack_known, list);
|
||||||
struct netlbl_lsm_secattr_catmap *cmp = skp->smk_netlabel.attr.mls.cat;
|
struct netlbl_lsm_catmap *cmp = skp->smk_netlabel.attr.mls.cat;
|
||||||
char sep = '/';
|
char sep = '/';
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -794,8 +794,8 @@ static int cipso_seq_show(struct seq_file *s, void *v)
|
||||||
|
|
||||||
seq_printf(s, "%s %3d", skp->smk_known, skp->smk_netlabel.attr.mls.lvl);
|
seq_printf(s, "%s %3d", skp->smk_known, skp->smk_netlabel.attr.mls.lvl);
|
||||||
|
|
||||||
for (i = netlbl_secattr_catmap_walk(cmp, 0); i >= 0;
|
for (i = netlbl_catmap_walk(cmp, 0); i >= 0;
|
||||||
i = netlbl_secattr_catmap_walk(cmp, i + 1)) {
|
i = netlbl_catmap_walk(cmp, i + 1)) {
|
||||||
seq_printf(s, "%c%d", sep, i);
|
seq_printf(s, "%c%d", sep, i);
|
||||||
sep = ',';
|
sep = ',';
|
||||||
}
|
}
|
||||||
|
@ -916,7 +916,7 @@ static ssize_t smk_set_cipso(struct file *file, const char __user *buf,
|
||||||
|
|
||||||
rc = smk_netlbl_mls(maplevel, mapcatset, &ncats, SMK_CIPSOLEN);
|
rc = smk_netlbl_mls(maplevel, mapcatset, &ncats, SMK_CIPSOLEN);
|
||||||
if (rc >= 0) {
|
if (rc >= 0) {
|
||||||
netlbl_secattr_catmap_free(skp->smk_netlabel.attr.mls.cat);
|
netlbl_catmap_free(skp->smk_netlabel.attr.mls.cat);
|
||||||
skp->smk_netlabel.attr.mls.cat = ncats.attr.mls.cat;
|
skp->smk_netlabel.attr.mls.cat = ncats.attr.mls.cat;
|
||||||
skp->smk_netlabel.attr.mls.lvl = ncats.attr.mls.lvl;
|
skp->smk_netlabel.attr.mls.lvl = ncats.attr.mls.lvl;
|
||||||
rc = count;
|
rc = count;
|
||||||
|
@ -966,14 +966,14 @@ static int cipso2_seq_show(struct seq_file *s, void *v)
|
||||||
struct list_head *list = v;
|
struct list_head *list = v;
|
||||||
struct smack_known *skp =
|
struct smack_known *skp =
|
||||||
list_entry(list, struct smack_known, list);
|
list_entry(list, struct smack_known, list);
|
||||||
struct netlbl_lsm_secattr_catmap *cmp = skp->smk_netlabel.attr.mls.cat;
|
struct netlbl_lsm_catmap *cmp = skp->smk_netlabel.attr.mls.cat;
|
||||||
char sep = '/';
|
char sep = '/';
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
seq_printf(s, "%s %3d", skp->smk_known, skp->smk_netlabel.attr.mls.lvl);
|
seq_printf(s, "%s %3d", skp->smk_known, skp->smk_netlabel.attr.mls.lvl);
|
||||||
|
|
||||||
for (i = netlbl_secattr_catmap_walk(cmp, 0); i >= 0;
|
for (i = netlbl_catmap_walk(cmp, 0); i >= 0;
|
||||||
i = netlbl_secattr_catmap_walk(cmp, i + 1)) {
|
i = netlbl_catmap_walk(cmp, i + 1)) {
|
||||||
seq_printf(s, "%c%d", sep, i);
|
seq_printf(s, "%c%d", sep, i);
|
||||||
sep = ',';
|
sep = ',';
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue