On Mon, 7 Feb 2005, David S. Miller wrote:

Yep, and notice that the "extra bit" is (1 << 32), or the first bit
in the upper 32-bits of the 64-bit kernel pointer.  In short, we get
garbage from the upper 32-bits of the stack pointer, and need to
mask it out for 32-bit tasks.  The fix is obvious, try this:

===== include/asm-sparc64/compat.h 1.17 vs edited =====
--- 1.17/include/asm-sparc64/compat.h   2005-02-02 04:05:45 -08:00
+++ edited/include/asm-sparc64/compat.h 2005-02-07 19:51:15 -08:00
@@ -133,6 +133,8 @@

        if (!(test_thread_flag(TIF_32BIT)))
                usp += STACK_BIAS;
+       else
+               usp &= 0xffffffffUL;

        return (void __user *) (usp - len);
}

Hi Dave,

This patch takes care of the problem nicely (ypbind/ypwhich no longer hangs and ifconfig works fine). Thanks a lot for quick fixes.

Best regards

Jurij Smakov                                        [EMAIL PROTECTED]
Key: http://www.wooyd.org/pgpkey/                   KeyID: C99E03CC
-
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to