Commit 678ca9f7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'Smack-for-6.14' of https://github.com/cschaufler/smack-next

Pull smack update from Casey Schaufler:
 "One minor code improvement for v6.14"

* tag 'Smack-for-6.14' of https://github.com/cschaufler/smack-next:
  smack: deduplicate access to string conversion
parents 0ca0cf9f 6f71ad02
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -280,6 +280,7 @@ int smk_access(struct smack_known *, struct smack_known *,
int smk_tskacc(struct task_smack *, struct smack_known *,
	       u32, struct smk_audit_info *);
int smk_curacc(struct smack_known *, u32, struct smk_audit_info *);
int smack_str_from_perm(char *string, int access);
struct smack_known *smack_from_secid(const u32);
char *smk_parse_smack(const char *string, int len);
int smk_netlbl_mls(int, char *, struct netlbl_lsm_secattr *, int);
+8 −2
Original line number Diff line number Diff line
@@ -275,7 +275,6 @@ int smk_curacc(struct smack_known *obj_known,
	return smk_tskacc(tsp, obj_known, mode, a);
}

#ifdef CONFIG_AUDIT
/**
 * smack_str_from_perm : helper to transalate an int to a
 * readable string
@@ -283,7 +282,7 @@ int smk_curacc(struct smack_known *obj_known,
 * @access : the int
 *
 */
static inline void smack_str_from_perm(char *string, int access)
int smack_str_from_perm(char *string, int access)
{
	int i = 0;

@@ -299,8 +298,15 @@ static inline void smack_str_from_perm(char *string, int access)
		string[i++] = 't';
	if (access & MAY_LOCK)
		string[i++] = 'l';
	if (access & MAY_BRINGUP)
		string[i++] = 'b';
	if (i == 0)
		string[i++] = '-';
	string[i] = '\0';
	return i;
}

#ifdef CONFIG_AUDIT
/**
 * smack_log_callback - SMACK specific information
 * will be called by generic audit code
+1 −17
Original line number Diff line number Diff line
@@ -107,23 +107,7 @@ static char *smk_bu_mess[] = {

static void smk_bu_mode(int mode, char *s)
{
	int i = 0;

	if (mode & MAY_READ)
		s[i++] = 'r';
	if (mode & MAY_WRITE)
		s[i++] = 'w';
	if (mode & MAY_EXEC)
		s[i++] = 'x';
	if (mode & MAY_APPEND)
		s[i++] = 'a';
	if (mode & MAY_TRANSMUTE)
		s[i++] = 't';
	if (mode & MAY_LOCK)
		s[i++] = 'l';
	if (i == 0)
		s[i++] = '-';
	s[i] = '\0';
	smack_str_from_perm(s, mode);
}
#endif

+5 −21
Original line number Diff line number Diff line
@@ -562,6 +562,7 @@ static void smk_seq_stop(struct seq_file *s, void *v)

static void smk_rule_show(struct seq_file *s, struct smack_rule *srp, int max)
{
	char acc[SMK_NUM_ACCESS_TYPE + 1];
	/*
	 * Don't show any rules with label names too long for
	 * interface file (/smack/load or /smack/load2)
@@ -575,28 +576,11 @@ static void smk_rule_show(struct seq_file *s, struct smack_rule *srp, int max)
	if (srp->smk_access == 0)
		return;

	seq_printf(s, "%s %s",
	smack_str_from_perm(acc, srp->smk_access);
	seq_printf(s, "%s %s %s\n",
		   srp->smk_subject->smk_known,
		   srp->smk_object->smk_known);

	seq_putc(s, ' ');

	if (srp->smk_access & MAY_READ)
		seq_putc(s, 'r');
	if (srp->smk_access & MAY_WRITE)
		seq_putc(s, 'w');
	if (srp->smk_access & MAY_EXEC)
		seq_putc(s, 'x');
	if (srp->smk_access & MAY_APPEND)
		seq_putc(s, 'a');
	if (srp->smk_access & MAY_TRANSMUTE)
		seq_putc(s, 't');
	if (srp->smk_access & MAY_LOCK)
		seq_putc(s, 'l');
	if (srp->smk_access & MAY_BRINGUP)
		seq_putc(s, 'b');

	seq_putc(s, '\n');
		   srp->smk_object->smk_known,
		   acc);
}

/*