diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-06-15 01:55:58 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-06-15 01:55:58 +0000 |
commit | 53b3988d474435254a3b053a68bb24ce9e439295 (patch) | |
tree | f8da8e40f01f4ad02bbd76b8c9920749b118235f /kernel | |
parent | b0cb48abe83d1a4389ea938bf624f8baa82c5047 (diff) |
Merge with 2.3.99-pre9.
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/exec_domain.c | 24 | ||||
-rw-r--r-- | kernel/fork.c | 2 | ||||
-rw-r--r-- | kernel/ksyms.c | 5 |
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); |