mirror of https://gitee.com/openkylin/linux.git
CRIS: Export missing function symbols
strcmp was lost when all other string functions were removed, but we still have an optimized version for this on CRISv32, so any driver built as a module would not have access to this symbol. In a similar manner, we had optimized versions of csum_partial_copy_from_user and __do_clear_user but no exported symbols for them, breaking bunch of other drivers when built as a module. At the same time, move EXPORT_SYMBOL(__copy_user) and EXPORT_SYMBOL(__copy_user_zeroing) C-files so it's located together with the function definition. Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
This commit is contained in:
parent
82e6df1e86
commit
dbd3c7e1bf
|
@ -30,8 +30,7 @@
|
||||||
/* Copy to userspace. This is based on the memcpy used for
|
/* Copy to userspace. This is based on the memcpy used for
|
||||||
kernel-to-kernel copying; see "string.c". */
|
kernel-to-kernel copying; see "string.c". */
|
||||||
|
|
||||||
unsigned long
|
unsigned long __copy_user(void __user *pdst, const void *psrc, unsigned long pn)
|
||||||
__copy_user (void __user *pdst, const void *psrc, unsigned long pn)
|
|
||||||
{
|
{
|
||||||
/* We want the parameters put in special registers.
|
/* We want the parameters put in special registers.
|
||||||
Make sure the compiler is able to make something useful of this.
|
Make sure the compiler is able to make something useful of this.
|
||||||
|
@ -187,13 +186,14 @@ __copy_user (void __user *pdst, const void *psrc, unsigned long pn)
|
||||||
|
|
||||||
return retn;
|
return retn;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__copy_user);
|
||||||
|
|
||||||
/* Copy from user to kernel, zeroing the bytes that were inaccessible in
|
/* Copy from user to kernel, zeroing the bytes that were inaccessible in
|
||||||
userland. The return-value is the number of bytes that were
|
userland. The return-value is the number of bytes that were
|
||||||
inaccessible. */
|
inaccessible. */
|
||||||
|
|
||||||
unsigned long
|
unsigned long __copy_user_zeroing(void *pdst, const void __user *psrc,
|
||||||
__copy_user_zeroing(void *pdst, const void __user *psrc, unsigned long pn)
|
unsigned long pn)
|
||||||
{
|
{
|
||||||
/* We want the parameters put in special registers.
|
/* We want the parameters put in special registers.
|
||||||
Make sure the compiler is able to make something useful of this.
|
Make sure the compiler is able to make something useful of this.
|
||||||
|
@ -369,11 +369,10 @@ __copy_user_zeroing(void *pdst, const void __user *psrc, unsigned long pn)
|
||||||
|
|
||||||
return retn + n;
|
return retn + n;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__copy_user_zeroing);
|
||||||
|
|
||||||
/* Zero userspace. */
|
/* Zero userspace. */
|
||||||
|
unsigned long __do_clear_user(void __user *pto, unsigned long pn)
|
||||||
unsigned long
|
|
||||||
__do_clear_user (void __user *pto, unsigned long pn)
|
|
||||||
{
|
{
|
||||||
/* We want the parameters put in special registers.
|
/* We want the parameters put in special registers.
|
||||||
Make sure the compiler is able to make something useful of this.
|
Make sure the compiler is able to make something useful of this.
|
||||||
|
@ -521,3 +520,4 @@ __do_clear_user (void __user *pto, unsigned long pn)
|
||||||
|
|
||||||
return retn;
|
return retn;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__do_clear_user);
|
||||||
|
|
|
@ -26,8 +26,7 @@
|
||||||
/* Copy to userspace. This is based on the memcpy used for
|
/* Copy to userspace. This is based on the memcpy used for
|
||||||
kernel-to-kernel copying; see "string.c". */
|
kernel-to-kernel copying; see "string.c". */
|
||||||
|
|
||||||
unsigned long
|
unsigned long __copy_user(void __user *pdst, const void *psrc, unsigned long pn)
|
||||||
__copy_user (void __user *pdst, const void *psrc, unsigned long pn)
|
|
||||||
{
|
{
|
||||||
/* We want the parameters put in special registers.
|
/* We want the parameters put in special registers.
|
||||||
Make sure the compiler is able to make something useful of this.
|
Make sure the compiler is able to make something useful of this.
|
||||||
|
@ -155,13 +154,13 @@ __copy_user (void __user *pdst, const void *psrc, unsigned long pn)
|
||||||
|
|
||||||
return retn;
|
return retn;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__copy_user);
|
||||||
|
|
||||||
/* Copy from user to kernel, zeroing the bytes that were inaccessible in
|
/* Copy from user to kernel, zeroing the bytes that were inaccessible in
|
||||||
userland. The return-value is the number of bytes that were
|
userland. The return-value is the number of bytes that were
|
||||||
inaccessible. */
|
inaccessible. */
|
||||||
|
unsigned long __copy_user_zeroing(void *pdst, const void __user *psrc,
|
||||||
unsigned long
|
unsigned long pn)
|
||||||
__copy_user_zeroing(void *pdst, const void __user *psrc, unsigned long pn)
|
|
||||||
{
|
{
|
||||||
/* We want the parameters put in special registers.
|
/* We want the parameters put in special registers.
|
||||||
Make sure the compiler is able to make something useful of this.
|
Make sure the compiler is able to make something useful of this.
|
||||||
|
@ -321,11 +320,10 @@ __copy_user_zeroing(void *pdst, const void __user *psrc, unsigned long pn)
|
||||||
|
|
||||||
return retn + n;
|
return retn + n;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__copy_user_zeroing);
|
||||||
|
|
||||||
/* Zero userspace. */
|
/* Zero userspace. */
|
||||||
|
unsigned long __do_clear_user(void __user *pto, unsigned long pn)
|
||||||
unsigned long
|
|
||||||
__do_clear_user (void __user *pto, unsigned long pn)
|
|
||||||
{
|
{
|
||||||
/* We want the parameters put in special registers.
|
/* We want the parameters put in special registers.
|
||||||
Make sure the compiler is able to make something useful of this.
|
Make sure the compiler is able to make something useful of this.
|
||||||
|
@ -468,3 +466,4 @@ __do_clear_user (void __user *pto, unsigned long pn)
|
||||||
|
|
||||||
return retn;
|
return retn;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__do_clear_user);
|
||||||
|
|
|
@ -47,16 +47,16 @@ EXPORT_SYMBOL(__negdi2);
|
||||||
EXPORT_SYMBOL(__ioremap);
|
EXPORT_SYMBOL(__ioremap);
|
||||||
EXPORT_SYMBOL(iounmap);
|
EXPORT_SYMBOL(iounmap);
|
||||||
|
|
||||||
/* Userspace access functions */
|
|
||||||
EXPORT_SYMBOL(__copy_user_zeroing);
|
|
||||||
EXPORT_SYMBOL(__copy_user);
|
|
||||||
|
|
||||||
#undef memcpy
|
#undef memcpy
|
||||||
#undef memset
|
#undef memset
|
||||||
extern void * memset(void *, int, __kernel_size_t);
|
extern void * memset(void *, int, __kernel_size_t);
|
||||||
extern void * memcpy(void *, const void *, __kernel_size_t);
|
extern void * memcpy(void *, const void *, __kernel_size_t);
|
||||||
EXPORT_SYMBOL(memcpy);
|
EXPORT_SYMBOL(memcpy);
|
||||||
EXPORT_SYMBOL(memset);
|
EXPORT_SYMBOL(memset);
|
||||||
|
#ifdef CONFIG_ETRAX_ARCH_V32
|
||||||
|
#undef strcmp
|
||||||
|
EXPORT_SYMBOL(strcmp);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ETRAX_FAST_TIMER
|
#ifdef CONFIG_ETRAX_FAST_TIMER
|
||||||
/* Fast timer functions */
|
/* Fast timer functions */
|
||||||
|
@ -66,3 +66,4 @@ EXPORT_SYMBOL(del_fast_timer);
|
||||||
EXPORT_SYMBOL(schedule_usleep);
|
EXPORT_SYMBOL(schedule_usleep);
|
||||||
#endif
|
#endif
|
||||||
EXPORT_SYMBOL(csum_partial);
|
EXPORT_SYMBOL(csum_partial);
|
||||||
|
EXPORT_SYMBOL(csum_partial_copy_from_user);
|
||||||
|
|
Loading…
Reference in New Issue