From: Greg Ungerer <gerg@snapgear.com>
To: Paul Mundt <lethal@linux-sh.org>,
David Howells <dhowells@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] nommu: vmalloc_32_user()/vm_insert_page() and symbol exports.
Date: Tue, 24 Jul 2007 16:02:21 +1000 [thread overview]
Message-ID: <46A595ED.5000508@snapgear.com> (raw)
In-Reply-To: <20070720075322.GC26080@linux-sh.org>
Hi Paul,
Paul Mundt wrote:
> Trying to survive an allmodconfig on a nommu platform results in
> many screen lengths of module unhappiness. Many of the mmap
> related things that binfmt_flat hooks in to are never exported
> despite being global, and there are also missing definitions for
> vmalloc_32_user() and vm_insert_page().
>
> I've implemented vmalloc_32_user() trying to stick as close to
> the mm/vmalloc.c implementation as possible, though we don't
> have any need for VM_USERMAP, so groveling for the VMA can be
> skipped. vm_insert_page() has been stubbed for now in order to
> keep the build happy.
Looks good to me.
You can add my acked by if you want:
Acked-by: Greg Ungerer <gerg@uclinux.org>
> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
>
> --
>
> mm/nommu.c | 45 +++++++++++++++++++++++++++++++++------------
> 1 file changed, 33 insertions(+), 12 deletions(-)
>
> diff --git a/mm/nommu.c b/mm/nommu.c
> index 1b105d2..9eef6a3 100644
> --- a/mm/nommu.c
> +++ b/mm/nommu.c
> @@ -54,12 +54,6 @@ DECLARE_RWSEM(nommu_vma_sem);
> struct vm_operations_struct generic_file_vm_ops = {
> };
>
> -EXPORT_SYMBOL(vfree);
> -EXPORT_SYMBOL(vmalloc_to_page);
> -EXPORT_SYMBOL(vmalloc_32);
> -EXPORT_SYMBOL(vmap);
> -EXPORT_SYMBOL(vunmap);
> -
> /*
> * Handle all mappings that got truncated by a "truncate()"
> * system call.
> @@ -168,7 +162,6 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
> finish_or_fault:
> return i ? : -EFAULT;
> }
> -
> EXPORT_SYMBOL(get_user_pages);
>
> DEFINE_RWLOCK(vmlist_lock);
> @@ -178,6 +171,7 @@ void vfree(void *addr)
> {
> kfree(addr);
> }
> +EXPORT_SYMBOL(vfree);
>
> void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot)
> {
> @@ -186,17 +180,19 @@ void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot)
> */
> return kmalloc(size, (gfp_mask | __GFP_COMP) & ~__GFP_HIGHMEM);
> }
> +EXPORT_SYMBOL(__vmalloc);
>
> struct page * vmalloc_to_page(void *addr)
> {
> return virt_to_page(addr);
> }
> +EXPORT_SYMBOL(vmalloc_to_page);
>
> unsigned long vmalloc_to_pfn(void *addr)
> {
> return page_to_pfn(virt_to_page(addr));
> }
> -
> +EXPORT_SYMBOL(vmalloc_to_pfn);
>
> long vread(char *buf, char *addr, unsigned long count)
> {
> @@ -237,9 +233,8 @@ void *vmalloc_node(unsigned long size, int node)
> }
> EXPORT_SYMBOL(vmalloc_node);
>
> -/*
> - * vmalloc_32 - allocate virtually continguos memory (32bit addressable)
> - *
> +/**
> + * vmalloc_32 - allocate virtually contiguous memory (32bit addressable)
> * @size: allocation size
> *
> * Allocate enough 32bit PA addressable pages to cover @size from the
> @@ -249,17 +244,33 @@ void *vmalloc_32(unsigned long size)
> {
> return __vmalloc(size, GFP_KERNEL, PAGE_KERNEL);
> }
> +EXPORT_SYMBOL(vmalloc_32);
> +
> +/**
> + * vmalloc_32_user - allocate zeroed virtually contiguous 32bit memory
> + * @size: allocation size
> + *
> + * The resulting memory area is 32bit addressable and zeroed so it can be
> + * mapped to userspace without leaking data.
> + */
> +void *vmalloc_32_user(unsigned long size)
> +{
> + return __vmalloc(size, GFP_KERNEL | __GFP_ZERO, PAGE_KERNEL);
> +}
> +EXPORT_SYMBOL(vmalloc_32_user);
>
> void *vmap(struct page **pages, unsigned int count, unsigned long flags, pgprot_t prot)
> {
> BUG();
> return NULL;
> }
> +EXPORT_SYMBOL(vmap);
>
> void vunmap(void *addr)
> {
> BUG();
> }
> +EXPORT_SYMBOL(vunmap);
>
> /*
> * Implement a stub for vmalloc_sync_all() if the architecture chose not to
> @@ -269,6 +280,13 @@ void __attribute__((weak)) vmalloc_sync_all(void)
> {
> }
>
> +int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
> + struct page *page)
> +{
> + return -EINVAL;
> +}
> +EXPORT_SYMBOL(vm_insert_page);
> +
> /*
> * sys_brk() for the most part doesn't need the global kernel
> * lock, except when an application is doing something nasty
> @@ -994,6 +1012,7 @@ unsigned long do_mmap_pgoff(struct file *file,
> show_free_areas();
> return -ENOMEM;
> }
> +EXPORT_SYMBOL(do_mmap_pgoff);
>
> /*
> * handle mapping disposal for uClinux
> @@ -1074,6 +1093,7 @@ int do_munmap(struct mm_struct *mm, unsigned long addr, size_t len)
>
> return 0;
> }
> +EXPORT_SYMBOL(do_munmap);
>
> asmlinkage long sys_munmap(unsigned long addr, size_t len)
> {
> @@ -1164,6 +1184,7 @@ unsigned long do_mremap(unsigned long addr,
>
> return vma->vm_start;
> }
> +EXPORT_SYMBOL(do_mremap);
>
> asmlinkage unsigned long sys_mremap(unsigned long addr,
> unsigned long old_len, unsigned long new_len,
> @@ -1231,7 +1252,6 @@ unsigned long get_unmapped_area(struct file *file, unsigned long addr,
>
> return get_area(file, addr, len, pgoff, flags);
> }
> -
> EXPORT_SYMBOL(get_unmapped_area);
>
> /*
> @@ -1346,6 +1366,7 @@ int filemap_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
> BUG();
> return 0;
> }
> +EXPORT_SYMBOL(filemap_fault);
>
> /*
> * Access another process' address space.
>
--
------------------------------------------------------------------------
Greg Ungerer -- Chief Software Dude EMAIL: gerg@snapgear.com
Secure Computing Corporation PHONE: +61 7 3435 2888
825 Stanley St, FAX: +61 7 3891 3630
Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com
prev parent reply other threads:[~2007-07-24 6:02 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-20 7:53 [PATCH] nommu: vmalloc_32_user()/vm_insert_page() and symbol exports Paul Mundt
2007-07-24 6:02 ` Greg Ungerer [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46A595ED.5000508@snapgear.com \
--to=gerg@snapgear.com \
--cc=akpm@linux-foundation.org \
--cc=dhowells@redhat.com \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.