Hi,

On Mon, 19 Jul 1999, Philip Blundell wrote:

> >According to loglevel.c, it is calling `syscall( SYS_syslog, 8, NULL,
> >level )', but according to do_syslog, it is receiving
> >do_syslog(type=3D9437287 buf=3D=EF=A1 len=3D0 ) regardless of the value=
> > of
> >`level'.  Every other program that calls do_syslog appears to work
> 
> This is probably the same bug in syscall() that Kyle Mestery reported last 
> week (or whenever it was).  It is a kernel problem and the fix is pretty 
> trivial; you should be able to find it in the archives for this mailing list.
> 
Here is the code I am running (the patch Phil mentioned above) that
alleviated my problems with syscall():

SYMBOL_NAME(sys_syscall):
        eor     r6, r0, #OS_NUMBER << 20
        cmp     r6, #NR_syscalls        @ check range
        add     sp, sp, #4              @ take of the save of our r4
        ldmib   sp, {r0 - r4}           @ get our args
        str     r4, [sp, #-4]!          @ Put our arg on the stack
        ldrle   pc, [r5, r6, lsl #2]
        mov     r0, #-ENOSYS
        mov     pc, lr

This has worked for me.  Replace the beginning of sys_syscall() in
arch/arm/kernel/entry-common.S with what I have above, and it should
work.

--
Kyle Mestery                    | StorageTek's Storage Networking Group
[EMAIL PROTECTED]                | http://www.freebsd.org/
[EMAIL PROTECTED]           | http://www.netwinder.org/
        Protect your right to privacy: www.freecrypto.org

unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]

Reply via email to