Commit 6f7dac11 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'selinux-pr-20180814' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux

Pull SELinux updates from Paul Moore:
 "There are 16 patches in here but really only one that is of any
  significance. That one patch is by nixiaoming and fixes a few places
  where we were not properly cleaning up dentry and inode objects in the
  selinuxfs error handling code. The rest are either printk->pr_*
  conversions, constification tweaks, and a minor tweak to MAINTAINERS.

  Everything passes the selinux-testsuite and looks to merge cleanly
  against your master branch"

* tag 'selinux-pr-20180814' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux:
  selinux: cleanup dentry and inodes on error in selinuxfs
  selinux: constify write_op[]
  selinux: Cleanup printk logging in netnode
  selinux: Cleanup printk logging in avc
  selinux: Cleanup printk logging in netif
  selinux: Cleanup printk logging in netport
  selinux: Cleanup printk logging in sidtab
  selinux: Cleanup printk logging in netlink
  selinux: Cleanup printk logging in selinuxfs
  selinux: Cleanup printk logging in services
  selinux: Cleanup printk logging in avtab
  selinux: Cleanup printk logging in hooks
  selinux: Cleanup printk logging in policydb
  selinux: Cleanup printk logging in ebitmap
  selinux: Cleanup printk logging in conditional
  MAINTAINERS: update the LSM and SELinux subsystems
