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
vserver 1.9.5.x5
[linux-2.6.git]
/
security
/
selinux
/
ss
/
sidtab.c
diff --git
a/security/selinux/ss/sidtab.c
b/security/selinux/ss/sidtab.c
index
69e035a
..
77d0002
100644
(file)
--- a/
security/selinux/ss/sidtab.c
+++ b/
security/selinux/ss/sidtab.c
@@
-16,8
+16,8
@@
(sid & SIDTAB_HASH_MASK)
#define INIT_SIDTAB_LOCK(s) spin_lock_init(&s->lock)
(sid & SIDTAB_HASH_MASK)
#define INIT_SIDTAB_LOCK(s) spin_lock_init(&s->lock)
-#define SIDTAB_LOCK(s
) spin_lock_irq(&s->lock
)
-#define SIDTAB_UNLOCK(s
) spin_unlock_irq(&s->lock
)
+#define SIDTAB_LOCK(s
, x) spin_lock_irqsave(&s->lock, x
)
+#define SIDTAB_UNLOCK(s
, x) spin_unlock_irqrestore(&s->lock, x
)
int sidtab_init(struct sidtab *s)
{
int sidtab_init(struct sidtab *s)
{
@@
-237,12
+237,13
@@
int sidtab_context_to_sid(struct sidtab *s,
{
u32 sid;
int ret = 0;
{
u32 sid;
int ret = 0;
+ unsigned long flags;
*out_sid = SECSID_NULL;
sid = sidtab_search_context(s, context);
if (!sid) {
*out_sid = SECSID_NULL;
sid = sidtab_search_context(s, context);
if (!sid) {
- SIDTAB_LOCK(s);
+ SIDTAB_LOCK(s
, flags
);
/* Rescan now that we hold the lock. */
sid = sidtab_search_context(s, context);
if (sid)
/* Rescan now that we hold the lock. */
sid = sidtab_search_context(s, context);
if (sid)
@@
-257,7
+258,7
@@
int sidtab_context_to_sid(struct sidtab *s,
if (ret)
s->next_sid--;
unlock_out:
if (ret)
s->next_sid--;
unlock_out:
- SIDTAB_UNLOCK(s);
+ SIDTAB_UNLOCK(s
, flags
);
}
if (ret)
}
if (ret)
@@
-320,17
+321,21
@@
void sidtab_destroy(struct sidtab *s)
void sidtab_set(struct sidtab *dst, struct sidtab *src)
{
void sidtab_set(struct sidtab *dst, struct sidtab *src)
{
- SIDTAB_LOCK(src);
+ unsigned long flags;
+
+ SIDTAB_LOCK(src, flags);
dst->htable = src->htable;
dst->nel = src->nel;
dst->next_sid = src->next_sid;
dst->shutdown = 0;
dst->htable = src->htable;
dst->nel = src->nel;
dst->next_sid = src->next_sid;
dst->shutdown = 0;
- SIDTAB_UNLOCK(src);
+ SIDTAB_UNLOCK(src
, flags
);
}
void sidtab_shutdown(struct sidtab *s)
{
}
void sidtab_shutdown(struct sidtab *s)
{
- SIDTAB_LOCK(s);
+ unsigned long flags;
+
+ SIDTAB_LOCK(s, flags);
s->shutdown = 1;
s->shutdown = 1;
- SIDTAB_UNLOCK(s);
+ SIDTAB_UNLOCK(s
, flags
);
}
}