]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
lsm: cleanup lsm_hooks.h
authorPaul Moore <paul@paul-moore.com>
Tue, 16 Jul 2024 01:22:51 +0000 (21:22 -0400)
committerPaul Moore <paul@paul-moore.com>
Mon, 12 Aug 2024 18:49:37 +0000 (14:49 -0400)
Some cleanup and style corrections for lsm_hooks.h.

 * Drop the lsm_inode_alloc() extern declaration, it is not needed.
 * Relocate lsm_get_xattr_slot() and extern variables in the file to
   improve grouping of related objects.
 * Don't use tabs to needlessly align structure fields.

Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
include/linux/lsm_hooks.h
security/security.c

index f1ca8082075a399157511e84cef2ec42c95c05ca..11ea0063228f0c298f94c1dd6ab342c5bb1720d2 100644 (file)
@@ -51,8 +51,8 @@ struct security_hook_heads {
  * Contains the information that identifies the LSM.
  */
 struct lsm_id {
-       const char      *name;
-       u64             id;
+       const char *name;
+       u64 id;
 };
 
 /*
@@ -60,49 +60,31 @@ struct lsm_id {
  * For use with generic list macros for common operations.
  */
 struct security_hook_list {
-       struct hlist_node               list;
-       struct hlist_head               *head;
-       union security_list_options     hook;
-       const struct lsm_id             *lsmid;
+       struct hlist_node list;
+       struct hlist_head *head;
+       union security_list_options hook;
+       const struct lsm_id *lsmid;
 } __randomize_layout;
 
 /*
  * Security blob size or offset data.
  */
 struct lsm_blob_sizes {
-       int     lbs_cred;
-       int     lbs_file;
-       int     lbs_ib;
-       int     lbs_inode;
-       int     lbs_sock;
-       int     lbs_superblock;
-       int     lbs_ipc;
-       int     lbs_key;
-       int     lbs_msg_msg;
-       int     lbs_perf_event;
-       int     lbs_task;
-       int     lbs_xattr_count; /* number of xattr slots in new_xattrs array */
-       int     lbs_tun_dev;
+       int lbs_cred;
+       int lbs_file;
+       int lbs_ib;
+       int lbs_inode;
+       int lbs_sock;
+       int lbs_superblock;
+       int lbs_ipc;
+       int lbs_key;
+       int lbs_msg_msg;
+       int lbs_perf_event;
+       int lbs_task;
+       int lbs_xattr_count; /* number of xattr slots in new_xattrs array */
+       int lbs_tun_dev;
 };
 
-/**
- * lsm_get_xattr_slot - Return the next available slot and increment the index
- * @xattrs: array storing LSM-provided xattrs
- * @xattr_count: number of already stored xattrs (updated)
- *
- * Retrieve the first available slot in the @xattrs array to fill with an xattr,
- * and increment @xattr_count.
- *
- * Return: The slot to fill in @xattrs if non-NULL, NULL otherwise.
- */
-static inline struct xattr *lsm_get_xattr_slot(struct xattr *xattrs,
-                                              int *xattr_count)
-{
-       if (unlikely(!xattrs))
-               return NULL;
-       return &xattrs[(*xattr_count)++];
-}
-
 /*
  * LSM_RET_VOID is used as the default value in LSM_HOOK definitions for void
  * LSM hooks (in include/linux/lsm_hook_defs.h).
@@ -118,9 +100,6 @@ static inline struct xattr *lsm_get_xattr_slot(struct xattr *xattrs,
 #define LSM_HOOK_INIT(HEAD, HOOK) \
        { .head = &security_hook_heads.HEAD, .hook = { .HEAD = HOOK } }
 
-extern struct security_hook_heads security_hook_heads;
-extern char *lsm_names;
-
 extern void security_add_hooks(struct security_hook_list *hooks, int count,
                               const struct lsm_id *lsmid);
 
@@ -142,9 +121,6 @@ struct lsm_info {
        struct lsm_blob_sizes *blobs; /* Optional: for blob sharing. */
 };
 
-extern struct lsm_info __start_lsm_info[], __end_lsm_info[];
-extern struct lsm_info __start_early_lsm_info[], __end_early_lsm_info[];
-
 #define DEFINE_LSM(lsm)                                                        \
        static struct lsm_info __lsm_##lsm                              \
                __used __section(".lsm_info.init")                      \
@@ -155,6 +131,29 @@ extern struct lsm_info __start_early_lsm_info[], __end_early_lsm_info[];
                __used __section(".early_lsm_info.init")                \
                __aligned(sizeof(unsigned long))
 
-extern int lsm_inode_alloc(struct inode *inode);
+/* DO NOT tamper with these variables outside of the LSM framework */
+extern char *lsm_names;
+extern struct security_hook_heads security_hook_heads;
+extern struct lsm_static_calls_table static_calls_table __ro_after_init;
+extern struct lsm_info __start_lsm_info[], __end_lsm_info[];
+extern struct lsm_info __start_early_lsm_info[], __end_early_lsm_info[];
+
+/**
+ * lsm_get_xattr_slot - Return the next available slot and increment the index
+ * @xattrs: array storing LSM-provided xattrs
+ * @xattr_count: number of already stored xattrs (updated)
+ *
+ * Retrieve the first available slot in the @xattrs array to fill with an xattr,
+ * and increment @xattr_count.
+ *
+ * Return: The slot to fill in @xattrs if non-NULL, NULL otherwise.
+ */
+static inline struct xattr *lsm_get_xattr_slot(struct xattr *xattrs,
+                                              int *xattr_count)
+{
+       if (unlikely(!xattrs))
+               return NULL;
+       return &xattrs[(*xattr_count)++];
+}
 
 #endif /* ! __LINUX_LSM_HOOKS_H */
index 338e0d243a3c39c4fd312f0140ffa7ca1b554590..b316e6586be200d35302890f8c45a16afdd1f482 100644 (file)
@@ -689,7 +689,7 @@ static int lsm_file_alloc(struct file *file)
  *
  * Returns 0, or -ENOMEM if memory can't be allocated.
  */
-int lsm_inode_alloc(struct inode *inode)
+static int lsm_inode_alloc(struct inode *inode)
 {
        if (!lsm_inode_cache) {
                inode->i_security = NULL;