blob: 3d7869a7532e527c16b36fa6beda9a382ae69500 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
/*
* Copyright (c) 2006-2009 Erez Zadok
* Copyright (c) 2006 Charles P. Wright
* Copyright (c) 2006-2007 Josef 'Jeff' Sipek
* Copyright (c) 2006 Junjiro Okajima
* Copyright (c) 2006 David P. Quigley
* Copyright (c) 2006-2009 Stony Brook University
* Copyright (c) 2006-2009 The Research Foundation of SUNY
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef _SIOQ_H
#define _SIOQ_H
struct deletewh_args {
struct unionfs_dir_state *namelist;
struct dentry *dentry;
int bindex;
};
struct is_opaque_args {
struct dentry *dentry;
};
struct create_args {
struct inode *parent;
struct dentry *dentry;
umode_t mode;
struct nameidata *nd;
};
struct mkdir_args {
struct inode *parent;
struct dentry *dentry;
umode_t mode;
};
struct mknod_args {
struct inode *parent;
struct dentry *dentry;
umode_t mode;
dev_t dev;
};
struct symlink_args {
struct inode *parent;
struct dentry *dentry;
char *symbuf;
};
struct unlink_args {
struct inode *parent;
struct dentry *dentry;
};
struct sioq_args {
struct completion comp;
struct work_struct work;
int err;
void *ret;
union {
struct deletewh_args deletewh;
struct is_opaque_args is_opaque;
struct create_args create;
struct mkdir_args mkdir;
struct mknod_args mknod;
struct symlink_args symlink;
struct unlink_args unlink;
};
};
/* Extern definitions for SIOQ functions */
extern int __init init_sioq(void);
extern void stop_sioq(void);
extern void run_sioq(work_func_t func, struct sioq_args *args);
/* Extern definitions for our privilege escalation helpers */
extern void __unionfs_create(struct work_struct *work);
extern void __unionfs_mkdir(struct work_struct *work);
extern void __unionfs_mknod(struct work_struct *work);
extern void __unionfs_symlink(struct work_struct *work);
extern void __unionfs_unlink(struct work_struct *work);
extern void __delete_whiteouts(struct work_struct *work);
extern void __is_opaque_dir(struct work_struct *work);
#endif /* not _SIOQ_H */
|