diff options
| author | David S. Miller <davem@kernel.bkbits.net> | 2003-01-15 07:05:17 -0800 |
|---|---|---|
| committer | David S. Miller <davem@kernel.bkbits.net> | 2003-01-15 07:05:17 -0800 |
| commit | 7662c9d225c8b02f906fe88b3f6fedbfcb4510fc (patch) | |
| tree | 8b3487f7d313404c9b0bf34c5c6bbf7d3e2d276b | |
| parent | 7ec077d66dcd4963d8ae148f23b00131a5e1b393 (diff) | |
| parent | d142cd23328e4357d2748cf059ff38511334963f (diff) | |
Merge davem@nuts.ninka.net:/home/davem/src/BK/sparc-2.5
into kernel.bkbits.net:/home/davem/sparc-2.5
| -rw-r--r-- | arch/sparc64/defconfig | 10 | ||||
| -rw-r--r-- | arch/sparc64/kernel/sys_sparc32.c | 25 |
2 files changed, 29 insertions, 6 deletions
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig index 30e2abaec37b..e27f9d68019a 100644 --- a/arch/sparc64/defconfig +++ b/arch/sparc64/defconfig @@ -43,6 +43,9 @@ CONFIG_HW_CONSOLE=y CONFIG_SMP=y # CONFIG_PREEMPT is not set CONFIG_NR_CPUS=4 +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_PROC_INTF=y +CONFIG_US3_FREQ=m CONFIG_SPARC64=y CONFIG_HOTPLUG=y CONFIG_HAVE_DEC_LOCK=y @@ -188,13 +191,13 @@ CONFIG_BLK_DEV_ALI15X3=y # CONFIG_WDC_ALI15X3 is not set # CONFIG_BLK_DEV_AMD74XX is not set CONFIG_BLK_DEV_CMD64X=y +# CONFIG_BLK_DEV_TRIFLEX is not set # CONFIG_BLK_DEV_CY82C693 is not set # CONFIG_BLK_DEV_CS5520 is not set # CONFIG_BLK_DEV_HPT34X is not set # CONFIG_BLK_DEV_HPT366 is not set # CONFIG_BLK_DEV_SC1200 is not set # CONFIG_BLK_DEV_PIIX is not set -# CONFIG_BLK_DEV_NFORCE is not set CONFIG_BLK_DEV_NS87415=y # CONFIG_BLK_DEV_OPTI621 is not set # CONFIG_BLK_DEV_PDC202XX_OLD is not set @@ -644,6 +647,8 @@ CONFIG_NFSD_V3=y CONFIG_NFSD_V4=y CONFIG_NFSD_TCP=y CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_RPCSEC_GSS_KRB5=m CONFIG_LOCKD=m CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=m @@ -878,7 +883,7 @@ CONFIG_USB_SERIAL_WHITEHEAT=m CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m CONFIG_USB_SERIAL_EMPEG=m CONFIG_USB_SERIAL_FTDI_SIO=m -CONFIG_USB_SERIAL_VISOR=m +# CONFIG_USB_SERIAL_VISOR is not set CONFIG_USB_SERIAL_IPAQ=m # CONFIG_USB_SERIAL_IR is not set CONFIG_USB_SERIAL_EDGEPORT=m @@ -975,6 +980,7 @@ CONFIG_CRYPTO_MD4=y CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m CONFIG_CRYPTO_DES=y CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_TWOFISH=m diff --git a/arch/sparc64/kernel/sys_sparc32.c b/arch/sparc64/kernel/sys_sparc32.c index 8b51679f8430..1dd8bebcda4e 100644 --- a/arch/sparc64/kernel/sys_sparc32.c +++ b/arch/sparc64/kernel/sys_sparc32.c @@ -2298,10 +2298,27 @@ static void cmsg32_recvmsg_fixup(struct msghdr *kmsg, unsigned long orig_cmsg_up __get_user(kcmsg32->cmsg_type, &ucmsg->cmsg_type); clen64 = kcmsg32->cmsg_len; - copy_from_user(CMSG32_DATA(kcmsg32), CMSG_DATA(ucmsg), - clen64 - CMSG_ALIGN(sizeof(*ucmsg))); - clen32 = ((clen64 - CMSG_ALIGN(sizeof(*ucmsg))) + - CMSG32_ALIGN(sizeof(struct cmsghdr32))); + if (kcmsg32->cmsg_level == SOL_SOCKET && + kcmsg32->cmsg_type == SO_TIMESTAMP) { + struct timeval tv; + struct compat_timeval *tv32; + + if (clen64 != CMSG_LEN(sizeof(struct timeval))) { + kfree(workbuf); + goto fail; + } + copy_from_user(&tv, CMSG_DATA(ucmsg), sizeof(tv)); + tv32 = (struct compat_timeval *) CMSG32_DATA(kcmsg32); + tv32->tv_sec = tv.tv_sec; + tv32->tv_usec = tv.tv_usec; + clen32 = sizeof(*tv32) + + CMSG32_ALIGN(sizeof(struct cmsghdr32)); + } else { + copy_from_user(CMSG32_DATA(kcmsg32), CMSG_DATA(ucmsg), + clen64 - CMSG_ALIGN(sizeof(*ucmsg))); + clen32 = ((clen64 - CMSG_ALIGN(sizeof(*ucmsg))) + + CMSG32_ALIGN(sizeof(struct cmsghdr32))); + } kcmsg32->cmsg_len = clen32; ucmsg = (struct cmsghdr *) (((char *)ucmsg) + CMSG_ALIGN(clen64)); |
