[Top] [All Lists]

Re: [FIX] sysmips(MIPS_ATMIC_SET, ...) ret_from_sys_call vs. o32_ret_fro

To: "Maciej W. Rozycki" <>
Subject: Re: [FIX] sysmips(MIPS_ATMIC_SET, ...) ret_from_sys_call vs. o32_ret_from_sys_call
From: Joe deBlaquiere <>
Date: Fri, 26 Jan 2001 09:41:49 -0600
Cc: Ralf Baechle <>, Florian Lohoff <>,
Organization: Red Hat, Inc.
References: <>
User-agent: Mozilla/5.0 (X11; U; Linux 2.2.16-22 i686; en-US; m18) Gecko/20001107 Netscape6/6.0
Ralf gently pointed out that there was the possibility of needing to fault the page for *p, which couldn't occur with ints off. So here's an updated version...

        /* this version is inherently single processor! */
        /* borrowed from Linux-2.4.0-test12 */
        /* mlock/munlock added - */
        case MIPS_ATOMIC_SET: {
                unsigned int tmp;
                unsigned int flags;

                p = (int *) arg1;
                errno = verify_area(VERIFY_WRITE, p, sizeof(*p));
                if (errno)
                        return errno;
                errno = 0;
                /* need to prevent page faults with ints off */
                if (sys_mlock(p,sizeof(*p)) != 0)
                        return -EAGAIN;
                /* actually _do_ the exchange */
                errno |= __get_user(tmp, p);
                errno |= __put_user(arg2, p);
                /* i don't think sys_munlock can fail here, and */
                /* I wouldn't know what to do if it did, so no  */
                /* reason to pay attention to the return value  */

                return tmp;

comments anyone?


Maciej W. Rozycki wrote:

On Thu, 25 Jan 2001, Joe deBlaquiere wrote:

So I've got the following code which seems to work... (I can't use the ll/sc ops on the Vr41xx since they are not implemeted!)


You are perfectly correct, with the exception you really want to make it:

as that's the correct option -- just undef it in arch/mips/ for
your CPU like it's done for others already.

 Shame on me I haven't sent the patch for MIPS_ATMIC_SET for non-ll/sc
processors yet.  I have it but it needs a few minor cleanups.

 Ralf, BTW, what do you think if we send a segfault on a memory access
violation instead of returning an error?  That would make the behaviour of
MIPS_ATMIC_SET consistent for any memory contents.  Does anything actually
rely on the function to return an error in such a situation?

Joe deBlaquiere
Red Hat, Inc.
307 Wynn Drive
Huntsville AL, 35805
voice : (256)-704-9200
fax   : (256)-837-3839

<Prev in Thread] Current Thread [Next in Thread>