brintos

brintos / linux-shallow public Read only

0
0
Text · 1.2 KiB · 0c0c74d Raw
47 lines · c
1// SPDX-License-Identifier: GPL-2.02#include "reiserfs.h"3#include <linux/capability.h>4#include <linux/errno.h>5#include <linux/fs.h>6#include <linux/pagemap.h>7#include <linux/xattr.h>8#include "xattr.h"9#include <linux/uaccess.h>10 11static int12trusted_get(const struct xattr_handler *handler, struct dentry *unused,13	    struct inode *inode, const char *name, void *buffer, size_t size)14{15	if (!capable(CAP_SYS_ADMIN) || IS_PRIVATE(inode))16		return -EPERM;17 18	return reiserfs_xattr_get(inode, xattr_full_name(handler, name),19				  buffer, size);20}21 22static int23trusted_set(const struct xattr_handler *handler,24	    struct mnt_idmap *idmap, struct dentry *unused,25	    struct inode *inode, const char *name, const void *buffer,26	    size_t size, int flags)27{28	if (!capable(CAP_SYS_ADMIN) || IS_PRIVATE(inode))29		return -EPERM;30 31	return reiserfs_xattr_set(inode,32				  xattr_full_name(handler, name),33				  buffer, size, flags);34}35 36static bool trusted_list(struct dentry *dentry)37{38	return capable(CAP_SYS_ADMIN) && !IS_PRIVATE(d_inode(dentry));39}40 41const struct xattr_handler reiserfs_xattr_trusted_handler = {42	.prefix = XATTR_TRUSTED_PREFIX,43	.get = trusted_get,44	.set = trusted_set,45	.list = trusted_list,46};47