git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge to Fedora kernel-2.6.18-1.2255_FC5-vs2.0.2.2-rc9 patched with stable patch...
[linux-2.6.git]
/
include
/
linux
/
vs_base.h
diff --git
a/include/linux/vs_base.h
b/include/linux/vs_base.h
index
ed23add
..
c49e62c
100644
(file)
--- a/
include/linux/vs_base.h
+++ b/
include/linux/vs_base.h
@@
-8,6
+8,9
@@
#define vx_current_xid() vx_task_xid(current)
#define vx_current_xid() vx_task_xid(current)
+#define current_vx_info() (current->vx_info)
+
+
#define vx_check(c,m) __vx_check(vx_current_xid(),c,m)
#define vx_weak_check(c,m) ((m) ? vx_check(c,m) : 1)
#define vx_check(c,m) __vx_check(vx_current_xid(),c,m)
#define vx_weak_check(c,m) ((m) ? vx_check(c,m) : 1)
@@
-15,9
+18,9
@@
/*
* check current context for ADMIN/WATCH and
/*
* check current context for ADMIN/WATCH and
- * optionally agains supplied argument
+ * optionally agains
t
supplied argument
*/
*/
-static
__inline__
int __vx_check(xid_t cid, xid_t id, unsigned int mode)
+static
inline
int __vx_check(xid_t cid, xid_t id, unsigned int mode)
{
if (mode & VX_ARG_MASK) {
if ((mode & VX_IDENT) &&
{
if (mode & VX_ARG_MASK) {
if ((mode & VX_IDENT) &&
@@
-34,7
+37,8
@@
static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode)
return 1;
}
return (((mode & VX_ADMIN) && (cid == 0)) ||
return 1;
}
return (((mode & VX_ADMIN) && (cid == 0)) ||
- ((mode & VX_WATCH) && (cid == 1)));
+ ((mode & VX_WATCH) && (cid == 1)) ||
+ ((mode & VX_HOSTID) && (id == 0)));
}
}
@@
-51,6
+55,8
@@
static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode)
#define vx_mask_mask(v,f,m) (((v) & ~(m)) | ((v) & (f) & (m)))
#define vx_mask_mask(v,f,m) (((v) & ~(m)) | ((v) & (f) & (m)))
+#define vx_check_bit(v,n) ((v) & (1LL << (n)))
+
/* context flags */
/* context flags */
@@
-78,6
+84,13
@@
static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode)
#define vx_ccaps(c) vx_info_ccaps(current->vx_info,(c))
#define vx_ccaps(c) vx_info_ccaps(current->vx_info,(c))
+#define __vx_mcaps(v) ((v) ? (v)->vx_ccaps >> 32UL : ~0 )
+
+#define vx_info_mcaps(v,c) (__vx_mcaps(v) & (c))
+
+#define vx_mcaps(c) vx_info_mcaps(current->vx_info,(c))
+
+
#define vx_current_bcaps() \
(((current->vx_info) && !vx_flags(VXF_STATE_SETUP, 0)) ? \
current->vx_info->vx_bcaps : cap_bset)
#define vx_current_bcaps() \
(((current->vx_info) && !vx_flags(VXF_STATE_SETUP, 0)) ? \
current->vx_info->vx_bcaps : cap_bset)
@@
-87,5
+100,10
@@
static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode)
(current->vx_info && \
(current->vx_info->vx_initpid == (n)))
(current->vx_info && \
(current->vx_info->vx_initpid == (n)))
+#define vx_capable(b,c) (capable(b) || \
+ ((current->euid == 0) && vx_ccaps(c)))
+
+#else
+#warning duplicate inclusion
#endif
#endif