ERROR: "flush_cache_page" [drivers/staging/lustre/lustre/libcfs/libcfs.ko] undefined!
Signed-off-by: Geert Uytterhoeven <[email protected]>
---
arch/parisc/kernel/cache.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
index c035673..b521c0a 100644
--- a/arch/parisc/kernel/cache.c
+++ b/arch/parisc/kernel/cache.c
@@ -602,6 +602,7 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
__flush_cache_page(vma, vmaddr, PFN_PHYS(pfn));
}
}
+EXPORT_SYMBOL_GPL(flush_cache_page);
#ifdef CONFIG_PARISC_TMPALIAS
--
1.7.9.5
On Thu, 2013-09-05 at 11:33 +0200, Geert Uytterhoeven wrote:
> ERROR: "flush_cache_page" [drivers/staging/lustre/lustre/libcfs/libcfs.ko] undefined!
>
> Signed-off-by: Geert Uytterhoeven <[email protected]>
> ---
> arch/parisc/kernel/cache.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
> index c035673..b521c0a 100644
> --- a/arch/parisc/kernel/cache.c
> +++ b/arch/parisc/kernel/cache.c
> @@ -602,6 +602,7 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
> __flush_cache_page(vma, vmaddr, PFN_PHYS(pfn));
> }
> }
> +EXPORT_SYMBOL_GPL(flush_cache_page);
This is an internal API: no architecture exports this. Whoever is
trying to use it needs to use the correct API, so this is the wrong
patch.
James
On Thu, Sep 05, 2013 at 09:01:59AM -0700, James Bottomley wrote:
> > +EXPORT_SYMBOL_GPL(flush_cache_page);
>
> This is an internal API: no architecture exports this. Whoever is
> trying to use it needs to use the correct API, so this is the wrong
> patch.
>
I suspect it's copy_{to,from}_user_page being called here:
drivers/staging/lustre/lustre/libcfs/linux/linux-curproc.c:
copy_to_user_page(vma, page, addr,
which we could probably take out of line.
--Kyle
On Thu, Sep 5, 2013 at 7:13 PM, Kyle McMartin <[email protected]> wrote:
> On Thu, Sep 05, 2013 at 09:01:59AM -0700, James Bottomley wrote:
>> > +EXPORT_SYMBOL_GPL(flush_cache_page);
>>
>> This is an internal API: no architecture exports this. Whoever is
>> trying to use it needs to use the correct API, so this is the wrong
>> patch.
>>
>
> I suspect it's copy_{to,from}_user_page being called here:
Indeed. Sorry, I should have mentioned that.
> drivers/staging/lustre/lustre/libcfs/linux/linux-curproc.c:
> copy_to_user_page(vma, page, addr,
>
> which we could probably take out of line.
If you want to hide flush_cache_page() for modules, yes.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
On 9/5/2013 12:01 PM, James Bottomley wrote:
> On Thu, 2013-09-05 at 11:33 +0200, Geert Uytterhoeven wrote:
>> ERROR: "flush_cache_page" [drivers/staging/lustre/lustre/libcfs/libcfs.ko] undefined!
>>
>> Signed-off-by: Geert Uytterhoeven <[email protected]>
>> ---
>> arch/parisc/kernel/cache.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
>> index c035673..b521c0a 100644
>> --- a/arch/parisc/kernel/cache.c
>> +++ b/arch/parisc/kernel/cache.c
>> @@ -602,6 +602,7 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
>> __flush_cache_page(vma, vmaddr, PFN_PHYS(pfn));
>> }
>> }
>> +EXPORT_SYMBOL_GPL(flush_cache_page);
> This is an internal API: no architecture exports this. Whoever is
> trying to use it needs to use the correct API, so this is the wrong
> patch.
>
There is a declaration for it in arch/parisc/include/asm/cacheflush.h.
There are a bunch
of callers in mm. The interface in documented in
Documentation/cachetlb.txt. We currently
use it in copy_to_user_page and copy_from_user_page.
Dave
--
John David Anglin [email protected]