summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-06-15 01:55:58 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-06-15 01:55:58 +0000
commit53b3988d474435254a3b053a68bb24ce9e439295 (patch)
treef8da8e40f01f4ad02bbd76b8c9920749b118235f /kernel
parentb0cb48abe83d1a4389ea938bf624f8baa82c5047 (diff)
Merge with 2.3.99-pre9.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/exec_domain.c24
-rw-r--r--kernel/fork.c2
-rw-r--r--kernel/ksyms.c5
3 files changed, 18 insertions, 13 deletions
diff --git a/kernel/exec_domain.c b/kernel/exec_domain.c
index 4060c802a..3f3b5fc16 100644
--- a/kernel/exec_domain.c
+++ b/kernel/exec_domain.c
@@ -23,7 +23,7 @@ struct exec_domain default_exec_domain = {
};
static struct exec_domain *exec_domains = &default_exec_domain;
-static spinlock_t exec_domains_lock = SPIN_LOCK_UNLOCKED;
+static rwlock_t exec_domains_lock = RW_LOCK_UNLOCKED;
static asmlinkage void no_lcall7(int segment, struct pt_regs * regs)
{
@@ -48,15 +48,15 @@ static struct exec_domain *lookup_exec_domain(unsigned long personality)
unsigned long pers = personality & PER_MASK;
struct exec_domain *it;
- spin_lock(&exec_domains_lock);
+ read_lock(&exec_domains_lock);
for (it=exec_domains; it; it=it->next)
if (pers >= it->pers_low && pers <= it->pers_high) {
if (!try_inc_mod_count(it->module))
continue;
- spin_unlock(&exec_domains_lock);
+ read_unlock(&exec_domains_lock);
return it;
}
- spin_unlock(&exec_domains_lock);
+ read_unlock(&exec_domains_lock);
/* Should never get this far. */
printk(KERN_ERR "No execution domain for personality 0x%02lx\n", pers);
@@ -71,15 +71,15 @@ int register_exec_domain(struct exec_domain *it)
return -EINVAL;
if (it->next)
return -EBUSY;
- spin_lock(&exec_domains_lock);
+ write_lock(&exec_domains_lock);
for (tmp=exec_domains; tmp; tmp=tmp->next)
if (tmp == it) {
- spin_unlock(&exec_domains_lock);
+ write_unlock(&exec_domains_lock);
return -EBUSY;
}
it->next = exec_domains;
exec_domains = it;
- spin_unlock(&exec_domains_lock);
+ write_unlock(&exec_domains_lock);
return 0;
}
@@ -88,17 +88,17 @@ int unregister_exec_domain(struct exec_domain *it)
struct exec_domain ** tmp;
tmp = &exec_domains;
- spin_lock(&exec_domains_lock);
+ write_lock(&exec_domains_lock);
while (*tmp) {
if (it == *tmp) {
*tmp = it->next;
it->next = NULL;
- spin_unlock(&exec_domains_lock);
+ write_unlock(&exec_domains_lock);
return 0;
}
tmp = &(*tmp)->next;
}
- spin_unlock(&exec_domains_lock);
+ write_unlock(&exec_domains_lock);
return -EINVAL;
}
@@ -148,11 +148,11 @@ int get_exec_domain_list(char * page)
int len = 0;
struct exec_domain * e;
- spin_lock(&exec_domains_lock);
+ read_lock(&exec_domains_lock);
for (e=exec_domains; e && len < PAGE_SIZE - 80; e=e->next)
len += sprintf(page+len, "%d-%d\t%-16s\t[%s]\n",
e->pers_low, e->pers_high, e->name,
e->module ? e->module->name : "kernel");
- spin_unlock(&exec_domains_lock);
+ read_unlock(&exec_domains_lock);
return len;
}
diff --git a/kernel/fork.c b/kernel/fork.c
index aa350672a..4300d242d 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -674,7 +674,7 @@ int do_fork(unsigned long clone_flags, unsigned long usp, struct pt_regs *regs)
if ((clone_flags & CLONE_VFORK) || !(clone_flags & CLONE_PARENT)) {
p->p_opptr = current;
- if (!(current->flags & PF_PTRACED))
+ if (!(p->flags & PF_PTRACED))
p->p_pptr = current;
}
p->p_cptr = NULL;
diff --git a/kernel/ksyms.c b/kernel/ksyms.c
index af22705ec..4f60cf8dc 100644
--- a/kernel/ksyms.c
+++ b/kernel/ksyms.c
@@ -118,6 +118,7 @@ EXPORT_SYMBOL(kfree);
EXPORT_SYMBOL(kfree_s);
EXPORT_SYMBOL(vmalloc);
EXPORT_SYMBOL(vfree);
+EXPORT_SYMBOL(__vmalloc);
EXPORT_SYMBOL(mem_map);
EXPORT_SYMBOL(remap_page_range);
EXPORT_SYMBOL(max_mapnr);
@@ -218,6 +219,9 @@ EXPORT_SYMBOL(posix_unblock_lock);
EXPORT_SYMBOL(locks_mandatory_area);
EXPORT_SYMBOL(dput);
EXPORT_SYMBOL(have_submounts);
+EXPORT_SYMBOL(d_genocide);
+EXPORT_SYMBOL(d_find_alias);
+EXPORT_SYMBOL(d_prune_aliases);
EXPORT_SYMBOL(prune_dcache);
EXPORT_SYMBOL(shrink_dcache_sb);
EXPORT_SYMBOL(shrink_dcache_parent);
@@ -248,6 +252,7 @@ EXPORT_SYMBOL(page_symlink_inode_operations);
EXPORT_SYMBOL(block_fsync);
EXPORT_SYMBOL(block_symlink);
EXPORT_SYMBOL(vfs_readdir);
+EXPORT_SYMBOL(dcache_readdir);
/* for stackable file systems (lofs, wrapfs, cryptfs, etc.) */
EXPORT_SYMBOL(default_llseek);