parents 92d4a036 7e4237fa
...@@ -12799,6 +12799,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git ...@@ -12799,6 +12799,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
W: http://kernsec.org/ W: http://kernsec.org/
S: Supported S: Supported
F: security/ F: security/
X: security/selinux/
SELINUX SECURITY MODULE SELINUX SECURITY MODULE
M: Paul Moore <paul@paul-moore.com> M: Paul Moore <paul@paul-moore.com>
......
...@@ -650,7 +650,7 @@ static int avc_latest_notif_update(struct selinux_avc *avc, ...@@ -650,7 +650,7 @@ static int avc_latest_notif_update(struct selinux_avc *avc,
spin_lock_irqsave(&notif_lock, flag); spin_lock_irqsave(&notif_lock, flag);
if (is_insert) { if (is_insert) {
if (seqno < avc->avc_cache.latest_notif) { if (seqno < avc->avc_cache.latest_notif) {
printk(KERN_WARNING "SELinux: avc: seqno %d < latest_notif %d\n", pr_warn("SELinux: avc: seqno %d < latest_notif %d\n",
seqno, avc->avc_cache.latest_notif); seqno, avc->avc_cache.latest_notif);
ret = -EAGAIN; ret = -EAGAIN;
} }
......
...@@ -530,7 +530,7 @@ static int sb_finish_set_opts(struct super_block *sb) ...@@ -530,7 +530,7 @@ static int sb_finish_set_opts(struct super_block *sb)
the first boot of the SELinux kernel before we have the first boot of the SELinux kernel before we have
assigned xattr values to the filesystem. */ assigned xattr values to the filesystem. */
if (!(root_inode->i_opflags & IOP_XATTR)) { if (!(root_inode->i_opflags & IOP_XATTR)) {
printk(KERN_WARNING "SELinux: (dev %s, type %s) has no " pr_warn("SELinux: (dev %s, type %s) has no "
"xattr support\n", sb->s_id, sb->s_type->name); "xattr support\n", sb->s_id, sb->s_type->name);
rc = -EOPNOTSUPP; rc = -EOPNOTSUPP;
goto out; goto out;
...@@ -539,11 +539,11 @@ static int sb_finish_set_opts(struct super_block *sb) ...@@ -539,11 +539,11 @@ static int sb_finish_set_opts(struct super_block *sb)
rc = __vfs_getxattr(root, root_inode, XATTR_NAME_SELINUX, NULL, 0); rc = __vfs_getxattr(root, root_inode, XATTR_NAME_SELINUX, NULL, 0);
if (rc < 0 && rc != -ENODATA) { if (rc < 0 && rc != -ENODATA) {
if (rc == -EOPNOTSUPP) if (rc == -EOPNOTSUPP)
printk(KERN_WARNING "SELinux: (dev %s, type " pr_warn("SELinux: (dev %s, type "
"%s) has no security xattr handler\n", "%s) has no security xattr handler\n",
sb->s_id, sb->s_type->name); sb->s_id, sb->s_type->name);
else else
printk(KERN_WARNING "SELinux: (dev %s, type " pr_warn("SELinux: (dev %s, type "
"%s) getxattr errno %d\n", sb->s_id, "%s) getxattr errno %d\n", sb->s_id,
sb->s_type->name, -rc); sb->s_type->name, -rc);
goto out; goto out;
...@@ -742,7 +742,7 @@ static int selinux_set_mnt_opts(struct super_block *sb, ...@@ -742,7 +742,7 @@ static int selinux_set_mnt_opts(struct super_block *sb,
goto out; goto out;
} }
rc = -EINVAL; rc = -EINVAL;
printk(KERN_WARNING "SELinux: Unable to set superblock options " pr_warn("SELinux: Unable to set superblock options "
"before the security server is initialized\n"); "before the security server is initialized\n");
goto out; goto out;
} }
...@@ -784,7 +784,7 @@ static int selinux_set_mnt_opts(struct super_block *sb, ...@@ -784,7 +784,7 @@ static int selinux_set_mnt_opts(struct super_block *sb,
mount_options[i], &sid, mount_options[i], &sid,
GFP_KERNEL); GFP_KERNEL);
if (rc) { if (rc) {
printk(KERN_WARNING "SELinux: security_context_str_to_sid" pr_warn("SELinux: security_context_str_to_sid"
"(%s) failed for (dev %s, type %s) errno=%d\n", "(%s) failed for (dev %s, type %s) errno=%d\n",
mount_options[i], sb->s_id, name, rc); mount_options[i], sb->s_id, name, rc);
goto out; goto out;
...@@ -860,8 +860,7 @@ static int selinux_set_mnt_opts(struct super_block *sb, ...@@ -860,8 +860,7 @@ static int selinux_set_mnt_opts(struct super_block *sb,
*/ */
rc = security_fs_use(&selinux_state, sb); rc = security_fs_use(&selinux_state, sb);
if (rc) { if (rc) {
printk(KERN_WARNING pr_warn("%s: security_fs_use(%s) returned %d\n",
"%s: security_fs_use(%s) returned %d\n",
__func__, sb->s_type->name, rc); __func__, sb->s_type->name, rc);
goto out; goto out;
} }
...@@ -947,7 +946,7 @@ static int selinux_set_mnt_opts(struct super_block *sb, ...@@ -947,7 +946,7 @@ static int selinux_set_mnt_opts(struct super_block *sb,
if (sbsec->behavior != SECURITY_FS_USE_XATTR && if (sbsec->behavior != SECURITY_FS_USE_XATTR &&
sbsec->behavior != SECURITY_FS_USE_NATIVE) { sbsec->behavior != SECURITY_FS_USE_NATIVE) {
rc = -EINVAL; rc = -EINVAL;
printk(KERN_WARNING "SELinux: defcontext option is " pr_warn("SELinux: defcontext option is "
"invalid for this filesystem type\n"); "invalid for this filesystem type\n");
goto out; goto out;
} }
...@@ -969,7 +968,7 @@ static int selinux_set_mnt_opts(struct super_block *sb, ...@@ -969,7 +968,7 @@ static int selinux_set_mnt_opts(struct super_block *sb,
return rc; return rc;
out_double_mount: out_double_mount:
rc = -EINVAL; rc = -EINVAL;
printk(KERN_WARNING "SELinux: mount invalid. Same superblock, different " pr_warn("SELinux: mount invalid. Same superblock, different "
"security settings for (dev %s, type %s)\n", sb->s_id, name); "security settings for (dev %s, type %s)\n", sb->s_id, name);
goto out; goto out;
} }
...@@ -998,7 +997,7 @@ static int selinux_cmp_sb_context(const struct super_block *oldsb, ...@@ -998,7 +997,7 @@ static int selinux_cmp_sb_context(const struct super_block *oldsb,
} }
return 0; return 0;
mismatch: mismatch:
printk(KERN_WARNING "SELinux: mount invalid. Same superblock, " pr_warn("SELinux: mount invalid. Same superblock, "
"different security settings for (dev %s, " "different security settings for (dev %s, "
"type %s)\n", newsb->s_id, newsb->s_type->name); "type %s)\n", newsb->s_id, newsb->s_type->name);
return -EBUSY; return -EBUSY;
...@@ -1106,7 +1105,7 @@ static int selinux_parse_opts_str(char *options, ...@@ -1106,7 +1105,7 @@ static int selinux_parse_opts_str(char *options,
case Opt_context: case Opt_context:
if (context || defcontext) { if (context || defcontext) {
rc = -EINVAL; rc = -EINVAL;
printk(KERN_WARNING SEL_MOUNT_FAIL_MSG); pr_warn(SEL_MOUNT_FAIL_MSG);
goto out_err; goto out_err;
} }
context = match_strdup(&args[0]); context = match_strdup(&args[0]);
...@@ -1119,7 +1118,7 @@ static int selinux_parse_opts_str(char *options, ...@@ -1119,7 +1118,7 @@ static int selinux_parse_opts_str(char *options,
case Opt_fscontext: case Opt_fscontext:
if (fscontext) { if (fscontext) {
rc = -EINVAL; rc = -EINVAL;
printk(KERN_WARNING SEL_MOUNT_FAIL_MSG); pr_warn(SEL_MOUNT_FAIL_MSG);
goto out_err; goto out_err;
} }
fscontext = match_strdup(&args[0]); fscontext = match_strdup(&args[0]);
...@@ -1132,7 +1131,7 @@ static int selinux_parse_opts_str(char *options, ...@@ -1132,7 +1131,7 @@ static int selinux_parse_opts_str(char *options,
case Opt_rootcontext: case Opt_rootcontext:
if (rootcontext) { if (rootcontext) {
rc = -EINVAL; rc = -EINVAL;
printk(KERN_WARNING SEL_MOUNT_FAIL_MSG); pr_warn(SEL_MOUNT_FAIL_MSG);
goto out_err; goto out_err;
} }
rootcontext = match_strdup(&args[0]); rootcontext = match_strdup(&args[0]);
...@@ -1145,7 +1144,7 @@ static int selinux_parse_opts_str(char *options, ...@@ -1145,7 +1144,7 @@ static int selinux_parse_opts_str(char *options,
case Opt_defcontext: case Opt_defcontext:
if (context || defcontext) { if (context || defcontext) {
rc = -EINVAL; rc = -EINVAL;
printk(KERN_WARNING SEL_MOUNT_FAIL_MSG); pr_warn(SEL_MOUNT_FAIL_MSG);
goto out_err; goto out_err;
} }
defcontext = match_strdup(&args[0]); defcontext = match_strdup(&args[0]);
...@@ -1158,7 +1157,7 @@ static int selinux_parse_opts_str(char *options, ...@@ -1158,7 +1157,7 @@ static int selinux_parse_opts_str(char *options,
break; break;
default: default:
rc = -EINVAL; rc = -EINVAL;
printk(KERN_WARNING "SELinux: unknown mount option\n"); pr_warn("SELinux: unknown mount option\n");
goto out_err; goto out_err;
} }
...@@ -1623,7 +1622,7 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent ...@@ -1623,7 +1622,7 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent
dput(dentry); dput(dentry);
if (rc < 0) { if (rc < 0) {
if (rc != -ENODATA) { if (rc != -ENODATA) {
printk(KERN_WARNING "SELinux: %s: getxattr returned " pr_warn("SELinux: %s: getxattr returned "
"%d for dev=%s ino=%ld\n", __func__, "%d for dev=%s ino=%ld\n", __func__,
-rc, inode->i_sb->s_id, inode->i_ino); -rc, inode->i_sb->s_id, inode->i_ino);
kfree(context); kfree(context);
...@@ -1643,11 +1642,11 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent ...@@ -1643,11 +1642,11 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent
if (rc == -EINVAL) { if (rc == -EINVAL) {
if (printk_ratelimit()) if (printk_ratelimit())
printk(KERN_NOTICE "SELinux: inode=%lu on dev=%s was found to have an invalid " pr_notice("SELinux: inode=%lu on dev=%s was found to have an invalid "
"context=%s. This indicates you may need to relabel the inode or the " "context=%s. This indicates you may need to relabel the inode or the "
"filesystem in question.\n", ino, dev, context); "filesystem in question.\n", ino, dev, context);
} else { } else {
printk(KERN_WARNING "SELinux: %s: context_to_sid(%s) " pr_warn("SELinux: %s: context_to_sid(%s) "
"returned %d for dev=%s ino=%ld\n", "returned %d for dev=%s ino=%ld\n",
__func__, context, -rc, dev, ino); __func__, context, -rc, dev, ino);
} }
...@@ -1785,8 +1784,7 @@ static int cred_has_capability(const struct cred *cred, ...@@ -1785,8 +1784,7 @@ static int cred_has_capability(const struct cred *cred,
sclass = initns ? SECCLASS_CAPABILITY2 : SECCLASS_CAP2_USERNS; sclass = initns ? SECCLASS_CAPABILITY2 : SECCLASS_CAP2_USERNS;
break; break;
default: default:
printk(KERN_ERR pr_err("SELinux: out of range capability %d\n", cap);
"SELinux: out of range capability %d\n", cap);
BUG(); BUG();
return -EINVAL; return -EINVAL;
} }
...@@ -2029,7 +2027,7 @@ static int may_link(struct inode *dir, ...@@ -2029,7 +2027,7 @@ static int may_link(struct inode *dir,
av = DIR__RMDIR; av = DIR__RMDIR;
break; break;
default: default:
printk(KERN_WARNING "SELinux: %s: unrecognized kind %d\n", pr_warn("SELinux: %s: unrecognized kind %d\n",
__func__, kind); __func__, kind);
return 0; return 0;
} }
...@@ -2875,7 +2873,7 @@ static int selinux_sb_remount(struct super_block *sb, void *data) ...@@ -2875,7 +2873,7 @@ static int selinux_sb_remount(struct super_block *sb, void *data)
mount_options[i], &sid, mount_options[i], &sid,
GFP_KERNEL); GFP_KERNEL);
if (rc) { if (rc) {
printk(KERN_WARNING "SELinux: security_context_str_to_sid" pr_warn("SELinux: security_context_str_to_sid"
"(%s) failed for (dev %s, type %s) errno=%d\n", "(%s) failed for (dev %s, type %s) errno=%d\n",
mount_options[i], sb->s_id, sb->s_type->name, rc); mount_options[i], sb->s_id, sb->s_type->name, rc);
goto out_free_opts; goto out_free_opts;
...@@ -2914,7 +2912,7 @@ static int selinux_sb_remount(struct super_block *sb, void *data) ...@@ -2914,7 +2912,7 @@ static int selinux_sb_remount(struct super_block *sb, void *data)
free_secdata(secdata); free_secdata(secdata);
return rc; return rc;
out_bad_option: out_bad_option:
printk(KERN_WARNING "SELinux: unable to change security options " pr_warn("SELinux: unable to change security options "
"during remount (dev %s, type=%s)\n", sb->s_id, "during remount (dev %s, type=%s)\n", sb->s_id,
sb->s_type->name); sb->s_type->name);
goto out_free_opts; goto out_free_opts;
...@@ -3357,7 +3355,7 @@ static void selinux_inode_post_setxattr(struct dentry *dentry, const char *name, ...@@ -3357,7 +3355,7 @@ static void selinux_inode_post_setxattr(struct dentry *dentry, const char *name,
rc = security_context_to_sid_force(&selinux_state, value, size, rc = security_context_to_sid_force(&selinux_state, value, size,
&newsid); &newsid);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: unable to map context to SID" pr_err("SELinux: unable to map context to SID"
"for (%s, %lu), rc=%d\n", "for (%s, %lu), rc=%d\n",
inode->i_sb->s_id, inode->i_ino, -rc); inode->i_sb->s_id, inode->i_ino, -rc);
return; return;
...@@ -4434,7 +4432,7 @@ static int selinux_parse_skb(struct sk_buff *skb, struct common_audit_data *ad, ...@@ -4434,7 +4432,7 @@ static int selinux_parse_skb(struct sk_buff *skb, struct common_audit_data *ad,
} }
parse_error: parse_error:
printk(KERN_WARNING pr_warn(
"SELinux: failure in selinux_parse_skb()," "SELinux: failure in selinux_parse_skb(),"
" unable to parse packet\n"); " unable to parse packet\n");
return ret; return ret;
...@@ -4477,7 +4475,7 @@ static int selinux_skb_peerlbl_sid(struct sk_buff *skb, u16 family, u32 *sid) ...@@ -4477,7 +4475,7 @@ static int selinux_skb_peerlbl_sid(struct sk_buff *skb, u16 family, u32 *sid)
err = security_net_peersid_resolve(&selinux_state, nlbl_sid, err = security_net_peersid_resolve(&selinux_state, nlbl_sid,
nlbl_type, xfrm_sid, sid); nlbl_type, xfrm_sid, sid);
if (unlikely(err)) { if (unlikely(err)) {
printk(KERN_WARNING pr_warn(
"SELinux: failure in selinux_skb_peerlbl_sid()," "SELinux: failure in selinux_skb_peerlbl_sid(),"
" unable to determine packet's peer label\n"); " unable to determine packet's peer label\n");
return -EACCES; return -EACCES;
...@@ -7141,11 +7139,11 @@ static __init int selinux_init(void) ...@@ -7141,11 +7139,11 @@ static __init int selinux_init(void)
} }
if (!selinux_enabled) { if (!selinux_enabled) {
printk(KERN_INFO "SELinux: Disabled at boot.\n"); pr_info("SELinux: Disabled at boot.\n");
return 0; return 0;
} }
printk(KERN_INFO "SELinux: Initializing.\n"); pr_info("SELinux: Initializing.\n");
memset(&selinux_state, 0, sizeof(selinux_state)); memset(&selinux_state, 0, sizeof(selinux_state));
enforcing_set(&selinux_state, selinux_enforcing_boot); enforcing_set(&selinux_state, selinux_enforcing_boot);
...@@ -7181,9 +7179,9 @@ static __init int selinux_init(void) ...@@ -7181,9 +7179,9 @@ static __init int selinux_init(void)
panic("SELinux: Unable to register AVC LSM notifier callback\n"); panic("SELinux: Unable to register AVC LSM notifier callback\n");
if (selinux_enforcing_boot) if (selinux_enforcing_boot)
printk(KERN_DEBUG "SELinux: Starting in enforcing mode\n"); pr_debug("SELinux: Starting in enforcing mode\n");
else else
printk(KERN_DEBUG "SELinux: Starting in permissive mode\n"); pr_debug("SELinux: Starting in permissive mode\n");
return 0; return 0;
} }
...@@ -7195,10 +7193,10 @@ static void delayed_superblock_init(struct super_block *sb, void *unused) ...@@ -7195,10 +7193,10 @@ static void delayed_superblock_init(struct super_block *sb, void *unused)
void selinux_complete_init(void) void selinux_complete_init(void)
{ {
printk(KERN_DEBUG "SELinux: Completing initialization.\n"); pr_debug("SELinux: Completing initialization.\n");
/* Set up any superblocks initialized prior to the policy load. */ /* Set up any superblocks initialized prior to the policy load. */
printk(KERN_DEBUG "SELinux: Setting up existing superblocks.\n"); pr_debug("SELinux: Setting up existing superblocks.\n");
iterate_supers(delayed_superblock_init, NULL); iterate_supers(delayed_superblock_init, NULL);
} }
...@@ -7273,7 +7271,7 @@ static int __init selinux_nf_ip_init(void) ...@@ -7273,7 +7271,7 @@ static int __init selinux_nf_ip_init(void)
if (!selinux_enabled) if (!selinux_enabled)
return 0; return 0;
printk(KERN_DEBUG "SELinux: Registering netfilter hooks\n"); pr_debug("SELinux: Registering netfilter hooks\n");
err = register_pernet_subsys(&selinux_net_ops); err = register_pernet_subsys(&selinux_net_ops);
if (err) if (err)
...@@ -7286,7 +7284,7 @@ __initcall(selinux_nf_ip_init); ...@@ -7286,7 +7284,7 @@ __initcall(selinux_nf_ip_init);
#ifdef CONFIG_SECURITY_SELINUX_DISABLE #ifdef CONFIG_SECURITY_SELINUX_DISABLE
static void selinux_nf_ip_exit(void) static void selinux_nf_ip_exit(void)
{ {
printk(KERN_DEBUG "SELinux: Unregistering netfilter hooks\n"); pr_debug("SELinux: Unregistering netfilter hooks\n");
unregister_pernet_subsys(&selinux_net_ops); unregister_pernet_subsys(&selinux_net_ops);
} }
...@@ -7315,7 +7313,7 @@ int selinux_disable(struct selinux_state *state) ...@@ -7315,7 +7313,7 @@ int selinux_disable(struct selinux_state *state)
state->disabled = 1; state->disabled = 1;
printk(KERN_INFO "SELinux: Disabled at runtime.\n"); pr_info("SELinux: Disabled at runtime.\n");
selinux_enabled = 0; selinux_enabled = 0;
......
...@@ -145,9 +145,8 @@ static int sel_netif_sid_slow(struct net *ns, int ifindex, u32 *sid) ...@@ -145,9 +145,8 @@ static int sel_netif_sid_slow(struct net *ns, int ifindex, u32 *sid)
dev = dev_get_by_index(ns, ifindex); dev = dev_get_by_index(ns, ifindex);
if (unlikely(dev == NULL)) { if (unlikely(dev == NULL)) {
printk(KERN_WARNING pr_warn("SELinux: failure in %s(), invalid network interface (%d)\n",
"SELinux: failure in sel_netif_sid_slow()," __func__, ifindex);
" invalid network interface (%d)\n", ifindex);
return -ENOENT; return -ENOENT;
} }
...@@ -177,10 +176,8 @@ static int sel_netif_sid_slow(struct net *ns, int ifindex, u32 *sid) ...@@ -177,10 +176,8 @@ static int sel_netif_sid_slow(struct net *ns, int ifindex, u32 *sid)
spin_unlock_bh(&sel_netif_lock); spin_unlock_bh(&sel_netif_lock);
dev_put(dev); dev_put(dev);
if (unlikely(ret)) { if (unlikely(ret)) {
printk(KERN_WARNING pr_warn("SELinux: failure in %s(), unable to determine network interface label (%d)\n",
"SELinux: failure in sel_netif_sid_slow()," __func__, ifindex);
" unable to determine network interface label (%d)\n",
ifindex);
kfree(new); kfree(new);
} }
return ret; return ret;
......
...@@ -94,7 +94,7 @@ static void selnl_notify(int msgtype, void *data) ...@@ -94,7 +94,7 @@ static void selnl_notify(int msgtype, void *data)
out_kfree_skb: out_kfree_skb:
kfree_skb(skb); kfree_skb(skb);
oom: oom:
printk(KERN_ERR "SELinux: OOM in %s\n", __func__); pr_err("SELinux: OOM in %s\n", __func__);
goto out; goto out;
} }
......
...@@ -238,9 +238,8 @@ static int sel_netnode_sid_slow(void *addr, u16 family, u32 *sid) ...@@ -238,9 +238,8 @@ static int sel_netnode_sid_slow(void *addr, u16 family, u32 *sid)
out: out:
spin_unlock_bh(&sel_netnode_lock); spin_unlock_bh(&sel_netnode_lock);
if (unlikely(ret)) { if (unlikely(ret)) {
printk(KERN_WARNING pr_warn("SELinux: failure in %s(), unable to determine network node label\n",
"SELinux: failure in sel_netnode_sid_slow()," __func__);
" unable to determine network node label\n");
kfree(new); kfree(new);
} }
return ret; return ret;
......
...@@ -173,9 +173,8 @@ static int sel_netport_sid_slow(u8 protocol, u16 pnum, u32 *sid) ...@@ -173,9 +173,8 @@ static int sel_netport_sid_slow(u8 protocol, u16 pnum, u32 *sid)
out: out:
spin_unlock_bh(&sel_netport_lock); spin_unlock_bh(&sel_netport_lock);
if (unlikely(ret)) { if (unlikely(ret)) {
printk(KERN_WARNING pr_warn("SELinux: failure in %s(), unable to determine network port label\n",
"SELinux: failure in sel_netport_sid_slow()," __func__);
" unable to determine network port label\n");
kfree(new); kfree(new);
} }
return ret; return ret;
......
...@@ -614,7 +614,7 @@ static ssize_t sel_write_context(struct file *file, char *buf, size_t size) ...@@ -614,7 +614,7 @@ static ssize_t sel_write_context(struct file *file, char *buf, size_t size)
length = -ERANGE; length = -ERANGE;
if (len > SIMPLE_TRANSACTION_LIMIT) { if (len > SIMPLE_TRANSACTION_LIMIT) {
printk(KERN_ERR "SELinux: %s: context size (%u) exceeds " pr_err("SELinux: %s: context size (%u) exceeds "
"payload max\n", __func__, len); "payload max\n", __func__, len);
goto out; goto out;
} }
...@@ -767,7 +767,7 @@ static ssize_t sel_write_relabel(struct file *file, char *buf, size_t size); ...@@ -767,7 +767,7 @@ static ssize_t sel_write_relabel(struct file *file, char *buf, size_t size);
static ssize_t sel_write_user(struct file *file, char *buf, size_t size); static ssize_t sel_write_user(struct file *file, char *buf, size_t size);
static ssize_t sel_write_member(struct file *file, char *buf, size_t size); static ssize_t sel_write_member(struct file *file, char *buf, size_t size);
static ssize_t (*write_op[])(struct file *, char *, size_t) = { static ssize_t (*const write_op[])(struct file *, char *, size_t) = {
[SEL_ACCESS] = sel_write_access, [SEL_ACCESS] = sel_write_access,
[SEL_CREATE] = sel_write_create, [SEL_CREATE] = sel_write_create,
[SEL_RELABEL] = sel_write_relabel, [SEL_RELABEL] = sel_write_relabel,
...@@ -950,7 +950,7 @@ static ssize_t sel_write_create(struct file *file, char *buf, size_t size) ...@@ -950,7 +950,7 @@ static ssize_t sel_write_create(struct file *file, char *buf, size_t size)
length = -ERANGE; length = -ERANGE;
if (len > SIMPLE_TRANSACTION_LIMIT) { if (len > SIMPLE_TRANSACTION_LIMIT) {
printk(KERN_ERR "SELinux: %s: context size (%u) exceeds " pr_err("SELinux: %s: context size (%u) exceeds "
"payload max\n", __func__, len); "payload max\n", __func__, len);
goto out; goto out;
} }
...@@ -1141,7 +1141,7 @@ static ssize_t sel_write_member(struct file *file, char *buf, size_t size) ...@@ -1141,7 +1141,7 @@ static ssize_t sel_write_member(struct file *file, char *buf, size_t size)
length = -ERANGE; length = -ERANGE;
if (len > SIMPLE_TRANSACTION_LIMIT) { if (len > SIMPLE_TRANSACTION_LIMIT) {
printk(KERN_ERR "SELinux: %s: context size (%u) exceeds " pr_err("SELinux: %s: context size (%u) exceeds "
"payload max\n", __func__, len); "payload max\n", __func__, len);
goto out; goto out;
} }
...@@ -1365,13 +1365,18 @@ static int sel_make_bools(struct selinux_fs_info *fsi) ...@@ -1365,13 +1365,18 @@ static int sel_make_bools(struct selinux_fs_info *fsi)
ret = -ENOMEM; ret = -ENOMEM;
inode = sel_make_inode(dir->d_sb, S_IFREG | S_IRUGO | S_IWUSR); inode = sel_make_inode(dir->d_sb, S_IFREG | S_IRUGO | S_IWUSR);
if (!inode) if (!inode) {
dput(dentry);
goto out; goto out;
}
ret = -ENAMETOOLONG; ret = -ENAMETOOLONG;
len = snprintf(page, PAGE_SIZE, "/%s/%s", BOOL_DIR_NAME, names[i]); len = snprintf(page, PAGE_SIZE, "/%s/%s", BOOL_DIR_NAME, names[i]);
if (len >= PAGE_SIZE) if (len >= PAGE_SIZE) {
dput(dentry);
iput(inode);
goto out; goto out;
}
isec = (struct inode_security_struct *)inode->i_security; isec = (struct inode_security_struct *)inode->i_security;
ret = security_genfs_sid(fsi->state, "selinuxfs", page, ret = security_genfs_sid(fsi->state, "selinuxfs", page,
...@@ -1586,8 +1591,10 @@ static int sel_make_avc_files(struct dentry *dir) ...@@ -1586,8 +1591,10 @@ static int sel_make_avc_files(struct dentry *dir)
return -ENOMEM; return -ENOMEM;
inode = sel_make_inode(dir->d_sb, S_IFREG|files[i].mode); inode = sel_make_inode(dir->d_sb, S_IFREG|files[i].mode);
if (!inode) if (!inode) {
dput(dentry);
return -ENOMEM; return -ENOMEM;
}
inode->i_fop = files[i].ops; inode->i_fop = files[i].ops;
inode->i_ino = ++fsi->last_ino; inode->i_ino = ++fsi->last_ino;
...@@ -1632,8 +1639,10 @@ static int sel_make_initcon_files(struct dentry *dir) ...@@ -1632,8 +1639,10 @@ static int sel_make_initcon_files(struct dentry *dir)
return -ENOMEM; return -ENOMEM;
inode = sel_make_inode(dir->d_sb, S_IFREG|S_IRUGO); inode = sel_make_inode(dir->d_sb, S_IFREG|S_IRUGO);
if (!inode) if (!inode) {
dput(dentry);
return -ENOMEM; return -ENOMEM;
}
inode->i_fop = &sel_initcon_ops; inode->i_fop = &sel_initcon_ops;
inode->i_ino = i|SEL_INITCON_INO_OFFSET; inode->i_ino = i|SEL_INITCON_INO_OFFSET;
...@@ -1733,8 +1742,10 @@ static int sel_make_perm_files(char *objclass, int classvalue, ...@@ -1733,8 +1742,10 @@ static int sel_make_perm_files(char *objclass, int classvalue,
rc = -ENOMEM; rc = -ENOMEM;
inode = sel_make_inode(dir->d_sb, S_IFREG|S_IRUGO); inode = sel_make_inode(dir->d_sb, S_IFREG|S_IRUGO);
if (!inode) if (!inode) {
dput(dentry);
goto out; goto out;
}
inode->i_fop = &sel_perm_ops; inode->i_fop = &sel_perm_ops;
/* i+1 since perm values are 1-indexed */ /* i+1 since perm values are 1-indexed */
...@@ -1763,8 +1774,10 @@ static int sel_make_class_dir_entries(char *classname, int index, ...@@ -1763,8 +1774,10 @@ static int sel_make_class_dir_entries(char *classname, int index,
return -ENOMEM; return -ENOMEM;
inode = sel_make_inode(dir->d_sb, S_IFREG|S_IRUGO); inode = sel_make_inode(dir->d_sb, S_IFREG|S_IRUGO);
if (!inode) if (!inode) {
dput(dentry);
return -ENOMEM; return -ENOMEM;
}
inode->i_fop = &sel_class_ops; inode->i_fop = &sel_class_ops;
inode->i_ino = sel_class_to_ino(index); inode->i_ino = sel_class_to_ino(index);
...@@ -1838,8 +1851,10 @@ static int sel_make_policycap(struct selinux_fs_info *fsi) ...@@ -1838,8 +1851,10 @@ static int sel_make_policycap(struct selinux_fs_info *fsi)
return -ENOMEM; return -ENOMEM;
inode = sel_make_inode(fsi->sb, S_IFREG | 0444); inode = sel_make_inode(fsi->sb, S_IFREG | 0444);
if (inode == NULL) if (inode == NULL) {
dput(dentry);
return -ENOMEM; return -ENOMEM;
}
inode->i_fop = &sel_policycap_ops; inode->i_fop = &sel_policycap_ops;
inode->i_ino = iter | SEL_POLICYCAP_INO_OFFSET; inode->i_ino = iter | SEL_POLICYCAP_INO_OFFSET;
...@@ -1932,8 +1947,10 @@ static int sel_fill_super(struct super_block *sb, void *data, int silent) ...@@ -1932,8 +1947,10 @@ static int sel_fill_super(struct super_block *sb, void *data, int silent)
ret = -ENOMEM; ret = -ENOMEM;
inode = sel_make_inode(sb, S_IFCHR | S_IRUGO | S_IWUGO); inode = sel_make_inode(sb, S_IFCHR | S_IRUGO | S_IWUGO);
if (!inode) if (!inode) {
dput(dentry);
goto err; goto err;
}
inode->i_ino = ++fsi->last_ino; inode->i_ino = ++fsi->last_ino;
isec = (struct inode_security_struct *)inode->i_security; isec = (struct inode_security_struct *)inode->i_security;
...@@ -1984,7 +2001,7 @@ static int sel_fill_super(struct super_block *sb, void *data, int silent) ...@@ -1984,7 +2001,7 @@ static int sel_fill_super(struct super_block *sb, void *data, int silent)
goto err; goto err;
return 0; return 0;
err: err:
printk(KERN_ERR "SELinux: %s: failed while creating inodes\n", pr_err("SELinux: %s: failed while creating inodes\n",
__func__); __func__);
selinux_fs_info_free(sb); selinux_fs_info_free(sb);
...@@ -2034,7 +2051,7 @@ static int __init init_sel_fs(void) ...@@ -2034,7 +2051,7 @@ static int __init init_sel_fs(void)
selinux_null.mnt = selinuxfs_mount = kern_mount(&sel_fs_type); selinux_null.mnt = selinuxfs_mount = kern_mount(&sel_fs_type);
if (IS_ERR(selinuxfs_mount)) { if (IS_ERR(selinuxfs_mount)) {
printk(KERN_ERR "selinuxfs: could not mount!\n"); pr_err("selinuxfs: could not mount!\n");
err = PTR_ERR(selinuxfs_mount); err = PTR_ERR(selinuxfs_mount);
selinuxfs_mount = NULL; selinuxfs_mount = NULL;
} }
......
...@@ -338,7 +338,7 @@ int avtab_alloc(struct avtab *h, u32 nrules) ...@@ -338,7 +338,7 @@ int avtab_alloc(struct avtab *h, u32 nrules)
h->nel = 0; h->nel = 0;
h->nslot = nslot; h->nslot = nslot;
h->mask = mask; h->mask = mask;
printk(KERN_DEBUG "SELinux: %d avtab hash slots, %d rules.\n", pr_debug("SELinux: %d avtab hash slots, %d rules.\n",
h->nslot, nrules); h->nslot, nrules);
return 0; return 0;
} }
...@@ -368,7 +368,7 @@ void avtab_hash_eval(struct avtab *h, char *tag) ...@@ -368,7 +368,7 @@ void avtab_hash_eval(struct avtab *h, char *tag)
} }
} }
printk(KERN_DEBUG "SELinux: %s: %d entries and %d/%d buckets used, " pr_debug("SELinux: %s: %d entries and %d/%d buckets used, "
"longest chain length %d sum of chain length^2 %llu\n", "longest chain length %d sum of chain length^2 %llu\n",
tag, h->nel, slots_used, h->nslot, max_chain_len, tag, h->nel, slots_used, h->nslot, max_chain_len,
chain2_len_sum); chain2_len_sum);
...@@ -407,18 +407,18 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol, ...@@ -407,18 +407,18 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol,
if (vers < POLICYDB_VERSION_AVTAB) { if (vers < POLICYDB_VERSION_AVTAB) {
rc = next_entry(buf32, fp, sizeof(u32)); rc = next_entry(buf32, fp, sizeof(u32));
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: avtab: truncated entry\n"); pr_err("SELinux: avtab: truncated entry\n");
return rc; return rc;
} }
items2 = le32_to_cpu(buf32[0]); items2 = le32_to_cpu(buf32[0]);
if (items2 > ARRAY_SIZE(buf32)) { if (items2 > ARRAY_SIZE(buf32)) {
printk(KERN_ERR "SELinux: avtab: entry overflow\n"); pr_err("SELinux: avtab: entry overflow\n");
return -EINVAL; return -EINVAL;
} }
rc = next_entry(buf32, fp, sizeof(u32)*items2); rc = next_entry(buf32, fp, sizeof(u32)*items2);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: avtab: truncated entry\n"); pr_err("SELinux: avtab: truncated entry\n");
return rc; return rc;
} }
items = 0; items = 0;
...@@ -426,19 +426,19 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol, ...@@ -426,19 +426,19 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol,
val = le32_to_cpu(buf32[items++]); val = le32_to_cpu(buf32[items++]);
key.source_type = (u16)val; key.source_type = (u16)val;
if (key.source_type != val) { if (key.source_type != val) {
printk(KERN_ERR "SELinux: avtab: truncated source type\n"); pr_err("SELinux: avtab: truncated source type\n");
return -EINVAL; return -EINVAL;
} }
val = le32_to_cpu(buf32[items++]); val = le32_to_cpu(buf32[items++]);
key.target_type = (u16)val; key.target_type = (u16)val;
if (key.target_type != val) { if (key.target_type != val) {
printk(KERN_ERR "SELinux: avtab: truncated target type\n"); pr_err("SELinux: avtab: truncated target type\n");
return -EINVAL; return -EINVAL;
} }
val = le32_to_cpu(buf32[items++]); val = le32_to_cpu(buf32[items++]);
key.target_class = (u16)val; key.target_class = (u16)val;
if (key.target_class != val) { if (key.target_class != val) {
printk(KERN_ERR "SELinux: avtab: truncated target class\n"); pr_err("SELinux: avtab: truncated target class\n");
return -EINVAL; return -EINVAL;
} }
...@@ -446,16 +446,16 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol, ...@@ -446,16 +446,16 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol,
enabled = (val & AVTAB_ENABLED_OLD) ? AVTAB_ENABLED : 0; enabled = (val & AVTAB_ENABLED_OLD) ? AVTAB_ENABLED : 0;
if (!(val & (AVTAB_AV | AVTAB_TYPE))) { if (!(val & (AVTAB_AV | AVTAB_TYPE))) {
printk(KERN_ERR "SELinux: avtab: null entry\n"); pr_err("SELinux: avtab: null entry\n");
return -EINVAL; return -EINVAL;
} }
if ((val & AVTAB_AV) && if ((val & AVTAB_AV) &&
(val & AVTAB_TYPE)) { (val & AVTAB_TYPE)) {
printk(KERN_ERR "SELinux: avtab: entry has both access vectors and types\n"); pr_err("SELinux: avtab: entry has both access vectors and types\n");
return -EINVAL; return -EINVAL;
} }
if (val & AVTAB_XPERMS) { if (val & AVTAB_XPERMS) {
printk(KERN_ERR "SELinux: avtab: entry has extended permissions\n"); pr_err("SELinux: avtab: entry has extended permissions\n");
return -EINVAL; return -EINVAL;
} }
...@@ -470,7 +470,8 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol, ...@@ -470,7 +470,8 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol,
} }
if (items != items2) { if (items != items2) {
printk(KERN_ERR "SELinux: avtab: entry only had %d items, expected %d\n", items2, items); pr_err("SELinux: avtab: entry only had %d items, expected %d\n",
items2, items);
return -EINVAL; return -EINVAL;
} }
return 0; return 0;
...@@ -478,7 +479,7 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol, ...@@ -478,7 +479,7 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol,
rc = next_entry(buf16, fp, sizeof(u16)*4); rc = next_entry(buf16, fp, sizeof(u16)*4);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: avtab: truncated entry\n"); pr_err("SELinux: avtab: truncated entry\n");
return rc; return rc;
} }
...@@ -491,7 +492,7 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol, ...@@ -491,7 +492,7 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol,
if (!policydb_type_isvalid(pol, key.source_type) || if (!policydb_type_isvalid(pol, key.source_type) ||
!policydb_type_isvalid(pol, key.target_type) || !policydb_type_isvalid(pol, key.target_type) ||
!policydb_class_isvalid(pol, key.target_class)) { !policydb_class_isvalid(pol, key.target_class)) {
printk(KERN_ERR "SELinux: avtab: invalid type or class\n"); pr_err("SELinux: avtab: invalid type or class\n");
return -EINVAL; return -EINVAL;
} }
...@@ -501,13 +502,13 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol, ...@@ -501,13 +502,13 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol,
set++; set++;
} }
if (!set || set > 1) { if (!set || set > 1) {
printk(KERN_ERR "SELinux: avtab: more than one specifier\n"); pr_err("SELinux: avtab: more than one specifier\n");
return -EINVAL; return -EINVAL;
} }
if ((vers < POLICYDB_VERSION_XPERMS_IOCTL) && if ((vers < POLICYDB_VERSION_XPERMS_IOCTL) &&
(key.specified & AVTAB_XPERMS)) { (key.specified & AVTAB_XPERMS)) {
printk(KERN_ERR "SELinux: avtab: policy version %u does not " pr_err("SELinux: avtab: policy version %u does not "
"support extended permissions rules and one " "support extended permissions rules and one "
"was specified\n", vers); "was specified\n", vers);
return -EINVAL; return -EINVAL;
...@@ -515,17 +516,17 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol, ...@@ -515,17 +516,17 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol,
memset(&xperms, 0, sizeof(struct avtab_extended_perms)); memset(&xperms, 0, sizeof(struct avtab_extended_perms));
rc = next_entry(&xperms.specified, fp, sizeof(u8)); rc = next_entry(&xperms.specified, fp, sizeof(u8));
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: avtab: truncated entry\n"); pr_err("SELinux: avtab: truncated entry\n");
return rc; return rc;
} }
rc = next_entry(&xperms.driver, fp, sizeof(u8)); rc = next_entry(&xperms.driver, fp, sizeof(u8));
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: avtab: truncated entry\n"); pr_err("SELinux: avtab: truncated entry\n");
return rc; return rc;
} }
rc = next_entry(buf32, fp, sizeof(u32)*ARRAY_SIZE(xperms.perms.p)); rc = next_entry(buf32, fp, sizeof(u32)*ARRAY_SIZE(xperms.perms.p));
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: avtab: truncated entry\n"); pr_err("SELinux: avtab: truncated entry\n");
return rc; return rc;
} }
for (i = 0; i < ARRAY_SIZE(xperms.perms.p); i++) for (i = 0; i < ARRAY_SIZE(xperms.perms.p); i++)
...@@ -534,14 +535,14 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol, ...@@ -534,14 +535,14 @@ int avtab_read_item(struct avtab *a, void *fp, struct policydb *pol,
} else { } else {
rc = next_entry(buf32, fp, sizeof(u32)); rc = next_entry(buf32, fp, sizeof(u32));
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: avtab: truncated entry\n"); pr_err("SELinux: avtab: truncated entry\n");
return rc; return rc;
} }
datum.u.data = le32_to_cpu(*buf32); datum.u.data = le32_to_cpu(*buf32);
} }
if ((key.specified & AVTAB_TYPE) && if ((key.specified & AVTAB_TYPE) &&
!policydb_type_isvalid(pol, datum.u.data)) { !policydb_type_isvalid(pol, datum.u.data)) {
printk(KERN_ERR "SELinux: avtab: invalid type\n"); pr_err("SELinux: avtab: invalid type\n");
return -EINVAL; return -EINVAL;
} }
return insertf(a, &key, &datum, p); return insertf(a, &key, &datum, p);
...@@ -562,12 +563,12 @@ int avtab_read(struct avtab *a, void *fp, struct policydb *pol) ...@@ -562,12 +563,12 @@ int avtab_read(struct avtab *a, void *fp, struct policydb *pol)
rc = next_entry(buf, fp, sizeof(u32)); rc = next_entry(buf, fp, sizeof(u32));
if (rc < 0) { if (rc < 0) {
printk(KERN_ERR "SELinux: avtab: truncated table\n"); pr_err("SELinux: avtab: truncated table\n");
goto bad; goto bad;
} }
nel = le32_to_cpu(buf[0]); nel = le32_to_cpu(buf[0]);
if (!nel) { if (!nel) {
printk(KERN_ERR "SELinux: avtab: table is empty\n"); pr_err("SELinux: avtab: table is empty\n");
rc = -EINVAL; rc = -EINVAL;
goto bad; goto bad;
} }
...@@ -580,9 +581,9 @@ int avtab_read(struct avtab *a, void *fp, struct policydb *pol) ...@@ -580,9 +581,9 @@ int avtab_read(struct avtab *a, void *fp, struct policydb *pol)
rc = avtab_read_item(a, fp, pol, avtab_insertf, NULL); rc = avtab_read_item(a, fp, pol, avtab_insertf, NULL);
if (rc) { if (rc) {
if (rc == -ENOMEM) if (rc == -ENOMEM)
printk(KERN_ERR "SELinux: avtab: out of memory\n"); pr_err("SELinux: avtab: out of memory\n");
else if (rc == -EEXIST) else if (rc == -EEXIST)
printk(KERN_ERR "SELinux: avtab: duplicate entry\n"); pr_err("SELinux: avtab: duplicate entry\n");
goto bad; goto bad;
} }
......
...@@ -96,7 +96,7 @@ int evaluate_cond_node(struct policydb *p, struct cond_node *node) ...@@ -96,7 +96,7 @@ int evaluate_cond_node(struct policydb *p, struct cond_node *node)
if (new_state != node->cur_state) { if (new_state != node->cur_state) {
node->cur_state = new_state; node->cur_state = new_state;
if (new_state == -1) if (new_state == -1)
printk(KERN_ERR "SELinux: expression result was undefined - disabling all rules.\n"); pr_err("SELinux: expression result was undefined - disabling all rules.\n");
/* turn the rules on or off */ /* turn the rules on or off */
for (cur = node->true_list; cur; cur = cur->next) { for (cur = node->true_list; cur; cur = cur->next) {
if (new_state <= 0) if (new_state <= 0)
...@@ -287,7 +287,7 @@ static int cond_insertf(struct avtab *a, struct avtab_key *k, struct avtab_datum ...@@ -287,7 +287,7 @@ static int cond_insertf(struct avtab *a, struct avtab_key *k, struct avtab_datum
*/ */
if (k->specified & AVTAB_TYPE) { if (k->specified & AVTAB_TYPE) {
if (avtab_search(&p->te_avtab, k)) { if (avtab_search(&p->te_avtab, k)) {
printk(KERN_ERR "SELinux: type rule already exists outside of a conditional.\n"); pr_err("SELinux: type rule already exists outside of a conditional.\n");
goto err; goto err;
} }
/* /*
...@@ -302,7 +302,7 @@ static int cond_insertf(struct avtab *a, struct avtab_key *k, struct avtab_datum ...@@ -302,7 +302,7 @@ static int cond_insertf(struct avtab *a, struct avtab_key *k, struct avtab_datum
node_ptr = avtab_search_node(&p->te_cond_avtab, k); node_ptr = avtab_search_node(&p->te_cond_avtab, k);
if (node_ptr) { if (node_ptr) {
if (avtab_search_node_next(node_ptr, k->specified)) { if (avtab_search_node_next(node_ptr, k->specified)) {
printk(KERN_ERR "SELinux: too many conflicting type rules.\n"); pr_err("SELinux: too many conflicting type rules.\n");
goto err; goto err;
} }
found = 0; found = 0;
...@@ -313,13 +313,13 @@ static int cond_insertf(struct avtab *a, struct avtab_key *k, struct avtab_datum ...@@ -313,13 +313,13 @@ static int cond_insertf(struct avtab *a, struct avtab_key *k, struct avtab_datum
} }
} }
if (!found) { if (!found) {
printk(KERN_ERR "SELinux: conflicting type rules.\n"); pr_err("SELinux: conflicting type rules.\n");
goto err; goto err;
} }
} }
} else { } else {
if (avtab_search(&p->te_cond_avtab, k)) { if (avtab_search(&p->te_cond_avtab, k)) {
printk(KERN_ERR "SELinux: conflicting type rules when adding type rule for true.\n"); pr_err("SELinux: conflicting type rules when adding type rule for true.\n");
goto err; goto err;
} }
} }
...@@ -327,7 +327,7 @@ static int cond_insertf(struct avtab *a, struct avtab_key *k, struct avtab_datum ...@@ -327,7 +327,7 @@ static int cond_insertf(struct avtab *a, struct avtab_key *k, struct avtab_datum
node_ptr = avtab_insert_nonunique(&p->te_cond_avtab, k, d); node_ptr = avtab_insert_nonunique(&p->te_cond_avtab, k, d);
if (!node_ptr) { if (!node_ptr) {
printk(KERN_ERR "SELinux: could not insert rule.\n"); pr_err("SELinux: could not insert rule.\n");
rc = -ENOMEM; rc = -ENOMEM;
goto err; goto err;
} }
...@@ -387,12 +387,12 @@ static int cond_read_av_list(struct policydb *p, void *fp, struct cond_av_list * ...@@ -387,12 +387,12 @@ static int cond_read_av_list(struct policydb *p, void *fp, struct cond_av_list *
static int expr_isvalid(struct policydb *p, struct cond_expr *expr) static int expr_isvalid(struct policydb *p, struct cond_expr *expr)
{ {
if (expr->expr_type <= 0 || expr->expr_type > COND_LAST) { if (expr->expr_type <= 0 || expr->expr_type > COND_LAST) {
printk(KERN_ERR "SELinux: conditional expressions uses unknown operator.\n"); pr_err("SELinux: conditional expressions uses unknown operator.\n");
return 0; return 0;
} }
if (expr->bool > p->p_bools.nprim) { if (expr->bool > p->p_bools.nprim) {
printk(KERN_ERR "SELinux: conditional expressions uses unknown bool.\n"); pr_err("SELinux: conditional expressions uses unknown bool.\n");
return 0; return 0;
} }
return 1; return 1;
......
...@@ -362,7 +362,7 @@ int ebitmap_read(struct ebitmap *e, void *fp) ...@@ -362,7 +362,7 @@ int ebitmap_read(struct ebitmap *e, void *fp)
count = le32_to_cpu(buf[2]); count = le32_to_cpu(buf[2]);
if (mapunit != BITS_PER_U64) { if (mapunit != BITS_PER_U64) {
printk(KERN_ERR "SELinux: ebitmap: map size %u does not " pr_err("SELinux: ebitmap: map size %u does not "
"match my size %zd (high bit was %d)\n", "match my size %zd (high bit was %d)\n",
mapunit, BITS_PER_U64, e->highbit); mapunit, BITS_PER_U64, e->highbit);
goto bad; goto bad;
...@@ -383,19 +383,19 @@ int ebitmap_read(struct ebitmap *e, void *fp) ...@@ -383,19 +383,19 @@ int ebitmap_read(struct ebitmap *e, void *fp)
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
rc = next_entry(&startbit, fp, sizeof(u32)); rc = next_entry(&startbit, fp, sizeof(u32));
if (rc < 0) { if (rc < 0) {
printk(KERN_ERR "SELinux: ebitmap: truncated map\n"); pr_err("SELinux: ebitmap: truncated map\n");
goto bad; goto bad;
} }
startbit = le32_to_cpu(startbit); startbit = le32_to_cpu(startbit);
if (startbit & (mapunit - 1)) { if (startbit & (mapunit - 1)) {
printk(KERN_ERR "SELinux: ebitmap start bit (%d) is " pr_err("SELinux: ebitmap start bit (%d) is "
"not a multiple of the map unit size (%u)\n", "not a multiple of the map unit size (%u)\n",
startbit, mapunit); startbit, mapunit);
goto bad; goto bad;
} }
if (startbit > e->highbit - mapunit) { if (startbit > e->highbit - mapunit) {
printk(KERN_ERR "SELinux: ebitmap start bit (%d) is " pr_err("SELinux: ebitmap start bit (%d) is "
"beyond the end of the bitmap (%u)\n", "beyond the end of the bitmap (%u)\n",
startbit, (e->highbit - mapunit)); startbit, (e->highbit - mapunit));
goto bad; goto bad;
...@@ -405,8 +405,7 @@ int ebitmap_read(struct ebitmap *e, void *fp) ...@@ -405,8 +405,7 @@ int ebitmap_read(struct ebitmap *e, void *fp)
struct ebitmap_node *tmp; struct ebitmap_node *tmp;
tmp = kmem_cache_zalloc(ebitmap_node_cachep, GFP_KERNEL); tmp = kmem_cache_zalloc(ebitmap_node_cachep, GFP_KERNEL);
if (!tmp) { if (!tmp) {
printk(KERN_ERR pr_err("SELinux: ebitmap: out of memory\n");
"SELinux: ebitmap: out of memory\n");
rc = -ENOMEM; rc = -ENOMEM;
goto bad; goto bad;
} }
...@@ -418,7 +417,7 @@ int ebitmap_read(struct ebitmap *e, void *fp) ...@@ -418,7 +417,7 @@ int ebitmap_read(struct ebitmap *e, void *fp)
e->node = tmp; e->node = tmp;
n = tmp; n = tmp;
} else if (startbit <= n->startbit) { } else if (startbit <= n->startbit) {
printk(KERN_ERR "SELinux: ebitmap: start bit %d" pr_err("SELinux: ebitmap: start bit %d"
" comes after start bit %d\n", " comes after start bit %d\n",
startbit, n->startbit); startbit, n->startbit);
goto bad; goto bad;
...@@ -426,7 +425,7 @@ int ebitmap_read(struct ebitmap *e, void *fp) ...@@ -426,7 +425,7 @@ int ebitmap_read(struct ebitmap *e, void *fp)
rc = next_entry(&map, fp, sizeof(u64)); rc = next_entry(&map, fp, sizeof(u64));
if (rc < 0) { if (rc < 0) {
printk(KERN_ERR "SELinux: ebitmap: truncated map\n"); pr_err("SELinux: ebitmap: truncated map\n");
goto bad; goto bad;
} }
map = le64_to_cpu(map); map = le64_to_cpu(map);
......
...@@ -504,7 +504,7 @@ static void hash_eval(struct hashtab *h, const char *hash_name) ...@@ -504,7 +504,7 @@ static void hash_eval(struct hashtab *h, const char *hash_name)
struct hashtab_info info; struct hashtab_info info;
hashtab_stat(h, &info); hashtab_stat(h, &info);
printk(KERN_DEBUG "SELinux: %s: %d entries and %d/%d buckets used, " pr_debug("SELinux: %s: %d entries and %d/%d buckets used, "
"longest chain length %d\n", hash_name, h->nel, "longest chain length %d\n", hash_name, h->nel,
info.slots_used, h->size, info.max_chain_len); info.slots_used, h->size, info.max_chain_len);
} }
...@@ -533,15 +533,17 @@ static int policydb_index(struct policydb *p) ...@@ -533,15 +533,17 @@ static int policydb_index(struct policydb *p)
{ {
int i, rc; int i, rc;
printk(KERN_DEBUG "SELinux: %d users, %d roles, %d types, %d bools",
p->p_users.nprim, p->p_roles.nprim, p->p_types.nprim, p->p_bools.nprim);
if (p->mls_enabled) if (p->mls_enabled)
printk(KERN_CONT ", %d sens, %d cats", p->p_levels.nprim, pr_debug("SELinux: %d users, %d roles, %d types, %d bools, %d sens, %d cats\n",
p->p_cats.nprim); p->p_users.nprim, p->p_roles.nprim, p->p_types.nprim,
printk(KERN_CONT "\n"); p->p_bools.nprim, p->p_levels.nprim, p->p_cats.nprim);
else
pr_debug("SELinux: %d users, %d roles, %d types, %d bools\n",
p->p_users.nprim, p->p_roles.nprim, p->p_types.nprim,
p->p_bools.nprim);
printk(KERN_DEBUG "SELinux: %d classes, %d rules\n", pr_debug("SELinux: %d classes, %d rules\n",
p->p_classes.nprim, p->te_avtab.nel); p->p_classes.nprim, p->te_avtab.nel);
#ifdef DEBUG_HASHES #ifdef DEBUG_HASHES
avtab_hash_eval(&p->te_avtab, "rules"); avtab_hash_eval(&p->te_avtab, "rules");
...@@ -897,7 +899,7 @@ int policydb_load_isids(struct policydb *p, struct sidtab *s) ...@@ -897,7 +899,7 @@ int policydb_load_isids(struct policydb *p, struct sidtab *s)
rc = sidtab_init(s); rc = sidtab_init(s);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: out of memory on SID table init\n"); pr_err("SELinux: out of memory on SID table init\n");
goto out; goto out;
} }
...@@ -905,14 +907,14 @@ int policydb_load_isids(struct policydb *p, struct sidtab *s) ...@@ -905,14 +907,14 @@ int policydb_load_isids(struct policydb *p, struct sidtab *s)
for (c = head; c; c = c->next) { for (c = head; c; c = c->next) {
rc = -EINVAL; rc = -EINVAL;
if (!c->context[0].user) { if (!c->context[0].user) {
printk(KERN_ERR "SELinux: SID %s was never defined.\n", pr_err("SELinux: SID %s was never defined.\n",
c->u.name); c->u.name);
goto out; goto out;
} }
rc = sidtab_insert(s, c->sid[0], &c->context[0]); rc = sidtab_insert(s, c->sid[0], &c->context[0]);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: unable to load initial SID %s.\n", pr_err("SELinux: unable to load initial SID %s.\n",
c->u.name); c->u.name);
goto out; goto out;
} }
...@@ -1005,13 +1007,13 @@ static int mls_read_range_helper(struct mls_range *r, void *fp) ...@@ -1005,13 +1007,13 @@ static int mls_read_range_helper(struct mls_range *r, void *fp)
rc = -EINVAL; rc = -EINVAL;
items = le32_to_cpu(buf[0]); items = le32_to_cpu(buf[0]);
if (items > ARRAY_SIZE(buf)) { if (items > ARRAY_SIZE(buf)) {
printk(KERN_ERR "SELinux: mls: range overflow\n"); pr_err("SELinux: mls: range overflow\n");
goto out; goto out;
} }
rc = next_entry(buf, fp, sizeof(u32) * items); rc = next_entry(buf, fp, sizeof(u32) * items);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: mls: truncated range\n"); pr_err("SELinux: mls: truncated range\n");
goto out; goto out;
} }
...@@ -1023,19 +1025,19 @@ static int mls_read_range_helper(struct mls_range *r, void *fp) ...@@ -1023,19 +1025,19 @@ static int mls_read_range_helper(struct mls_range *r, void *fp)
rc = ebitmap_read(&r->level[0].cat, fp); rc = ebitmap_read(&r->level[0].cat, fp);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: mls: error reading low categories\n"); pr_err("SELinux: mls: error reading low categories\n");
goto out; goto out;
} }
if (items > 1) { if (items > 1) {
rc = ebitmap_read(&r->level[1].cat, fp); rc = ebitmap_read(&r->level[1].cat, fp);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: mls: error reading high categories\n"); pr_err("SELinux: mls: error reading high categories\n");
goto bad_high; goto bad_high;
} }
} else { } else {
rc = ebitmap_cpy(&r->level[1].cat, &r->level[0].cat); rc = ebitmap_cpy(&r->level[1].cat, &r->level[0].cat);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: mls: out of memory\n"); pr_err("SELinux: mls: out of memory\n");
goto bad_high; goto bad_high;
} }
} }
...@@ -1060,7 +1062,7 @@ static int context_read_and_validate(struct context *c, ...@@ -1060,7 +1062,7 @@ static int context_read_and_validate(struct context *c,
rc = next_entry(buf, fp, sizeof buf); rc = next_entry(buf, fp, sizeof buf);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: context truncated\n"); pr_err("SELinux: context truncated\n");
goto out; goto out;
} }
c->user = le32_to_cpu(buf[0]); c->user = le32_to_cpu(buf[0]);
...@@ -1069,14 +1071,14 @@ static int context_read_and_validate(struct context *c, ...@@ -1069,14 +1071,14 @@ static int context_read_and_validate(struct context *c,
if (p->policyvers >= POLICYDB_VERSION_MLS) { if (p->policyvers >= POLICYDB_VERSION_MLS) {
rc = mls_read_range_helper(&c->range, fp); rc = mls_read_range_helper(&c->range, fp);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: error reading MLS range of context\n"); pr_err("SELinux: error reading MLS range of context\n");
goto out; goto out;
} }
} }
rc = -EINVAL; rc = -EINVAL;
if (!policydb_context_isvalid(p, c)) { if (!policydb_context_isvalid(p, c)) {
printk(KERN_ERR "SELinux: invalid security context\n"); pr_err("SELinux: invalid security context\n");
context_destroy(c); context_destroy(c);
goto out; goto out;
} }
...@@ -1352,7 +1354,8 @@ static int class_read(struct policydb *p, struct hashtab *h, void *fp) ...@@ -1352,7 +1354,8 @@ static int class_read(struct policydb *p, struct hashtab *h, void *fp)
rc = -EINVAL; rc = -EINVAL;
cladatum->comdatum = hashtab_search(p->p_commons.table, cladatum->comkey); cladatum->comdatum = hashtab_search(p->p_commons.table, cladatum->comkey);
if (!cladatum->comdatum) { if (!cladatum->comdatum) {
printk(KERN_ERR "SELinux: unknown common %s\n", cladatum->comkey); pr_err("SELinux: unknown common %s\n",
cladatum->comkey);
goto bad; goto bad;
} }
} }
...@@ -1444,7 +1447,7 @@ static int role_read(struct policydb *p, struct hashtab *h, void *fp) ...@@ -1444,7 +1447,7 @@ static int role_read(struct policydb *p, struct hashtab *h, void *fp)
if (strcmp(key, OBJECT_R) == 0) { if (strcmp(key, OBJECT_R) == 0) {
rc = -EINVAL; rc = -EINVAL;
if (role->value != OBJECT_R_VAL) { if (role->value != OBJECT_R_VAL) {
printk(KERN_ERR "SELinux: Role %s has wrong value %d\n", pr_err("SELinux: Role %s has wrong value %d\n",
OBJECT_R, role->value); OBJECT_R, role->value);
goto bad; goto bad;
} }
...@@ -1522,14 +1525,14 @@ static int mls_read_level(struct mls_level *lp, void *fp) ...@@ -1522,14 +1525,14 @@ static int mls_read_level(struct mls_level *lp, void *fp)
rc = next_entry(buf, fp, sizeof buf); rc = next_entry(buf, fp, sizeof buf);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: mls: truncated level\n"); pr_err("SELinux: mls: truncated level\n");
return rc; return rc;
} }
lp->sens = le32_to_cpu(buf[0]); lp->sens = le32_to_cpu(buf[0]);
rc = ebitmap_read(&lp->cat, fp); rc = ebitmap_read(&lp->cat, fp);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: mls: error reading level categories\n"); pr_err("SELinux: mls: error reading level categories\n");
return rc; return rc;
} }
return 0; return 0;
...@@ -1683,7 +1686,7 @@ static int user_bounds_sanity_check(void *key, void *datum, void *datap) ...@@ -1683,7 +1686,7 @@ static int user_bounds_sanity_check(void *key, void *datum, void *datap)
unsigned long bit; unsigned long bit;
if (++depth == POLICYDB_BOUNDS_MAXDEPTH) { if (++depth == POLICYDB_BOUNDS_MAXDEPTH) {
printk(KERN_ERR "SELinux: user %s: " pr_err("SELinux: user %s: "
"too deep or looped boundary", "too deep or looped boundary",
(char *) key); (char *) key);
return -EINVAL; return -EINVAL;
...@@ -1694,8 +1697,7 @@ static int user_bounds_sanity_check(void *key, void *datum, void *datap) ...@@ -1694,8 +1697,7 @@ static int user_bounds_sanity_check(void *key, void *datum, void *datap)
if (ebitmap_get_bit(&upper->roles, bit)) if (ebitmap_get_bit(&upper->roles, bit))
continue; continue;
printk(KERN_ERR pr_err("SELinux: boundary violated policy: "
"SELinux: boundary violated policy: "
"user=%s role=%s bounds=%s\n", "user=%s role=%s bounds=%s\n",
sym_name(p, SYM_USERS, user->value - 1), sym_name(p, SYM_USERS, user->value - 1),
sym_name(p, SYM_ROLES, bit), sym_name(p, SYM_ROLES, bit),
...@@ -1720,7 +1722,7 @@ static int role_bounds_sanity_check(void *key, void *datum, void *datap) ...@@ -1720,7 +1722,7 @@ static int role_bounds_sanity_check(void *key, void *datum, void *datap)
unsigned long bit; unsigned long bit;
if (++depth == POLICYDB_BOUNDS_MAXDEPTH) { if (++depth == POLICYDB_BOUNDS_MAXDEPTH) {
printk(KERN_ERR "SELinux: role %s: " pr_err("SELinux: role %s: "
"too deep or looped bounds\n", "too deep or looped bounds\n",
(char *) key); (char *) key);
return -EINVAL; return -EINVAL;
...@@ -1731,8 +1733,7 @@ static int role_bounds_sanity_check(void *key, void *datum, void *datap) ...@@ -1731,8 +1733,7 @@ static int role_bounds_sanity_check(void *key, void *datum, void *datap)
if (ebitmap_get_bit(&upper->types, bit)) if (ebitmap_get_bit(&upper->types, bit))
continue; continue;
printk(KERN_ERR pr_err("SELinux: boundary violated policy: "
"SELinux: boundary violated policy: "
"role=%s type=%s bounds=%s\n", "role=%s type=%s bounds=%s\n",
sym_name(p, SYM_ROLES, role->value - 1), sym_name(p, SYM_ROLES, role->value - 1),
sym_name(p, SYM_TYPES, bit), sym_name(p, SYM_TYPES, bit),
...@@ -1754,7 +1755,7 @@ static int type_bounds_sanity_check(void *key, void *datum, void *datap) ...@@ -1754,7 +1755,7 @@ static int type_bounds_sanity_check(void *key, void *datum, void *datap)
upper = datum; upper = datum;
while (upper->bounds) { while (upper->bounds) {
if (++depth == POLICYDB_BOUNDS_MAXDEPTH) { if (++depth == POLICYDB_BOUNDS_MAXDEPTH) {
printk(KERN_ERR "SELinux: type %s: " pr_err("SELinux: type %s: "
"too deep or looped boundary\n", "too deep or looped boundary\n",
(char *) key); (char *) key);
return -EINVAL; return -EINVAL;
...@@ -1765,7 +1766,7 @@ static int type_bounds_sanity_check(void *key, void *datum, void *datap) ...@@ -1765,7 +1766,7 @@ static int type_bounds_sanity_check(void *key, void *datum, void *datap)
BUG_ON(!upper); BUG_ON(!upper);
if (upper->attribute) { if (upper->attribute) {
printk(KERN_ERR "SELinux: type %s: " pr_err("SELinux: type %s: "
"bounded by attribute %s", "bounded by attribute %s",
(char *) key, (char *) key,
sym_name(p, SYM_TYPES, upper->value - 1)); sym_name(p, SYM_TYPES, upper->value - 1));
...@@ -1888,7 +1889,7 @@ static int range_read(struct policydb *p, void *fp) ...@@ -1888,7 +1889,7 @@ static int range_read(struct policydb *p, void *fp)
rc = -EINVAL; rc = -EINVAL;
if (!mls_range_isvalid(p, r)) { if (!mls_range_isvalid(p, r)) {
printk(KERN_WARNING "SELinux: rangetrans: invalid range\n"); pr_warn("SELinux: rangetrans: invalid range\n");
goto out; goto out;
} }
...@@ -2023,7 +2024,7 @@ static int genfs_read(struct policydb *p, void *fp) ...@@ -2023,7 +2024,7 @@ static int genfs_read(struct policydb *p, void *fp)
genfs_p = genfs, genfs = genfs->next) { genfs_p = genfs, genfs = genfs->next) {
rc = -EINVAL; rc = -EINVAL;
if (strcmp(newgenfs->fstype, genfs->fstype) == 0) { if (strcmp(newgenfs->fstype, genfs->fstype) == 0) {
printk(KERN_ERR "SELinux: dup genfs fstype %s\n", pr_err("SELinux: dup genfs fstype %s\n",
newgenfs->fstype); newgenfs->fstype);
goto out; goto out;
} }
...@@ -2073,7 +2074,7 @@ static int genfs_read(struct policydb *p, void *fp) ...@@ -2073,7 +2074,7 @@ static int genfs_read(struct policydb *p, void *fp)
if (!strcmp(newc->u.name, c->u.name) && if (!strcmp(newc->u.name, c->u.name) &&
(!c->v.sclass || !newc->v.sclass || (!c->v.sclass || !newc->v.sclass ||
newc->v.sclass == c->v.sclass)) { newc->v.sclass == c->v.sclass)) {
printk(KERN_ERR "SELinux: dup genfs entry (%s,%s)\n", pr_err("SELinux: dup genfs entry (%s,%s)\n",
genfs->fstype, c->u.name); genfs->fstype, c->u.name);
goto out; goto out;
} }
...@@ -2295,7 +2296,7 @@ int policydb_read(struct policydb *p, void *fp) ...@@ -2295,7 +2296,7 @@ int policydb_read(struct policydb *p, void *fp)
rc = -EINVAL; rc = -EINVAL;
if (le32_to_cpu(buf[0]) != POLICYDB_MAGIC) { if (le32_to_cpu(buf[0]) != POLICYDB_MAGIC) {
printk(KERN_ERR "SELinux: policydb magic number 0x%x does " pr_err("SELinux: policydb magic number 0x%x does "
"not match expected magic number 0x%x\n", "not match expected magic number 0x%x\n",
le32_to_cpu(buf[0]), POLICYDB_MAGIC); le32_to_cpu(buf[0]), POLICYDB_MAGIC);
goto bad; goto bad;
...@@ -2304,7 +2305,7 @@ int policydb_read(struct policydb *p, void *fp) ...@@ -2304,7 +2305,7 @@ int policydb_read(struct policydb *p, void *fp)
rc = -EINVAL; rc = -EINVAL;
len = le32_to_cpu(buf[1]); len = le32_to_cpu(buf[1]);
if (len != strlen(POLICYDB_STRING)) { if (len != strlen(POLICYDB_STRING)) {
printk(KERN_ERR "SELinux: policydb string length %d does not " pr_err("SELinux: policydb string length %d does not "
"match expected length %zu\n", "match expected length %zu\n",
len, strlen(POLICYDB_STRING)); len, strlen(POLICYDB_STRING));
goto bad; goto bad;
...@@ -2313,14 +2314,14 @@ int policydb_read(struct policydb *p, void *fp) ...@@ -2313,14 +2314,14 @@ int policydb_read(struct policydb *p, void *fp)
rc = -ENOMEM; rc = -ENOMEM;
policydb_str = kmalloc(len + 1, GFP_KERNEL); policydb_str = kmalloc(len + 1, GFP_KERNEL);
if (!policydb_str) { if (!policydb_str) {
printk(KERN_ERR "SELinux: unable to allocate memory for policydb " pr_err("SELinux: unable to allocate memory for policydb "
"string of length %d\n", len); "string of length %d\n", len);
goto bad; goto bad;
} }
rc = next_entry(policydb_str, fp, len); rc = next_entry(policydb_str, fp, len);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: truncated policydb string identifier\n"); pr_err("SELinux: truncated policydb string identifier\n");
kfree(policydb_str); kfree(policydb_str);
goto bad; goto bad;
} }
...@@ -2328,7 +2329,7 @@ int policydb_read(struct policydb *p, void *fp) ...@@ -2328,7 +2329,7 @@ int policydb_read(struct policydb *p, void *fp)
rc = -EINVAL; rc = -EINVAL;
policydb_str[len] = '\0'; policydb_str[len] = '\0';
if (strcmp(policydb_str, POLICYDB_STRING)) { if (strcmp(policydb_str, POLICYDB_STRING)) {
printk(KERN_ERR "SELinux: policydb string %s does not match " pr_err("SELinux: policydb string %s does not match "
"my string %s\n", policydb_str, POLICYDB_STRING); "my string %s\n", policydb_str, POLICYDB_STRING);
kfree(policydb_str); kfree(policydb_str);
goto bad; goto bad;
...@@ -2346,7 +2347,7 @@ int policydb_read(struct policydb *p, void *fp) ...@@ -2346,7 +2347,7 @@ int policydb_read(struct policydb *p, void *fp)
p->policyvers = le32_to_cpu(buf[0]); p->policyvers = le32_to_cpu(buf[0]);
if (p->policyvers < POLICYDB_VERSION_MIN || if (p->policyvers < POLICYDB_VERSION_MIN ||
p->policyvers > POLICYDB_VERSION_MAX) { p->policyvers > POLICYDB_VERSION_MAX) {
printk(KERN_ERR "SELinux: policydb version %d does not match " pr_err("SELinux: policydb version %d does not match "
"my version range %d-%d\n", "my version range %d-%d\n",
le32_to_cpu(buf[0]), POLICYDB_VERSION_MIN, POLICYDB_VERSION_MAX); le32_to_cpu(buf[0]), POLICYDB_VERSION_MIN, POLICYDB_VERSION_MAX);
goto bad; goto bad;
...@@ -2357,7 +2358,7 @@ int policydb_read(struct policydb *p, void *fp) ...@@ -2357,7 +2358,7 @@ int policydb_read(struct policydb *p, void *fp)
rc = -EINVAL; rc = -EINVAL;
if (p->policyvers < POLICYDB_VERSION_MLS) { if (p->policyvers < POLICYDB_VERSION_MLS) {
printk(KERN_ERR "SELinux: security policydb version %d " pr_err("SELinux: security policydb version %d "
"(MLS) not backwards compatible\n", "(MLS) not backwards compatible\n",
p->policyvers); p->policyvers);
goto bad; goto bad;
...@@ -2381,7 +2382,7 @@ int policydb_read(struct policydb *p, void *fp) ...@@ -2381,7 +2382,7 @@ int policydb_read(struct policydb *p, void *fp)
rc = -EINVAL; rc = -EINVAL;
info = policydb_lookup_compat(p->policyvers); info = policydb_lookup_compat(p->policyvers);
if (!info) { if (!info) {
printk(KERN_ERR "SELinux: unable to find policy compat info " pr_err("SELinux: unable to find policy compat info "
"for version %d\n", p->policyvers); "for version %d\n", p->policyvers);
goto bad; goto bad;
} }
...@@ -2389,7 +2390,7 @@ int policydb_read(struct policydb *p, void *fp) ...@@ -2389,7 +2390,7 @@ int policydb_read(struct policydb *p, void *fp)
rc = -EINVAL; rc = -EINVAL;
if (le32_to_cpu(buf[2]) != info->sym_num || if (le32_to_cpu(buf[2]) != info->sym_num ||
le32_to_cpu(buf[3]) != info->ocon_num) { le32_to_cpu(buf[3]) != info->ocon_num) {
printk(KERN_ERR "SELinux: policydb table sizes (%d,%d) do " pr_err("SELinux: policydb table sizes (%d,%d) do "
"not match mine (%d,%d)\n", le32_to_cpu(buf[2]), "not match mine (%d,%d)\n", le32_to_cpu(buf[2]),
le32_to_cpu(buf[3]), le32_to_cpu(buf[3]),
info->sym_num, info->ocon_num); info->sym_num, info->ocon_num);
...@@ -3417,7 +3418,7 @@ int policydb_write(struct policydb *p, void *fp) ...@@ -3417,7 +3418,7 @@ int policydb_write(struct policydb *p, void *fp)
* careful if you ever try to remove this restriction * careful if you ever try to remove this restriction
*/ */
if (p->policyvers < POLICYDB_VERSION_AVTAB) { if (p->policyvers < POLICYDB_VERSION_AVTAB) {
printk(KERN_ERR "SELinux: refusing to write policy version %d." pr_err("SELinux: refusing to write policy version %d."
" Because it is less than version %d\n", p->policyvers, " Because it is less than version %d\n", p->policyvers,
POLICYDB_VERSION_AVTAB); POLICYDB_VERSION_AVTAB);
return -EINVAL; return -EINVAL;
...@@ -3446,7 +3447,7 @@ int policydb_write(struct policydb *p, void *fp) ...@@ -3446,7 +3447,7 @@ int policydb_write(struct policydb *p, void *fp)
/* Write the version, config, and table sizes. */ /* Write the version, config, and table sizes. */
info = policydb_lookup_compat(p->policyvers); info = policydb_lookup_compat(p->policyvers);
if (!info) { if (!info) {
printk(KERN_ERR "SELinux: compatibility lookup failed for policy " pr_err("SELinux: compatibility lookup failed for policy "
"version %d", p->policyvers); "version %d", p->policyvers);
return -EINVAL; return -EINVAL;
} }
......
...@@ -136,8 +136,7 @@ static int selinux_set_mapping(struct policydb *pol, ...@@ -136,8 +136,7 @@ static int selinux_set_mapping(struct policydb *pol,
p_out->value = string_to_security_class(pol, p_in->name); p_out->value = string_to_security_class(pol, p_in->name);
if (!p_out->value) { if (!p_out->value) {
printk(KERN_INFO pr_info("SELinux: Class %s not defined in policy.\n",
"SELinux: Class %s not defined in policy.\n",
p_in->name); p_in->name);
if (pol->reject_unknown) if (pol->reject_unknown)
goto err; goto err;
...@@ -156,8 +155,7 @@ static int selinux_set_mapping(struct policydb *pol, ...@@ -156,8 +155,7 @@ static int selinux_set_mapping(struct policydb *pol,
p_out->perms[k] = string_to_av_perm(pol, p_out->value, p_out->perms[k] = string_to_av_perm(pol, p_out->value,
p_in->perms[k]); p_in->perms[k]);
if (!p_out->perms[k]) { if (!p_out->perms[k]) {
printk(KERN_INFO pr_info("SELinux: Permission %s in class %s not defined in policy.\n",
"SELinux: Permission %s in class %s not defined in policy.\n",
p_in->perms[k], p_in->name); p_in->perms[k], p_in->name);
if (pol->reject_unknown) if (pol->reject_unknown)
goto err; goto err;
...@@ -170,7 +168,7 @@ static int selinux_set_mapping(struct policydb *pol, ...@@ -170,7 +168,7 @@ static int selinux_set_mapping(struct policydb *pol,
} }
if (print_unknown_handle) if (print_unknown_handle)
printk(KERN_INFO "SELinux: the above unknown classes and permissions will be %s\n", pr_info("SELinux: the above unknown classes and permissions will be %s\n",
pol->allow_unknown ? "allowed" : "denied"); pol->allow_unknown ? "allowed" : "denied");
out_map->size = i; out_map->size = i;
...@@ -644,7 +642,7 @@ static void context_struct_compute_av(struct policydb *policydb, ...@@ -644,7 +642,7 @@ static void context_struct_compute_av(struct policydb *policydb,
if (unlikely(!tclass || tclass > policydb->p_classes.nprim)) { if (unlikely(!tclass || tclass > policydb->p_classes.nprim)) {
if (printk_ratelimit()) if (printk_ratelimit())
printk(KERN_WARNING "SELinux: Invalid class %hu\n", tclass); pr_warn("SELinux: Invalid class %hu\n", tclass);
return; return;
} }
...@@ -793,7 +791,7 @@ static int security_compute_validatetrans(struct selinux_state *state, ...@@ -793,7 +791,7 @@ static int security_compute_validatetrans(struct selinux_state *state,
ocontext = sidtab_search(sidtab, oldsid); ocontext = sidtab_search(sidtab, oldsid);
if (!ocontext) { if (!ocontext) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, oldsid); __func__, oldsid);
rc = -EINVAL; rc = -EINVAL;
goto out; goto out;
...@@ -801,7 +799,7 @@ static int security_compute_validatetrans(struct selinux_state *state, ...@@ -801,7 +799,7 @@ static int security_compute_validatetrans(struct selinux_state *state,
ncontext = sidtab_search(sidtab, newsid); ncontext = sidtab_search(sidtab, newsid);
if (!ncontext) { if (!ncontext) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, newsid); __func__, newsid);
rc = -EINVAL; rc = -EINVAL;
goto out; goto out;
...@@ -809,7 +807,7 @@ static int security_compute_validatetrans(struct selinux_state *state, ...@@ -809,7 +807,7 @@ static int security_compute_validatetrans(struct selinux_state *state,
tcontext = sidtab_search(sidtab, tasksid); tcontext = sidtab_search(sidtab, tasksid);
if (!tcontext) { if (!tcontext) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, tasksid); __func__, tasksid);
rc = -EINVAL; rc = -EINVAL;
goto out; goto out;
...@@ -883,7 +881,7 @@ int security_bounded_transition(struct selinux_state *state, ...@@ -883,7 +881,7 @@ int security_bounded_transition(struct selinux_state *state,
rc = -EINVAL; rc = -EINVAL;
old_context = sidtab_search(sidtab, old_sid); old_context = sidtab_search(sidtab, old_sid);
if (!old_context) { if (!old_context) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %u\n", pr_err("SELinux: %s: unrecognized SID %u\n",
__func__, old_sid); __func__, old_sid);
goto out; goto out;
} }
...@@ -891,7 +889,7 @@ int security_bounded_transition(struct selinux_state *state, ...@@ -891,7 +889,7 @@ int security_bounded_transition(struct selinux_state *state,
rc = -EINVAL; rc = -EINVAL;
new_context = sidtab_search(sidtab, new_sid); new_context = sidtab_search(sidtab, new_sid);
if (!new_context) { if (!new_context) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %u\n", pr_err("SELinux: %s: unrecognized SID %u\n",
__func__, new_sid); __func__, new_sid);
goto out; goto out;
} }
...@@ -1040,14 +1038,14 @@ void security_compute_xperms_decision(struct selinux_state *state, ...@@ -1040,14 +1038,14 @@ void security_compute_xperms_decision(struct selinux_state *state,
scontext = sidtab_search(sidtab, ssid); scontext = sidtab_search(sidtab, ssid);
if (!scontext) { if (!scontext) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, ssid); __func__, ssid);
goto out; goto out;
} }
tcontext = sidtab_search(sidtab, tsid); tcontext = sidtab_search(sidtab, tsid);
if (!tcontext) { if (!tcontext) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, tsid); __func__, tsid);
goto out; goto out;
} }
...@@ -1129,7 +1127,7 @@ void security_compute_av(struct selinux_state *state, ...@@ -1129,7 +1127,7 @@ void security_compute_av(struct selinux_state *state,
scontext = sidtab_search(sidtab, ssid); scontext = sidtab_search(sidtab, ssid);
if (!scontext) { if (!scontext) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, ssid); __func__, ssid);
goto out; goto out;
} }
...@@ -1140,7 +1138,7 @@ void security_compute_av(struct selinux_state *state, ...@@ -1140,7 +1138,7 @@ void security_compute_av(struct selinux_state *state,
tcontext = sidtab_search(sidtab, tsid); tcontext = sidtab_search(sidtab, tsid);
if (!tcontext) { if (!tcontext) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, tsid); __func__, tsid);
goto out; goto out;
} }
...@@ -1183,7 +1181,7 @@ void security_compute_av_user(struct selinux_state *state, ...@@ -1183,7 +1181,7 @@ void security_compute_av_user(struct selinux_state *state,
scontext = sidtab_search(sidtab, ssid); scontext = sidtab_search(sidtab, ssid);
if (!scontext) { if (!scontext) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, ssid); __func__, ssid);
goto out; goto out;
} }
...@@ -1194,7 +1192,7 @@ void security_compute_av_user(struct selinux_state *state, ...@@ -1194,7 +1192,7 @@ void security_compute_av_user(struct selinux_state *state,
tcontext = sidtab_search(sidtab, tsid); tcontext = sidtab_search(sidtab, tsid);
if (!tcontext) { if (!tcontext) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, tsid); __func__, tsid);
goto out; goto out;
} }
...@@ -1310,7 +1308,7 @@ static int security_sid_to_context_core(struct selinux_state *state, ...@@ -1310,7 +1308,7 @@ static int security_sid_to_context_core(struct selinux_state *state,
*scontext = scontextp; *scontext = scontextp;
goto out; goto out;
} }
printk(KERN_ERR "SELinux: %s: called before initial " pr_err("SELinux: %s: called before initial "
"load_policy on unknown SID %d\n", __func__, sid); "load_policy on unknown SID %d\n", __func__, sid);
rc = -EINVAL; rc = -EINVAL;
goto out; goto out;
...@@ -1323,7 +1321,7 @@ static int security_sid_to_context_core(struct selinux_state *state, ...@@ -1323,7 +1321,7 @@ static int security_sid_to_context_core(struct selinux_state *state,
else else
context = sidtab_search(sidtab, sid); context = sidtab_search(sidtab, sid);
if (!context) { if (!context) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, sid); __func__, sid);
rc = -EINVAL; rc = -EINVAL;
goto out_unlock; goto out_unlock;
...@@ -1678,14 +1676,14 @@ static int security_compute_sid(struct selinux_state *state, ...@@ -1678,14 +1676,14 @@ static int security_compute_sid(struct selinux_state *state,
scontext = sidtab_search(sidtab, ssid); scontext = sidtab_search(sidtab, ssid);
if (!scontext) { if (!scontext) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, ssid); __func__, ssid);
rc = -EINVAL; rc = -EINVAL;
goto out_unlock; goto out_unlock;
} }
tcontext = sidtab_search(sidtab, tsid); tcontext = sidtab_search(sidtab, tsid);
if (!tcontext) { if (!tcontext) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, tsid); __func__, tsid);
rc = -EINVAL; rc = -EINVAL;
goto out_unlock; goto out_unlock;
...@@ -1911,7 +1909,8 @@ static inline int convert_context_handle_invalid_context( ...@@ -1911,7 +1909,8 @@ static inline int convert_context_handle_invalid_context(
return -EINVAL; return -EINVAL;
if (!context_struct_to_string(policydb, context, &s, &len)) { if (!context_struct_to_string(policydb, context, &s, &len)) {
printk(KERN_WARNING "SELinux: Context %s would be invalid if enforcing\n", s); pr_warn("SELinux: Context %s would be invalid if enforcing\n",
s);
kfree(s); kfree(s);
} }
return 0; return 0;
...@@ -1962,7 +1961,7 @@ static int convert_context(u32 key, ...@@ -1962,7 +1961,7 @@ static int convert_context(u32 key,
c->len, &ctx, SECSID_NULL); c->len, &ctx, SECSID_NULL);
kfree(s); kfree(s);
if (!rc) { if (!rc) {
printk(KERN_INFO "SELinux: Context %s became valid (mapped).\n", pr_info("SELinux: Context %s became valid (mapped).\n",
c->str); c->str);
/* Replace string with mapped representation. */ /* Replace string with mapped representation. */
kfree(c->str); kfree(c->str);
...@@ -1974,7 +1973,7 @@ static int convert_context(u32 key, ...@@ -1974,7 +1973,7 @@ static int convert_context(u32 key,
goto out; goto out;
} else { } else {
/* Other error condition, e.g. ENOMEM. */ /* Other error condition, e.g. ENOMEM. */
printk(KERN_ERR "SELinux: Unable to map context %s, rc = %d.\n", pr_err("SELinux: Unable to map context %s, rc = %d.\n",
c->str, -rc); c->str, -rc);
goto out; goto out;
} }
...@@ -2033,7 +2032,7 @@ static int convert_context(u32 key, ...@@ -2033,7 +2032,7 @@ static int convert_context(u32 key,
oc = oc->next; oc = oc->next;
rc = -EINVAL; rc = -EINVAL;
if (!oc) { if (!oc) {
printk(KERN_ERR "SELinux: unable to look up" pr_err("SELinux: unable to look up"
" the initial SIDs list\n"); " the initial SIDs list\n");
goto bad; goto bad;
} }
...@@ -2065,7 +2064,7 @@ static int convert_context(u32 key, ...@@ -2065,7 +2064,7 @@ static int convert_context(u32 key,
context_destroy(c); context_destroy(c);
c->str = s; c->str = s;
c->len = len; c->len = len;
printk(KERN_INFO "SELinux: Context %s became invalid (unmapped).\n", pr_info("SELinux: Context %s became invalid (unmapped).\n",
c->str); c->str);
rc = 0; rc = 0;
goto out; goto out;
...@@ -2170,13 +2169,13 @@ int security_load_policy(struct selinux_state *state, void *data, size_t len) ...@@ -2170,13 +2169,13 @@ int security_load_policy(struct selinux_state *state, void *data, size_t len)
newpolicydb->len = len; newpolicydb->len = len;
/* If switching between different policy types, log MLS status */ /* If switching between different policy types, log MLS status */
if (policydb->mls_enabled && !newpolicydb->mls_enabled) if (policydb->mls_enabled && !newpolicydb->mls_enabled)
printk(KERN_INFO "SELinux: Disabling MLS support...\n"); pr_info("SELinux: Disabling MLS support...\n");
else if (!policydb->mls_enabled && newpolicydb->mls_enabled) else if (!policydb->mls_enabled && newpolicydb->mls_enabled)
printk(KERN_INFO "SELinux: Enabling MLS support...\n"); pr_info("SELinux: Enabling MLS support...\n");
rc = policydb_load_isids(newpolicydb, &newsidtab); rc = policydb_load_isids(newpolicydb, &newsidtab);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: unable to load the initial SIDs\n"); pr_err("SELinux: unable to load the initial SIDs\n");
policydb_destroy(newpolicydb); policydb_destroy(newpolicydb);
goto out; goto out;
} }
...@@ -2187,7 +2186,7 @@ int security_load_policy(struct selinux_state *state, void *data, size_t len) ...@@ -2187,7 +2186,7 @@ int security_load_policy(struct selinux_state *state, void *data, size_t len)
rc = security_preserve_bools(state, newpolicydb); rc = security_preserve_bools(state, newpolicydb);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: unable to preserve booleans\n"); pr_err("SELinux: unable to preserve booleans\n");
goto err; goto err;
} }
...@@ -2207,7 +2206,7 @@ int security_load_policy(struct selinux_state *state, void *data, size_t len) ...@@ -2207,7 +2206,7 @@ int security_load_policy(struct selinux_state *state, void *data, size_t len)
args.newp = newpolicydb; args.newp = newpolicydb;
rc = sidtab_map(&newsidtab, convert_context, &args); rc = sidtab_map(&newsidtab, convert_context, &args);
if (rc) { if (rc) {
printk(KERN_ERR "SELinux: unable to convert the internal" pr_err("SELinux: unable to convert the internal"
" representation of contexts in the new SID" " representation of contexts in the new SID"
" table\n"); " table\n");
goto err; goto err;
...@@ -2999,7 +2998,7 @@ int security_sid_mls_copy(struct selinux_state *state, ...@@ -2999,7 +2998,7 @@ int security_sid_mls_copy(struct selinux_state *state,
rc = -EINVAL; rc = -EINVAL;
context1 = sidtab_search(sidtab, sid); context1 = sidtab_search(sidtab, sid);
if (!context1) { if (!context1) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, sid); __func__, sid);
goto out_unlock; goto out_unlock;
} }
...@@ -3007,7 +3006,7 @@ int security_sid_mls_copy(struct selinux_state *state, ...@@ -3007,7 +3006,7 @@ int security_sid_mls_copy(struct selinux_state *state,
rc = -EINVAL; rc = -EINVAL;
context2 = sidtab_search(sidtab, mls_sid); context2 = sidtab_search(sidtab, mls_sid);
if (!context2) { if (!context2) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, mls_sid); __func__, mls_sid);
goto out_unlock; goto out_unlock;
} }
...@@ -3104,14 +3103,14 @@ int security_net_peersid_resolve(struct selinux_state *state, ...@@ -3104,14 +3103,14 @@ int security_net_peersid_resolve(struct selinux_state *state,
rc = -EINVAL; rc = -EINVAL;
nlbl_ctx = sidtab_search(sidtab, nlbl_sid); nlbl_ctx = sidtab_search(sidtab, nlbl_sid);
if (!nlbl_ctx) { if (!nlbl_ctx) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, nlbl_sid); __func__, nlbl_sid);
goto out; goto out;
} }
rc = -EINVAL; rc = -EINVAL;
xfrm_ctx = sidtab_search(sidtab, xfrm_sid); xfrm_ctx = sidtab_search(sidtab, xfrm_sid);
if (!xfrm_ctx) { if (!xfrm_ctx) {
printk(KERN_ERR "SELinux: %s: unrecognized SID %d\n", pr_err("SELinux: %s: unrecognized SID %d\n",
__func__, xfrm_sid); __func__, xfrm_sid);
goto out; goto out;
} }
...@@ -3202,7 +3201,7 @@ int security_get_permissions(struct selinux_state *state, ...@@ -3202,7 +3201,7 @@ int security_get_permissions(struct selinux_state *state,
rc = -EINVAL; rc = -EINVAL;
match = hashtab_search(policydb->p_classes.table, class); match = hashtab_search(policydb->p_classes.table, class);
if (!match) { if (!match) {
printk(KERN_ERR "SELinux: %s: unrecognized class %s\n", pr_err("SELinux: %s: unrecognized class %s\n",
__func__, class); __func__, class);
goto out; goto out;
} }
......
...@@ -214,8 +214,7 @@ int sidtab_context_to_sid(struct sidtab *s, ...@@ -214,8 +214,7 @@ int sidtab_context_to_sid(struct sidtab *s,
} }
sid = s->next_sid++; sid = s->next_sid++;
if (context->len) if (context->len)
printk(KERN_INFO pr_info("SELinux: Context %s is not valid (left unmapped).\n",
"SELinux: Context %s is not valid (left unmapped).\n",
context->str); context->str);
ret = sidtab_insert(s, sid, context); ret = sidtab_insert(s, sid, context);
if (ret) if (ret)
...@@ -253,7 +252,7 @@ void sidtab_hash_eval(struct sidtab *h, char *tag) ...@@ -253,7 +252,7 @@ void sidtab_hash_eval(struct sidtab *h, char *tag)
} }
} }
printk(KERN_DEBUG "%s: %d entries and %d/%d buckets used, longest " pr_debug("%s: %d entries and %d/%d buckets used, longest "
"chain length %d\n", tag, h->nel, slots_used, SIDTAB_SIZE, "chain length %d\n", tag, h->nel, slots_used, SIDTAB_SIZE,
max_chain_len); max_chain_len);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment