linux/security/landlock/object.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Landlock LSM - Object management
 *
 * Copyright © 2016-2020 Mickaël Salaün <[email protected]>
 * Copyright © 2018-2020 ANSSI
 */

#ifndef _SECURITY_LANDLOCK_OBJECT_H
#define _SECURITY_LANDLOCK_OBJECT_H

#include <linux/compiler_types.h>
#include <linux/refcount.h>
#include <linux/spinlock.h>

struct landlock_object;

/**
 * struct landlock_object_underops - Operations on an underlying object
 */
struct landlock_object_underops {};

/**
 * struct landlock_object - Security blob tied to a kernel object
 *
 * The goal of this structure is to enable to tie a set of ephemeral access
 * rights (pertaining to different domains) to a kernel object (e.g an inode)
 * in a safe way.  This implies to handle concurrent use and modification.
 *
 * The lifetime of a &struct landlock_object depends on the rules referring to
 * it.
 */
struct landlock_object {};

struct landlock_object *
landlock_create_object(const struct landlock_object_underops *const underops,
		       void *const underobj);

void landlock_put_object(struct landlock_object *const object);

static inline void landlock_get_object(struct landlock_object *const object)
{}

#endif /* _SECURITY_LANDLOCK_OBJECT_H */