|
@@ -709,18 +709,16 @@ out:
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * avc_ss_reset - Flush the cache and revalidate migrated permissions.
|
|
|
|
- * @seqno: policy sequence number
|
|
|
|
|
|
+ * avc_flush - Flush the cache
|
|
*/
|
|
*/
|
|
-int avc_ss_reset(u32 seqno)
|
|
|
|
|
|
+static void avc_flush(void)
|
|
{
|
|
{
|
|
- struct avc_callback_node *c;
|
|
|
|
- int i, rc = 0, tmprc;
|
|
|
|
- unsigned long flag;
|
|
|
|
- struct avc_node *node;
|
|
|
|
struct hlist_head *head;
|
|
struct hlist_head *head;
|
|
struct hlist_node *next;
|
|
struct hlist_node *next;
|
|
|
|
+ struct avc_node *node;
|
|
spinlock_t *lock;
|
|
spinlock_t *lock;
|
|
|
|
+ unsigned long flag;
|
|
|
|
+ int i;
|
|
|
|
|
|
for (i = 0; i < AVC_CACHE_SLOTS; i++) {
|
|
for (i = 0; i < AVC_CACHE_SLOTS; i++) {
|
|
head = &avc_cache.slots[i];
|
|
head = &avc_cache.slots[i];
|
|
@@ -737,6 +735,18 @@ int avc_ss_reset(u32 seqno)
|
|
rcu_read_unlock();
|
|
rcu_read_unlock();
|
|
spin_unlock_irqrestore(lock, flag);
|
|
spin_unlock_irqrestore(lock, flag);
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * avc_ss_reset - Flush the cache and revalidate migrated permissions.
|
|
|
|
+ * @seqno: policy sequence number
|
|
|
|
+ */
|
|
|
|
+int avc_ss_reset(u32 seqno)
|
|
|
|
+{
|
|
|
|
+ struct avc_callback_node *c;
|
|
|
|
+ int rc = 0, tmprc;
|
|
|
|
+
|
|
|
|
+ avc_flush();
|
|
|
|
|
|
for (c = avc_callbacks; c; c = c->next) {
|
|
for (c = avc_callbacks; c; c = c->next) {
|
|
if (c->events & AVC_CALLBACK_RESET) {
|
|
if (c->events & AVC_CALLBACK_RESET) {
|