security/safesetid/securityfs.c

Source file repositories/reference/linux-study-clean/security/safesetid/securityfs.c

File Facts

System
Linux kernel
Corpus path
security/safesetid/securityfs.c
Extension
.c
Size
8775 bytes
Lines
348
Domain
Core OS
Bucket
Security And Isolation
Inferred role
Core OS: operation-table or driver-model contract
Status
pattern implementation candidate

Why This File Exists

Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.

Dependency Surface

Detected Declarations

Annotated Snippet

static const struct file_operations safesetid_uid_file_fops = {
	.read = safesetid_uid_file_read,
	.write = safesetid_uid_file_write,
};

static const struct file_operations safesetid_gid_file_fops = {
	.read = safesetid_gid_file_read,
	.write = safesetid_gid_file_write,
};

int __init safesetid_init_securityfs(void)
{
	int ret;
	struct dentry *policy_dir;
	struct dentry *uid_policy_file;
	struct dentry *gid_policy_file;

	if (!safesetid_initialized)
		return 0;

	policy_dir = securityfs_create_dir("safesetid", NULL);
	if (IS_ERR(policy_dir)) {
		ret = PTR_ERR(policy_dir);
		goto error;
	}

	uid_policy_file = securityfs_create_file("uid_allowlist_policy", 0600,
			policy_dir, NULL, &safesetid_uid_file_fops);
	if (IS_ERR(uid_policy_file)) {
		ret = PTR_ERR(uid_policy_file);
		goto error;
	}

	gid_policy_file = securityfs_create_file("gid_allowlist_policy", 0600,
			policy_dir, NULL, &safesetid_gid_file_fops);
	if (IS_ERR(gid_policy_file)) {
		ret = PTR_ERR(gid_policy_file);
		goto error;
	}


	return 0;

error:
	securityfs_remove(policy_dir);
	return ret;
}

Annotation

Implementation Notes