forked from luck/tmp_suning_uos_patched
Merge branch 'master' of ssh://rsync.linux-nfs.org/home/trondmy/www_sites/rsync.linux-nfs.org/pub/linux/nfs-2.6
This commit is contained in:
commit
ab27642b59
30
.gitignore
vendored
Normal file
30
.gitignore
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
#
|
||||
# NOTE! Don't add files that are generated in specific
|
||||
# subdirectories here. Add them in the ".gitignore" file
|
||||
# in that subdirectory instead.
|
||||
#
|
||||
# Normal rules
|
||||
#
|
||||
.*
|
||||
*.o
|
||||
*.a
|
||||
*.s
|
||||
*.ko
|
||||
*.mod.c
|
||||
|
||||
#
|
||||
# Top-level generic files
|
||||
#
|
||||
vmlinux*
|
||||
System.map
|
||||
Module.symvers
|
||||
|
||||
#
|
||||
# Generated include files
|
||||
#
|
||||
include/asm
|
||||
include/config
|
||||
include/linux/autoconf.h
|
||||
include/linux/compile.h
|
||||
include/linux/version.h
|
||||
|
4
Makefile
4
Makefile
@ -1,7 +1,7 @@
|
||||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 14
|
||||
EXTRAVERSION =-rc4
|
||||
EXTRAVERSION =-rc5
|
||||
NAME=Affluent Albatross
|
||||
|
||||
# *DOCUMENTATION*
|
||||
@ -372,7 +372,7 @@ export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_ve
|
||||
# Files to ignore in find ... statements
|
||||
|
||||
RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS -o -name .pc -o -name .hg \) -prune -o
|
||||
RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS --exclude .pc --exclude .hg
|
||||
export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS --exclude .pc --exclude .hg
|
||||
|
||||
# ===========================================================================
|
||||
# Rules shared between *config targets and build targets
|
||||
|
@ -98,7 +98,10 @@ struct clk *clk_get(struct device *dev, const char *id)
|
||||
struct clk *clk = ERR_PTR(-ENOENT);
|
||||
int idno;
|
||||
|
||||
idno = (dev == NULL) ? -1 : to_platform_device(dev)->id;
|
||||
if (dev == NULL || dev->bus != &platform_bus_type)
|
||||
idno = -1;
|
||||
else
|
||||
idno = to_platform_device(dev)->id;
|
||||
|
||||
down(&clocks_sem);
|
||||
|
||||
|
@ -55,7 +55,14 @@ ENTRY(cpu_v6_proc_init)
|
||||
mov pc, lr
|
||||
|
||||
ENTRY(cpu_v6_proc_fin)
|
||||
mov pc, lr
|
||||
stmfd sp!, {lr}
|
||||
cpsid if @ disable interrupts
|
||||
bl v6_flush_kern_cache_all
|
||||
mrc p15, 0, r0, c1, c0, 0 @ ctrl register
|
||||
bic r0, r0, #0x1000 @ ...i............
|
||||
bic r0, r0, #0x0006 @ .............ca.
|
||||
mcr p15, 0, r0, c1, c0, 0 @ disable caches
|
||||
ldmfd sp!, {pc}
|
||||
|
||||
/*
|
||||
* cpu_v6_reset(loc)
|
||||
|
@ -123,8 +123,8 @@ swiotlb_init_with_default_size (size_t default_size)
|
||||
/*
|
||||
* Get IO TLB memory from the low pages
|
||||
*/
|
||||
io_tlb_start = alloc_bootmem_low_pages(io_tlb_nslabs *
|
||||
(1 << IO_TLB_SHIFT));
|
||||
io_tlb_start = alloc_bootmem_low_pages_limit(io_tlb_nslabs *
|
||||
(1 << IO_TLB_SHIFT), 0x100000000);
|
||||
if (!io_tlb_start)
|
||||
panic("Cannot allocate SWIOTLB buffer");
|
||||
io_tlb_end = io_tlb_start + io_tlb_nslabs * (1 << IO_TLB_SHIFT);
|
||||
|
@ -1,17 +1,17 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc6
|
||||
# Mon Aug 8 14:12:19 2005
|
||||
# Linux kernel version: 2.6.14-rc4
|
||||
# Thu Oct 20 08:29:10 2005
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_HAVE_DEC_LOCK=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
@ -26,6 +26,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
@ -36,6 +37,7 @@ CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
# CONFIG_IKCONFIG is not set
|
||||
# CONFIG_CPUSETS is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
@ -95,6 +97,7 @@ CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_NUMA is not set
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
@ -110,17 +113,18 @@ CONFIG_PPC_RTAS=y
|
||||
CONFIG_RTAS_PROC=y
|
||||
CONFIG_RTAS_FLASH=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# General setup
|
||||
# Bus Options
|
||||
#
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
CONFIG_PCI_NAMES=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
|
||||
#
|
||||
@ -132,8 +136,6 @@ CONFIG_PCI_NAMES=y
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
@ -163,8 +165,8 @@ CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
CONFIG_INET_TUNNEL=y
|
||||
CONFIG_IP_TCPDIAG=y
|
||||
CONFIG_IP_TCPDIAG_IPV6=y
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
|
||||
@ -181,6 +183,7 @@ CONFIG_INET6_TUNNEL=m
|
||||
CONFIG_IPV6_TUNNEL=m
|
||||
CONFIG_NETFILTER=y
|
||||
# CONFIG_NETFILTER_DEBUG is not set
|
||||
# CONFIG_NETFILTER_NETLINK is not set
|
||||
|
||||
#
|
||||
# IP: Netfilter Configuration
|
||||
@ -188,11 +191,14 @@ CONFIG_NETFILTER=y
|
||||
CONFIG_IP_NF_CONNTRACK=y
|
||||
# CONFIG_IP_NF_CT_ACCT is not set
|
||||
# CONFIG_IP_NF_CONNTRACK_MARK is not set
|
||||
# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
|
||||
CONFIG_IP_NF_CT_PROTO_SCTP=y
|
||||
CONFIG_IP_NF_FTP=m
|
||||
CONFIG_IP_NF_IRC=m
|
||||
# CONFIG_IP_NF_NETBIOS_NS is not set
|
||||
CONFIG_IP_NF_TFTP=m
|
||||
CONFIG_IP_NF_AMANDA=m
|
||||
# CONFIG_IP_NF_PPTP is not set
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_LIMIT=m
|
||||
@ -216,13 +222,16 @@ CONFIG_IP_NF_MATCH_OWNER=m
|
||||
CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
||||
CONFIG_IP_NF_MATCH_REALM=m
|
||||
CONFIG_IP_NF_MATCH_SCTP=m
|
||||
# CONFIG_IP_NF_MATCH_DCCP is not set
|
||||
CONFIG_IP_NF_MATCH_COMMENT=m
|
||||
CONFIG_IP_NF_MATCH_HASHLIMIT=m
|
||||
CONFIG_IP_NF_MATCH_STRING=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=m
|
||||
CONFIG_IP_NF_TARGET_LOG=m
|
||||
CONFIG_IP_NF_TARGET_ULOG=m
|
||||
CONFIG_IP_NF_TARGET_TCPMSS=m
|
||||
CONFIG_IP_NF_TARGET_NFQUEUE=m
|
||||
CONFIG_IP_NF_NAT=m
|
||||
CONFIG_IP_NF_NAT_NEEDED=y
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
@ -240,6 +249,7 @@ CONFIG_IP_NF_TARGET_ECN=m
|
||||
CONFIG_IP_NF_TARGET_DSCP=m
|
||||
CONFIG_IP_NF_TARGET_MARK=m
|
||||
CONFIG_IP_NF_TARGET_CLASSIFY=m
|
||||
CONFIG_IP_NF_TARGET_TTL=m
|
||||
CONFIG_IP_NF_RAW=m
|
||||
CONFIG_IP_NF_TARGET_NOTRACK=m
|
||||
CONFIG_IP_NF_ARPTABLES=m
|
||||
@ -251,6 +261,12 @@ CONFIG_IP_NF_ARP_MANGLE=m
|
||||
#
|
||||
# CONFIG_IP6_NF_QUEUE is not set
|
||||
# CONFIG_IP6_NF_IPTABLES is not set
|
||||
# CONFIG_IP6_NF_TARGET_NFQUEUE is not set
|
||||
|
||||
#
|
||||
# DCCP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_DCCP is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
@ -278,6 +294,7 @@ CONFIG_NET_CLS_ROUTE=y
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
@ -291,6 +308,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=y
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
# CONFIG_CONNECTOR is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
@ -322,7 +344,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
@ -395,6 +416,7 @@ CONFIG_IDEDMA_AUTO=y
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
# CONFIG_SCSI is not set
|
||||
|
||||
#
|
||||
@ -435,6 +457,11 @@ CONFIG_NETDEVICES=y
|
||||
#
|
||||
# CONFIG_ARCNET is not set
|
||||
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
# CONFIG_PHYLIB is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
@ -442,6 +469,7 @@ CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_CASSINI is not set
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
|
||||
#
|
||||
@ -462,15 +490,18 @@ CONFIG_E1000=m
|
||||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_YELLOWFIN is not set
|
||||
# CONFIG_R8169 is not set
|
||||
# CONFIG_SIS190 is not set
|
||||
CONFIG_SKGE=m
|
||||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_TIGON3 is not set
|
||||
# CONFIG_BNX2 is not set
|
||||
# CONFIG_SPIDER_NET is not set
|
||||
# CONFIG_MV643XX_ETH is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
# CONFIG_IXGB is not set
|
||||
# CONFIG_S2IO is not set
|
||||
|
||||
@ -552,6 +583,7 @@ CONFIG_HW_CONSOLE=y
|
||||
CONFIG_SERIAL_NONSTANDARD=y
|
||||
# CONFIG_ROCKETPORT is not set
|
||||
# CONFIG_CYCLADES is not set
|
||||
# CONFIG_DIGIEPCA is not set
|
||||
# CONFIG_MOXA_SMARTIO is not set
|
||||
# CONFIG_ISI is not set
|
||||
# CONFIG_SYNCLINK is not set
|
||||
@ -642,7 +674,6 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_I801 is not set
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
@ -656,7 +687,6 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
# CONFIG_I2C_VOODOO3 is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
# CONFIG_I2C_SENSOR is not set
|
||||
|
||||
#
|
||||
# Miscellaneous I2C Chip support
|
||||
@ -683,11 +713,16 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia Capabilities Port drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@ -756,10 +791,6 @@ CONFIG_FS_MBCACHE=y
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
@ -768,6 +799,7 @@ CONFIG_INOTIFY=y
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
@ -794,13 +826,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_XATTR=y
|
||||
# CONFIG_TMPFS_SECURITY is not set
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_HUGETLB_PAGE=y
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_RELAYFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
@ -846,6 +876,7 @@ CONFIG_SUNRPC=m
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
# CONFIG_9P_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
@ -923,6 +954,7 @@ CONFIG_NLS_ISO8859_15=m
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOG_BUF_SHIFT=15
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@ -981,7 +1013,12 @@ CONFIG_CRYPTO_DEFLATE=m
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=m
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_TEXTSEARCH=y
|
||||
CONFIG_TEXTSEARCH_KMP=m
|
||||
CONFIG_TEXTSEARCH_BM=m
|
||||
CONFIG_TEXTSEARCH_FSM=m
|
||||
|
@ -1,17 +1,17 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc6
|
||||
# Mon Aug 8 14:16:59 2005
|
||||
# Linux kernel version: 2.6.14-rc4
|
||||
# Thu Oct 20 08:30:23 2005
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_HAVE_DEC_LOCK=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
@ -26,6 +26,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
@ -37,6 +38,7 @@ CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
# CONFIG_CPUSETS is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
@ -97,6 +99,7 @@ CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_NUMA is not set
|
||||
# CONFIG_SCHED_SMT is not set
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
@ -109,19 +112,20 @@ CONFIG_HZ_250=y
|
||||
CONFIG_HZ=250
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
# CONFIG_HOTPLUG_CPU is not set
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# General setup
|
||||
# Bus Options
|
||||
#
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
CONFIG_PCI_NAMES=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
# CONFIG_HOTPLUG_CPU is not set
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
@ -132,8 +136,6 @@ CONFIG_PCI_NAMES=y
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
@ -163,8 +165,8 @@ CONFIG_INET_AH=m
|
||||
CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
CONFIG_INET_TUNNEL=y
|
||||
CONFIG_IP_TCPDIAG=m
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
|
||||
@ -175,6 +177,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETFILTER=y
|
||||
# CONFIG_NETFILTER_DEBUG is not set
|
||||
# CONFIG_NETFILTER_NETLINK is not set
|
||||
|
||||
#
|
||||
# IP: Netfilter Configuration
|
||||
@ -182,11 +185,14 @@ CONFIG_NETFILTER=y
|
||||
CONFIG_IP_NF_CONNTRACK=m
|
||||
CONFIG_IP_NF_CT_ACCT=y
|
||||
CONFIG_IP_NF_CONNTRACK_MARK=y
|
||||
CONFIG_IP_NF_CONNTRACK_EVENTS=y
|
||||
CONFIG_IP_NF_CT_PROTO_SCTP=m
|
||||
CONFIG_IP_NF_FTP=m
|
||||
CONFIG_IP_NF_IRC=m
|
||||
# CONFIG_IP_NF_NETBIOS_NS is not set
|
||||
CONFIG_IP_NF_TFTP=m
|
||||
CONFIG_IP_NF_AMANDA=m
|
||||
# CONFIG_IP_NF_PPTP is not set
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_LIMIT=m
|
||||
@ -210,14 +216,18 @@ CONFIG_IP_NF_MATCH_OWNER=m
|
||||
CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
||||
CONFIG_IP_NF_MATCH_REALM=m
|
||||
CONFIG_IP_NF_MATCH_SCTP=m
|
||||
# CONFIG_IP_NF_MATCH_DCCP is not set
|
||||
CONFIG_IP_NF_MATCH_COMMENT=m
|
||||
CONFIG_IP_NF_MATCH_CONNMARK=m
|
||||
CONFIG_IP_NF_MATCH_CONNBYTES=m
|
||||
CONFIG_IP_NF_MATCH_HASHLIMIT=m
|
||||
CONFIG_IP_NF_MATCH_STRING=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=m
|
||||
CONFIG_IP_NF_TARGET_LOG=m
|
||||
CONFIG_IP_NF_TARGET_ULOG=m
|
||||
CONFIG_IP_NF_TARGET_TCPMSS=m
|
||||
CONFIG_IP_NF_TARGET_NFQUEUE=m
|
||||
CONFIG_IP_NF_NAT=m
|
||||
CONFIG_IP_NF_NAT_NEEDED=y
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
@ -235,6 +245,7 @@ CONFIG_IP_NF_TARGET_ECN=m
|
||||
CONFIG_IP_NF_TARGET_DSCP=m
|
||||
CONFIG_IP_NF_TARGET_MARK=m
|
||||
CONFIG_IP_NF_TARGET_CLASSIFY=m
|
||||
CONFIG_IP_NF_TARGET_TTL=m
|
||||
CONFIG_IP_NF_TARGET_CONNMARK=m
|
||||
CONFIG_IP_NF_TARGET_CLUSTERIP=m
|
||||
CONFIG_IP_NF_RAW=m
|
||||
@ -243,6 +254,11 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
|
||||
#
|
||||
# DCCP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_DCCP is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
@ -270,6 +286,7 @@ CONFIG_NET_CLS_ROUTE=y
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
@ -283,6 +300,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=y
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
# CONFIG_CONNECTOR is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
@ -315,7 +337,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=65536
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CDROM_PKTCDVD=m
|
||||
CONFIG_CDROM_PKTCDVD_BUFFERS=8
|
||||
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
|
||||
@ -395,6 +416,7 @@ CONFIG_IDEDMA_AUTO=y
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
@ -422,6 +444,7 @@ CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_SPI_ATTRS=y
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
|
||||
#
|
||||
# SCSI low-level drivers
|
||||
@ -435,10 +458,12 @@ CONFIG_SCSI_SPI_ATTRS=y
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_MEGARAID_NEWGEN is not set
|
||||
# CONFIG_MEGARAID_LEGACY is not set
|
||||
# CONFIG_MEGARAID_SAS is not set
|
||||
CONFIG_SCSI_SATA=y
|
||||
# CONFIG_SCSI_SATA_AHCI is not set
|
||||
CONFIG_SCSI_SATA_SVW=y
|
||||
# CONFIG_SCSI_ATA_PIIX is not set
|
||||
# CONFIG_SCSI_SATA_MV is not set
|
||||
# CONFIG_SCSI_SATA_NV is not set
|
||||
# CONFIG_SCSI_SATA_PROMISE is not set
|
||||
# CONFIG_SCSI_SATA_QSTOR is not set
|
||||
@ -498,6 +523,7 @@ CONFIG_DM_ZERO=m
|
||||
# CONFIG_FUSION is not set
|
||||
# CONFIG_FUSION_SPI is not set
|
||||
# CONFIG_FUSION_FC is not set
|
||||
# CONFIG_FUSION_SAS is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
@ -540,7 +566,6 @@ CONFIG_IEEE1394_RAWIO=y
|
||||
#
|
||||
CONFIG_ADB_PMU=y
|
||||
CONFIG_PMAC_SMU=y
|
||||
# CONFIG_PMAC_BACKLIGHT is not set
|
||||
CONFIG_THERM_PM72=y
|
||||
|
||||
#
|
||||
@ -557,6 +582,11 @@ CONFIG_TUN=m
|
||||
#
|
||||
# CONFIG_ARCNET is not set
|
||||
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
# CONFIG_PHYLIB is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
@ -564,6 +594,7 @@ CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
CONFIG_SUNGEM=y
|
||||
# CONFIG_CASSINI is not set
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
|
||||
#
|
||||
@ -585,6 +616,7 @@ CONFIG_E1000=y
|
||||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_YELLOWFIN is not set
|
||||
# CONFIG_R8169 is not set
|
||||
# CONFIG_SIS190 is not set
|
||||
# CONFIG_SKGE is not set
|
||||
# CONFIG_SK98LIN is not set
|
||||
CONFIG_TIGON3=m
|
||||
@ -594,6 +626,7 @@ CONFIG_TIGON3=m
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
# CONFIG_IXGB is not set
|
||||
# CONFIG_S2IO is not set
|
||||
|
||||
@ -760,8 +793,8 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_I801 is not set
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
CONFIG_I2C_KEYWEST=y
|
||||
CONFIG_I2C_PMAC_SMU=y
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
@ -775,7 +808,6 @@ CONFIG_I2C_KEYWEST=y
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
# CONFIG_I2C_VOODOO3 is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
# CONFIG_I2C_SENSOR is not set
|
||||
|
||||
#
|
||||
# Miscellaneous I2C Chip support
|
||||
@ -802,11 +834,16 @@ CONFIG_I2C_KEYWEST=y
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia Capabilities Port drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@ -856,6 +893,7 @@ CONFIG_FB_RADEON_I2C=y
|
||||
# CONFIG_FB_KYRO is not set
|
||||
# CONFIG_FB_3DFX is not set
|
||||
# CONFIG_FB_VOODOO1 is not set
|
||||
# CONFIG_FB_CYBLA is not set
|
||||
# CONFIG_FB_TRIDENT is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
@ -937,6 +975,7 @@ CONFIG_USB_STORAGE_DPCM=y
|
||||
CONFIG_USB_STORAGE_SDDR09=y
|
||||
CONFIG_USB_STORAGE_SDDR55=y
|
||||
CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
# CONFIG_USB_STORAGE_ONETOUCH is not set
|
||||
|
||||
#
|
||||
# USB Input Devices
|
||||
@ -956,9 +995,11 @@ CONFIG_USB_HIDDEV=y
|
||||
# CONFIG_USB_MTOUCH is not set
|
||||
# CONFIG_USB_ITMTOUCH is not set
|
||||
# CONFIG_USB_EGALAX is not set
|
||||
# CONFIG_USB_YEALINK is not set
|
||||
# CONFIG_USB_XPAD is not set
|
||||
# CONFIG_USB_ATI_REMOTE is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
# CONFIG_USB_APPLETOUCH is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
@ -983,30 +1024,14 @@ CONFIG_USB_KAWETH=m
|
||||
CONFIG_USB_PEGASUS=m
|
||||
CONFIG_USB_RTL8150=m
|
||||
CONFIG_USB_USBNET=m
|
||||
|
||||
#
|
||||
# USB Host-to-Host Cables
|
||||
#
|
||||
CONFIG_USB_ALI_M5632=y
|
||||
CONFIG_USB_AN2720=y
|
||||
CONFIG_USB_BELKIN=y
|
||||
CONFIG_USB_GENESYS=y
|
||||
CONFIG_USB_NET1080=y
|
||||
CONFIG_USB_PL2301=y
|
||||
CONFIG_USB_KC2190=y
|
||||
|
||||
#
|
||||
# Intelligent USB Devices/Gadgets
|
||||
#
|
||||
CONFIG_USB_ARMLINUX=y
|
||||
CONFIG_USB_EPSON2888=y
|
||||
CONFIG_USB_ZAURUS=y
|
||||
CONFIG_USB_CDCETHER=y
|
||||
|
||||
#
|
||||
# USB Network Adapters
|
||||
#
|
||||
CONFIG_USB_AX8817X=y
|
||||
# CONFIG_USB_NET_AX8817X is not set
|
||||
CONFIG_USB_NET_CDCETHER=m
|
||||
# CONFIG_USB_NET_GL620A is not set
|
||||
# CONFIG_USB_NET_NET1080 is not set
|
||||
# CONFIG_USB_NET_PLUSB is not set
|
||||
# CONFIG_USB_NET_RNDIS_HOST is not set
|
||||
# CONFIG_USB_NET_CDC_SUBSET is not set
|
||||
# CONFIG_USB_NET_ZAURUS is not set
|
||||
CONFIG_USB_MON=y
|
||||
|
||||
#
|
||||
@ -1124,16 +1149,12 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
|
||||
CONFIG_REISERFS_FS_SECURITY=y
|
||||
# CONFIG_JFS_FS is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_EXPORT=y
|
||||
# CONFIG_XFS_RT is not set
|
||||
# CONFIG_XFS_QUOTA is not set
|
||||
CONFIG_XFS_SECURITY=y
|
||||
CONFIG_XFS_POSIX_ACL=y
|
||||
# CONFIG_XFS_RT is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
@ -1141,6 +1162,7 @@ CONFIG_INOTIFY=y
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_AUTOFS_FS=m
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
@ -1168,14 +1190,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_DEVPTS_FS_XATTR=y
|
||||
# CONFIG_DEVPTS_FS_SECURITY is not set
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_XATTR=y
|
||||
CONFIG_TMPFS_SECURITY=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_HUGETLB_PAGE=y
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_RELAYFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
@ -1225,6 +1244,7 @@ CONFIG_CIFS=m
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
# CONFIG_9P_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
@ -1303,6 +1323,7 @@ CONFIG_OPROFILE=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@ -1360,7 +1381,12 @@ CONFIG_CRYPTO_TEST=m
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_CRC_CCITT=m
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
CONFIG_LIBCRC32C=m
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_TEXTSEARCH=y
|
||||
CONFIG_TEXTSEARCH_KMP=m
|
||||
CONFIG_TEXTSEARCH_BM=m
|
||||
CONFIG_TEXTSEARCH_FSM=m
|
||||
|
@ -1,17 +1,17 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc6
|
||||
# Mon Aug 8 14:17:02 2005
|
||||
# Linux kernel version: 2.6.14-rc4
|
||||
# Thu Oct 20 08:30:56 2005
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_HAVE_DEC_LOCK=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
@ -26,6 +26,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
@ -38,6 +39,7 @@ CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
# CONFIG_CPUSETS is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
@ -88,6 +90,7 @@ CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_NUMA is not set
|
||||
# CONFIG_SCHED_SMT is not set
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
@ -101,17 +104,16 @@ CONFIG_HZ=250
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_LPARCFG=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# General setup
|
||||
# Bus Options
|
||||
#
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
CONFIG_PCI_NAMES=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
|
||||
#
|
||||
@ -152,8 +154,8 @@ CONFIG_INET_AH=m
|
||||
CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
CONFIG_INET_TUNNEL=y
|
||||
CONFIG_IP_TCPDIAG=m
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
|
||||
@ -164,6 +166,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETFILTER=y
|
||||
# CONFIG_NETFILTER_DEBUG is not set
|
||||
# CONFIG_NETFILTER_NETLINK is not set
|
||||
|
||||
#
|
||||
# IP: Netfilter Configuration
|
||||
@ -171,11 +174,14 @@ CONFIG_NETFILTER=y
|
||||
CONFIG_IP_NF_CONNTRACK=m
|
||||
CONFIG_IP_NF_CT_ACCT=y
|
||||
CONFIG_IP_NF_CONNTRACK_MARK=y
|
||||
CONFIG_IP_NF_CONNTRACK_EVENTS=y
|
||||
CONFIG_IP_NF_CT_PROTO_SCTP=m
|
||||
CONFIG_IP_NF_FTP=m
|
||||
CONFIG_IP_NF_IRC=m
|
||||
# CONFIG_IP_NF_NETBIOS_NS is not set
|
||||
CONFIG_IP_NF_TFTP=m
|
||||
CONFIG_IP_NF_AMANDA=m
|
||||
# CONFIG_IP_NF_PPTP is not set
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_LIMIT=m
|
||||
@ -199,14 +205,18 @@ CONFIG_IP_NF_MATCH_OWNER=m
|
||||
CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
||||
CONFIG_IP_NF_MATCH_REALM=m
|
||||
CONFIG_IP_NF_MATCH_SCTP=m
|
||||
# CONFIG_IP_NF_MATCH_DCCP is not set
|
||||
CONFIG_IP_NF_MATCH_COMMENT=m
|
||||
CONFIG_IP_NF_MATCH_CONNMARK=m
|
||||
CONFIG_IP_NF_MATCH_CONNBYTES=m
|
||||
CONFIG_IP_NF_MATCH_HASHLIMIT=m
|
||||
CONFIG_IP_NF_MATCH_STRING=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=m
|
||||
CONFIG_IP_NF_TARGET_LOG=m
|
||||
CONFIG_IP_NF_TARGET_ULOG=m
|
||||
CONFIG_IP_NF_TARGET_TCPMSS=m
|
||||
CONFIG_IP_NF_TARGET_NFQUEUE=m
|
||||
CONFIG_IP_NF_NAT=m
|
||||
CONFIG_IP_NF_NAT_NEEDED=y
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
@ -224,6 +234,7 @@ CONFIG_IP_NF_TARGET_ECN=m
|
||||
CONFIG_IP_NF_TARGET_DSCP=m
|
||||
CONFIG_IP_NF_TARGET_MARK=m
|
||||
CONFIG_IP_NF_TARGET_CLASSIFY=m
|
||||
CONFIG_IP_NF_TARGET_TTL=m
|
||||
CONFIG_IP_NF_TARGET_CONNMARK=m
|
||||
CONFIG_IP_NF_TARGET_CLUSTERIP=m
|
||||
CONFIG_IP_NF_RAW=m
|
||||
@ -232,6 +243,11 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
|
||||
#
|
||||
# DCCP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_DCCP is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
@ -259,6 +275,7 @@ CONFIG_NET_CLS_ROUTE=y
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
@ -272,6 +289,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=m
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
# CONFIG_CONNECTOR is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
@ -303,7 +325,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=65536
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
@ -323,6 +344,7 @@ CONFIG_IOSCHED_CFQ=y
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
@ -350,6 +372,7 @@ CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_SPI_ATTRS=y
|
||||
CONFIG_SCSI_FC_ATTRS=y
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
|
||||
#
|
||||
# SCSI low-level drivers
|
||||
@ -363,6 +386,7 @@ CONFIG_SCSI_FC_ATTRS=y
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_MEGARAID_NEWGEN is not set
|
||||
# CONFIG_MEGARAID_LEGACY is not set
|
||||
# CONFIG_MEGARAID_SAS is not set
|
||||
# CONFIG_SCSI_SATA is not set
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_SCSI_DMX3191D is not set
|
||||
@ -415,6 +439,7 @@ CONFIG_DM_ZERO=m
|
||||
# CONFIG_FUSION is not set
|
||||
# CONFIG_FUSION_SPI is not set
|
||||
# CONFIG_FUSION_FC is not set
|
||||
# CONFIG_FUSION_SAS is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
@ -444,6 +469,11 @@ CONFIG_TUN=m
|
||||
#
|
||||
# CONFIG_ARCNET is not set
|
||||
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
# CONFIG_PHYLIB is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
@ -451,6 +481,7 @@ CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_CASSINI is not set
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
|
||||
#
|
||||
@ -489,6 +520,7 @@ CONFIG_E1000=m
|
||||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_YELLOWFIN is not set
|
||||
# CONFIG_R8169 is not set
|
||||
# CONFIG_SIS190 is not set
|
||||
# CONFIG_SKGE is not set
|
||||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_VIA_VELOCITY is not set
|
||||
@ -498,6 +530,7 @@ CONFIG_E1000=m
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
# CONFIG_IXGB is not set
|
||||
# CONFIG_S2IO is not set
|
||||
|
||||
@ -632,7 +665,6 @@ CONFIG_MAX_RAW_DEVS=256
|
||||
# I2C support
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
# CONFIG_I2C_SENSOR is not set
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
@ -643,11 +675,16 @@ CONFIG_MAX_RAW_DEVS=256
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia Capabilities Port drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@ -722,16 +759,12 @@ CONFIG_JFS_SECURITY=y
|
||||
# CONFIG_JFS_DEBUG is not set
|
||||
# CONFIG_JFS_STATISTICS is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_EXPORT=y
|
||||
# CONFIG_XFS_RT is not set
|
||||
# CONFIG_XFS_QUOTA is not set
|
||||
CONFIG_XFS_SECURITY=y
|
||||
CONFIG_XFS_POSIX_ACL=y
|
||||
# CONFIG_XFS_RT is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
@ -739,6 +772,7 @@ CONFIG_INOTIFY=y
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_AUTOFS_FS=m
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
@ -766,14 +800,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_DEVPTS_FS_XATTR=y
|
||||
CONFIG_DEVPTS_FS_SECURITY=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_XATTR=y
|
||||
CONFIG_TMPFS_SECURITY=y
|
||||
# CONFIG_HUGETLBFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_RELAYFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
@ -824,6 +855,7 @@ CONFIG_CIFS_POSIX=y
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
# CONFIG_9P_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
@ -897,6 +929,7 @@ CONFIG_OPROFILE=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@ -954,7 +987,12 @@ CONFIG_CRYPTO_TEST=m
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_CRC_CCITT=m
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
CONFIG_LIBCRC32C=m
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_TEXTSEARCH=y
|
||||
CONFIG_TEXTSEARCH_KMP=m
|
||||
CONFIG_TEXTSEARCH_BM=m
|
||||
CONFIG_TEXTSEARCH_FSM=m
|
||||
|
@ -1,17 +1,17 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc6
|
||||
# Mon Aug 8 14:17:04 2005
|
||||
# Linux kernel version: 2.6.14-rc4
|
||||
# Thu Oct 20 08:31:24 2005
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_HAVE_DEC_LOCK=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
@ -26,6 +26,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
@ -37,6 +38,7 @@ CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
# CONFIG_CPUSETS is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
@ -97,6 +99,7 @@ CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_NUMA is not set
|
||||
# CONFIG_SCHED_SMT is not set
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
@ -109,17 +112,18 @@ CONFIG_HZ_250=y
|
||||
CONFIG_HZ=250
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# General setup
|
||||
# Bus Options
|
||||
#
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
CONFIG_PCI_NAMES=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
|
||||
#
|
||||
@ -131,8 +135,6 @@ CONFIG_PCI_NAMES=y
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
@ -163,13 +165,18 @@ CONFIG_IP_PNP_DHCP=y
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_IP_TCPDIAG=y
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# DCCP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_DCCP is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
@ -196,6 +203,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
@ -209,6 +217,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
# CONFIG_CONNECTOR is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
@ -240,7 +253,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
@ -313,6 +325,7 @@ CONFIG_IDEDMA_AUTO=y
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
# CONFIG_SCSI is not set
|
||||
|
||||
#
|
||||
@ -353,6 +366,11 @@ CONFIG_NETDEVICES=y
|
||||
#
|
||||
# CONFIG_ARCNET is not set
|
||||
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
# CONFIG_PHYLIB is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
@ -360,6 +378,7 @@ CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_CASSINI is not set
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
|
||||
#
|
||||
@ -398,6 +417,7 @@ CONFIG_E1000=y
|
||||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_YELLOWFIN is not set
|
||||
# CONFIG_R8169 is not set
|
||||
# CONFIG_SIS190 is not set
|
||||
# CONFIG_SKGE is not set
|
||||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_VIA_VELOCITY is not set
|
||||
@ -408,6 +428,7 @@ CONFIG_E1000=y
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
# CONFIG_IXGB is not set
|
||||
# CONFIG_S2IO is not set
|
||||
|
||||
@ -553,7 +574,6 @@ CONFIG_I2C_AMD8111=y
|
||||
# CONFIG_I2C_I801 is not set
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
@ -567,7 +587,6 @@ CONFIG_I2C_AMD8111=y
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
# CONFIG_I2C_VOODOO3 is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
# CONFIG_I2C_SENSOR is not set
|
||||
|
||||
#
|
||||
# Miscellaneous I2C Chip support
|
||||
@ -594,11 +613,16 @@ CONFIG_I2C_AMD8111=y
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia Capabilities Port drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@ -681,9 +705,11 @@ CONFIG_USB_HIDINPUT=y
|
||||
# CONFIG_USB_MTOUCH is not set
|
||||
# CONFIG_USB_ITMTOUCH is not set
|
||||
# CONFIG_USB_EGALAX is not set
|
||||
# CONFIG_USB_YEALINK is not set
|
||||
# CONFIG_USB_XPAD is not set
|
||||
# CONFIG_USB_ATI_REMOTE is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
# CONFIG_USB_APPLETOUCH is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
@ -814,10 +840,6 @@ CONFIG_JBD=y
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
@ -826,6 +848,7 @@ CONFIG_INOTIFY=y
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
@ -849,14 +872,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_DEVPTS_FS_XATTR=y
|
||||
# CONFIG_DEVPTS_FS_SECURITY is not set
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_XATTR=y
|
||||
CONFIG_TMPFS_SECURITY=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_HUGETLB_PAGE=y
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_RELAYFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
@ -898,6 +918,7 @@ CONFIG_RPCSEC_GSS_KRB5=y
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
# CONFIG_9P_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
@ -975,6 +996,7 @@ CONFIG_NLS_UTF8=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@ -1034,6 +1056,7 @@ CONFIG_CRYPTO_DES=y
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_CRC_CCITT=y
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
|
@ -1,17 +1,17 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc6
|
||||
# Mon Aug 8 14:17:07 2005
|
||||
# Linux kernel version: 2.6.14-rc4
|
||||
# Thu Oct 20 08:32:17 2005
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_HAVE_DEC_LOCK=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
@ -26,6 +26,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
@ -38,6 +39,7 @@ CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_CPUSETS=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
@ -104,6 +106,7 @@ CONFIG_DISCONTIGMEM_MANUAL=y
|
||||
CONFIG_DISCONTIGMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
CONFIG_NEED_MULTIPLE_NODES=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
|
||||
CONFIG_NODES_SPAN_OTHER_NODES=y
|
||||
CONFIG_NUMA=y
|
||||
@ -124,19 +127,20 @@ CONFIG_RTAS_FLASH=m
|
||||
CONFIG_SCANLOG=m
|
||||
CONFIG_LPARCFG=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# General setup
|
||||
# Bus Options
|
||||
#
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
CONFIG_PCI_NAMES=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
@ -152,8 +156,6 @@ CONFIG_HOTPLUG_PCI=m
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
CONFIG_HOTPLUG_PCI_RPA=m
|
||||
CONFIG_HOTPLUG_PCI_RPA_DLPAR=m
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
@ -183,8 +185,8 @@ CONFIG_INET_AH=m
|
||||
CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
CONFIG_INET_TUNNEL=y
|
||||
CONFIG_IP_TCPDIAG=m
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
|
||||
@ -195,6 +197,9 @@ CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETFILTER=y
|
||||
# CONFIG_NETFILTER_DEBUG is not set
|
||||
CONFIG_NETFILTER_NETLINK=y
|
||||
CONFIG_NETFILTER_NETLINK_QUEUE=m
|
||||
CONFIG_NETFILTER_NETLINK_LOG=m
|
||||
|
||||
#
|
||||
# IP: Netfilter Configuration
|
||||
@ -202,11 +207,15 @@ CONFIG_NETFILTER=y
|
||||
CONFIG_IP_NF_CONNTRACK=m
|
||||
CONFIG_IP_NF_CT_ACCT=y
|
||||
CONFIG_IP_NF_CONNTRACK_MARK=y
|
||||
CONFIG_IP_NF_CONNTRACK_EVENTS=y
|
||||
CONFIG_IP_NF_CONNTRACK_NETLINK=m
|
||||
CONFIG_IP_NF_CT_PROTO_SCTP=m
|
||||
CONFIG_IP_NF_FTP=m
|
||||
CONFIG_IP_NF_IRC=m
|
||||
# CONFIG_IP_NF_NETBIOS_NS is not set
|
||||
CONFIG_IP_NF_TFTP=m
|
||||
CONFIG_IP_NF_AMANDA=m
|
||||
# CONFIG_IP_NF_PPTP is not set
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_LIMIT=m
|
||||
@ -230,14 +239,18 @@ CONFIG_IP_NF_MATCH_OWNER=m
|
||||
CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
||||
CONFIG_IP_NF_MATCH_REALM=m
|
||||
CONFIG_IP_NF_MATCH_SCTP=m
|
||||
# CONFIG_IP_NF_MATCH_DCCP is not set
|
||||
CONFIG_IP_NF_MATCH_COMMENT=m
|
||||
CONFIG_IP_NF_MATCH_CONNMARK=m
|
||||
CONFIG_IP_NF_MATCH_CONNBYTES=m
|
||||
CONFIG_IP_NF_MATCH_HASHLIMIT=m
|
||||
CONFIG_IP_NF_MATCH_STRING=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=m
|
||||
CONFIG_IP_NF_TARGET_LOG=m
|
||||
CONFIG_IP_NF_TARGET_ULOG=m
|
||||
CONFIG_IP_NF_TARGET_TCPMSS=m
|
||||
CONFIG_IP_NF_TARGET_NFQUEUE=m
|
||||
CONFIG_IP_NF_NAT=m
|
||||
CONFIG_IP_NF_NAT_NEEDED=y
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
@ -255,6 +268,7 @@ CONFIG_IP_NF_TARGET_ECN=m
|
||||
CONFIG_IP_NF_TARGET_DSCP=m
|
||||
CONFIG_IP_NF_TARGET_MARK=m
|
||||
CONFIG_IP_NF_TARGET_CLASSIFY=m
|
||||
CONFIG_IP_NF_TARGET_TTL=m
|
||||
CONFIG_IP_NF_TARGET_CONNMARK=m
|
||||
CONFIG_IP_NF_TARGET_CLUSTERIP=m
|
||||
CONFIG_IP_NF_RAW=m
|
||||
@ -263,6 +277,11 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
|
||||
#
|
||||
# DCCP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_DCCP is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
@ -290,6 +309,7 @@ CONFIG_NET_CLS_ROUTE=y
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
@ -303,6 +323,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=y
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
# CONFIG_CONNECTOR is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
@ -342,7 +367,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=65536
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
@ -416,6 +440,7 @@ CONFIG_IDEDMA_AUTO=y
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
@ -443,6 +468,7 @@ CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_SPI_ATTRS=y
|
||||
CONFIG_SCSI_FC_ATTRS=y
|
||||
CONFIG_SCSI_ISCSI_ATTRS=m
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
|
||||
#
|
||||
# SCSI low-level drivers
|
||||
@ -456,6 +482,7 @@ CONFIG_SCSI_ISCSI_ATTRS=m
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_MEGARAID_NEWGEN is not set
|
||||
# CONFIG_MEGARAID_LEGACY is not set
|
||||
# CONFIG_MEGARAID_SAS is not set
|
||||
# CONFIG_SCSI_SATA is not set
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_SCSI_DMX3191D is not set
|
||||
@ -517,6 +544,7 @@ CONFIG_DM_MULTIPATH_EMC=m
|
||||
# CONFIG_FUSION is not set
|
||||
# CONFIG_FUSION_SPI is not set
|
||||
# CONFIG_FUSION_FC is not set
|
||||
# CONFIG_FUSION_SAS is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
@ -546,6 +574,11 @@ CONFIG_TUN=m
|
||||
#
|
||||
# CONFIG_ARCNET is not set
|
||||
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
# CONFIG_PHYLIB is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
@ -553,6 +586,7 @@ CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_CASSINI is not set
|
||||
CONFIG_NET_VENDOR_3COM=y
|
||||
CONFIG_VORTEX=y
|
||||
# CONFIG_TYPHOON is not set
|
||||
@ -581,6 +615,7 @@ CONFIG_E100=y
|
||||
# CONFIG_EPIC100 is not set
|
||||
# CONFIG_SUNDANCE is not set
|
||||
# CONFIG_VIA_RHINE is not set
|
||||
# CONFIG_NET_POCKET is not set
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
@ -594,6 +629,7 @@ CONFIG_E1000=y
|
||||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_YELLOWFIN is not set
|
||||
# CONFIG_R8169 is not set
|
||||
# CONFIG_SIS190 is not set
|
||||
# CONFIG_SKGE is not set
|
||||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_VIA_VELOCITY is not set
|
||||
@ -604,6 +640,7 @@ CONFIG_TIGON3=y
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
CONFIG_IXGB=m
|
||||
# CONFIG_IXGB_NAPI is not set
|
||||
CONFIG_S2IO=m
|
||||
@ -789,7 +826,6 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_I801 is not set
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
@ -804,7 +840,6 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
# CONFIG_I2C_VOODOO3 is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
# CONFIG_I2C_SENSOR is not set
|
||||
|
||||
#
|
||||
# Miscellaneous I2C Chip support
|
||||
@ -831,11 +866,16 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia Capabilities Port drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@ -885,6 +925,7 @@ CONFIG_FB_RADEON_I2C=y
|
||||
# CONFIG_FB_KYRO is not set
|
||||
# CONFIG_FB_3DFX is not set
|
||||
# CONFIG_FB_VOODOO1 is not set
|
||||
# CONFIG_FB_CYBLA is not set
|
||||
# CONFIG_FB_TRIDENT is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
@ -982,9 +1023,11 @@ CONFIG_USB_HIDDEV=y
|
||||
# CONFIG_USB_MTOUCH is not set
|
||||
# CONFIG_USB_ITMTOUCH is not set
|
||||
# CONFIG_USB_EGALAX is not set
|
||||
# CONFIG_USB_YEALINK is not set
|
||||
# CONFIG_USB_XPAD is not set
|
||||
# CONFIG_USB_ATI_REMOTE is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
# CONFIG_USB_APPLETOUCH is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
@ -1057,7 +1100,8 @@ CONFIG_USB_MON=y
|
||||
# InfiniBand support
|
||||
#
|
||||
CONFIG_INFINIBAND=m
|
||||
CONFIG_INFINIBAND_USER_VERBS=m
|
||||
# CONFIG_INFINIBAND_USER_MAD is not set
|
||||
# CONFIG_INFINIBAND_USER_ACCESS is not set
|
||||
CONFIG_INFINIBAND_MTHCA=m
|
||||
# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
|
||||
CONFIG_INFINIBAND_IPOIB=m
|
||||
@ -1095,16 +1139,12 @@ CONFIG_JFS_SECURITY=y
|
||||
# CONFIG_JFS_DEBUG is not set
|
||||
# CONFIG_JFS_STATISTICS is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_EXPORT=y
|
||||
# CONFIG_XFS_RT is not set
|
||||
# CONFIG_XFS_QUOTA is not set
|
||||
CONFIG_XFS_SECURITY=y
|
||||
CONFIG_XFS_POSIX_ACL=y
|
||||
# CONFIG_XFS_RT is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
@ -1112,6 +1152,7 @@ CONFIG_INOTIFY=y
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_AUTOFS_FS=m
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
@ -1139,14 +1180,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_DEVPTS_FS_XATTR=y
|
||||
CONFIG_DEVPTS_FS_SECURITY=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_XATTR=y
|
||||
CONFIG_TMPFS_SECURITY=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_HUGETLB_PAGE=y
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_RELAYFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
@ -1197,6 +1235,7 @@ CONFIG_CIFS_POSIX=y
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
# CONFIG_9P_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
@ -1261,6 +1300,7 @@ CONFIG_OPROFILE=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@ -1320,7 +1360,12 @@ CONFIG_CRYPTO_TEST=m
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_CRC_CCITT=m
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
CONFIG_LIBCRC32C=m
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_TEXTSEARCH=y
|
||||
CONFIG_TEXTSEARCH_KMP=m
|
||||
CONFIG_TEXTSEARCH_BM=m
|
||||
CONFIG_TEXTSEARCH_FSM=m
|
||||
|
@ -1,17 +1,17 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc6
|
||||
# Mon Aug 8 14:16:54 2005
|
||||
# Linux kernel version: 2.6.14-rc4
|
||||
# Thu Oct 20 08:28:33 2005
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_HAVE_DEC_LOCK=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
@ -26,6 +26,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
@ -37,6 +38,7 @@ CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_CPUSETS=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
@ -106,6 +108,7 @@ CONFIG_DISCONTIGMEM_MANUAL=y
|
||||
CONFIG_DISCONTIGMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
CONFIG_NEED_MULTIPLE_NODES=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
|
||||
CONFIG_NODES_SPAN_OTHER_NODES=y
|
||||
# CONFIG_NUMA is not set
|
||||
@ -126,19 +129,20 @@ CONFIG_RTAS_FLASH=m
|
||||
CONFIG_SCANLOG=m
|
||||
CONFIG_LPARCFG=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# General setup
|
||||
# Bus Options
|
||||
#
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_BINFMT_ELF=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
# CONFIG_PCI_LEGACY_PROC is not set
|
||||
# CONFIG_PCI_NAMES is not set
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
@ -154,8 +158,6 @@ CONFIG_HOTPLUG_PCI=m
|
||||
# CONFIG_HOTPLUG_PCI_SHPC is not set
|
||||
CONFIG_HOTPLUG_PCI_RPA=m
|
||||
CONFIG_HOTPLUG_PCI_RPA_DLPAR=m
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
@ -185,8 +187,8 @@ CONFIG_INET_AH=m
|
||||
CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
CONFIG_INET_TUNNEL=y
|
||||
# CONFIG_IP_TCPDIAG is not set
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
|
||||
@ -197,6 +199,9 @@ CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETFILTER=y
|
||||
# CONFIG_NETFILTER_DEBUG is not set
|
||||
CONFIG_NETFILTER_NETLINK=y
|
||||
CONFIG_NETFILTER_NETLINK_QUEUE=m
|
||||
CONFIG_NETFILTER_NETLINK_LOG=m
|
||||
|
||||
#
|
||||
# IP: Netfilter Configuration
|
||||
@ -204,11 +209,15 @@ CONFIG_NETFILTER=y
|
||||
CONFIG_IP_NF_CONNTRACK=m
|
||||
CONFIG_IP_NF_CT_ACCT=y
|
||||
CONFIG_IP_NF_CONNTRACK_MARK=y
|
||||
CONFIG_IP_NF_CONNTRACK_EVENTS=y
|
||||
CONFIG_IP_NF_CONNTRACK_NETLINK=m
|
||||
CONFIG_IP_NF_CT_PROTO_SCTP=m
|
||||
CONFIG_IP_NF_FTP=m
|
||||
CONFIG_IP_NF_IRC=m
|
||||
# CONFIG_IP_NF_NETBIOS_NS is not set
|
||||
CONFIG_IP_NF_TFTP=m
|
||||
CONFIG_IP_NF_AMANDA=m
|
||||
# CONFIG_IP_NF_PPTP is not set
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_LIMIT=m
|
||||
@ -232,14 +241,18 @@ CONFIG_IP_NF_MATCH_OWNER=m
|
||||
CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
||||
CONFIG_IP_NF_MATCH_REALM=m
|
||||
CONFIG_IP_NF_MATCH_SCTP=m
|
||||
CONFIG_IP_NF_MATCH_DCCP=m
|
||||
CONFIG_IP_NF_MATCH_COMMENT=m
|
||||
CONFIG_IP_NF_MATCH_CONNMARK=m
|
||||
CONFIG_IP_NF_MATCH_CONNBYTES=m
|
||||
CONFIG_IP_NF_MATCH_HASHLIMIT=m
|
||||
CONFIG_IP_NF_MATCH_STRING=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=m
|
||||
CONFIG_IP_NF_TARGET_LOG=m
|
||||
CONFIG_IP_NF_TARGET_ULOG=m
|
||||
CONFIG_IP_NF_TARGET_TCPMSS=m
|
||||
CONFIG_IP_NF_TARGET_NFQUEUE=m
|
||||
CONFIG_IP_NF_NAT=m
|
||||
CONFIG_IP_NF_NAT_NEEDED=y
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
@ -257,6 +270,7 @@ CONFIG_IP_NF_TARGET_ECN=m
|
||||
CONFIG_IP_NF_TARGET_DSCP=m
|
||||
CONFIG_IP_NF_TARGET_MARK=m
|
||||
CONFIG_IP_NF_TARGET_CLASSIFY=m
|
||||
CONFIG_IP_NF_TARGET_TTL=m
|
||||
CONFIG_IP_NF_TARGET_CONNMARK=m
|
||||
CONFIG_IP_NF_TARGET_CLUSTERIP=m
|
||||
CONFIG_IP_NF_RAW=m
|
||||
@ -265,6 +279,11 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
|
||||
#
|
||||
# DCCP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_DCCP is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
@ -292,6 +311,7 @@ CONFIG_NET_CLS_ROUTE=y
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
@ -305,6 +325,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=y
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
# CONFIG_CONNECTOR is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
@ -344,7 +369,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=65536
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
@ -422,6 +446,7 @@ CONFIG_IDEDMA_AUTO=y
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
@ -449,6 +474,7 @@ CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_SPI_ATTRS=y
|
||||
CONFIG_SCSI_FC_ATTRS=y
|
||||
CONFIG_SCSI_ISCSI_ATTRS=m
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
|
||||
#
|
||||
# SCSI low-level drivers
|
||||
@ -462,10 +488,12 @@ CONFIG_SCSI_ISCSI_ATTRS=m
|
||||
# CONFIG_SCSI_AIC79XX is not set
|
||||
# CONFIG_MEGARAID_NEWGEN is not set
|
||||
# CONFIG_MEGARAID_LEGACY is not set
|
||||
# CONFIG_MEGARAID_SAS is not set
|
||||
CONFIG_SCSI_SATA=y
|
||||
# CONFIG_SCSI_SATA_AHCI is not set
|
||||
CONFIG_SCSI_SATA_SVW=y
|
||||
# CONFIG_SCSI_ATA_PIIX is not set
|
||||
# CONFIG_SCSI_SATA_MV is not set
|
||||
# CONFIG_SCSI_SATA_NV is not set
|
||||
# CONFIG_SCSI_SATA_PROMISE is not set
|
||||
# CONFIG_SCSI_SATA_QSTOR is not set
|
||||
@ -535,6 +563,7 @@ CONFIG_DM_MULTIPATH_EMC=m
|
||||
# CONFIG_FUSION is not set
|
||||
# CONFIG_FUSION_SPI is not set
|
||||
# CONFIG_FUSION_FC is not set
|
||||
# CONFIG_FUSION_SAS is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
@ -578,7 +607,6 @@ CONFIG_IEEE1394_AMDTP=m
|
||||
#
|
||||
CONFIG_ADB_PMU=y
|
||||
CONFIG_PMAC_SMU=y
|
||||
# CONFIG_PMAC_BACKLIGHT is not set
|
||||
CONFIG_THERM_PM72=y
|
||||
|
||||
#
|
||||
@ -595,6 +623,11 @@ CONFIG_TUN=m
|
||||
#
|
||||
# CONFIG_ARCNET is not set
|
||||
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
# CONFIG_PHYLIB is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
@ -602,6 +635,7 @@ CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_HAPPYMEAL is not set
|
||||
CONFIG_SUNGEM=y
|
||||
# CONFIG_CASSINI is not set
|
||||
CONFIG_NET_VENDOR_3COM=y
|
||||
CONFIG_VORTEX=y
|
||||
# CONFIG_TYPHOON is not set
|
||||
@ -630,6 +664,7 @@ CONFIG_E100=y
|
||||
# CONFIG_EPIC100 is not set
|
||||
# CONFIG_SUNDANCE is not set
|
||||
# CONFIG_VIA_RHINE is not set
|
||||
# CONFIG_NET_POCKET is not set
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
@ -643,16 +678,19 @@ CONFIG_E1000=y
|
||||
# CONFIG_HAMACHI is not set
|
||||
# CONFIG_YELLOWFIN is not set
|
||||
# CONFIG_R8169 is not set
|
||||
# CONFIG_SIS190 is not set
|
||||
# CONFIG_SKGE is not set
|
||||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_VIA_VELOCITY is not set
|
||||
CONFIG_TIGON3=y
|
||||
# CONFIG_BNX2 is not set
|
||||
# CONFIG_SPIDER_NET is not set
|
||||
# CONFIG_MV643XX_ETH is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
CONFIG_IXGB=m
|
||||
# CONFIG_IXGB_NAPI is not set
|
||||
# CONFIG_S2IO is not set
|
||||
@ -838,8 +876,8 @@ CONFIG_I2C_AMD8111=y
|
||||
# CONFIG_I2C_I801 is not set
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
CONFIG_I2C_KEYWEST=y
|
||||
CONFIG_I2C_PMAC_SMU=y
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
@ -854,7 +892,6 @@ CONFIG_I2C_KEYWEST=y
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
# CONFIG_I2C_VOODOO3 is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
# CONFIG_I2C_SENSOR is not set
|
||||
|
||||
#
|
||||
# Miscellaneous I2C Chip support
|
||||
@ -881,11 +918,16 @@ CONFIG_I2C_KEYWEST=y
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia Capabilities Port drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@ -939,6 +981,7 @@ CONFIG_FB_RADEON_I2C=y
|
||||
# CONFIG_FB_KYRO is not set
|
||||
# CONFIG_FB_3DFX is not set
|
||||
# CONFIG_FB_VOODOO1 is not set
|
||||
# CONFIG_FB_CYBLA is not set
|
||||
# CONFIG_FB_TRIDENT is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
@ -1020,6 +1063,7 @@ CONFIG_USB_STORAGE=m
|
||||
# CONFIG_USB_STORAGE_SDDR09 is not set
|
||||
# CONFIG_USB_STORAGE_SDDR55 is not set
|
||||
# CONFIG_USB_STORAGE_JUMPSHOT is not set
|
||||
# CONFIG_USB_STORAGE_ONETOUCH is not set
|
||||
|
||||
#
|
||||
# USB Input Devices
|
||||
@ -1036,9 +1080,11 @@ CONFIG_USB_HIDDEV=y
|
||||
# CONFIG_USB_MTOUCH is not set
|
||||
# CONFIG_USB_ITMTOUCH is not set
|
||||
# CONFIG_USB_EGALAX is not set
|
||||
# CONFIG_USB_YEALINK is not set
|
||||
# CONFIG_USB_XPAD is not set
|
||||
# CONFIG_USB_ATI_REMOTE is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
# CONFIG_USB_APPLETOUCH is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
@ -1111,7 +1157,8 @@ CONFIG_USB_PEGASUS=y
|
||||
# InfiniBand support
|
||||
#
|
||||
CONFIG_INFINIBAND=m
|
||||
CONFIG_INFINIBAND_USER_VERBS=m
|
||||
# CONFIG_INFINIBAND_USER_MAD is not set
|
||||
# CONFIG_INFINIBAND_USER_ACCESS is not set
|
||||
CONFIG_INFINIBAND_MTHCA=m
|
||||
# CONFIG_INFINIBAND_MTHCA_DEBUG is not set
|
||||
CONFIG_INFINIBAND_IPOIB=m
|
||||
@ -1149,16 +1196,12 @@ CONFIG_JFS_SECURITY=y
|
||||
# CONFIG_JFS_DEBUG is not set
|
||||
# CONFIG_JFS_STATISTICS is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_EXPORT=y
|
||||
# CONFIG_XFS_RT is not set
|
||||
# CONFIG_XFS_QUOTA is not set
|
||||
CONFIG_XFS_SECURITY=y
|
||||
CONFIG_XFS_POSIX_ACL=y
|
||||
# CONFIG_XFS_RT is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
@ -1166,6 +1209,7 @@ CONFIG_INOTIFY=y
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_AUTOFS_FS=y
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
@ -1192,14 +1236,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_DEVPTS_FS_XATTR=y
|
||||
CONFIG_DEVPTS_FS_SECURITY=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_XATTR=y
|
||||
CONFIG_TMPFS_SECURITY=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_HUGETLB_PAGE=y
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_RELAYFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
@ -1250,6 +1291,7 @@ CONFIG_CIFS_POSIX=y
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
# CONFIG_9P_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
@ -1328,6 +1370,7 @@ CONFIG_OPROFILE=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@ -1387,7 +1430,12 @@ CONFIG_CRYPTO_TEST=m
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_CRC_CCITT=m
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
CONFIG_LIBCRC32C=m
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_TEXTSEARCH=y
|
||||
CONFIG_TEXTSEARCH_KMP=m
|
||||
CONFIG_TEXTSEARCH_BM=m
|
||||
CONFIG_TEXTSEARCH_FSM=m
|
||||
|
@ -109,7 +109,7 @@ __do_get_xsec:
|
||||
lwz r6,(CFG_TB_TO_XS+4)(r9)
|
||||
mulhwu r4,r7,r5
|
||||
mulhwu r6,r7,r6
|
||||
mullw r6,r7,r5
|
||||
mullw r0,r7,r5
|
||||
addc r6,r6,r0
|
||||
|
||||
/* At this point, we have the scaled xsec value in r4 + XER:CA
|
||||
|
@ -183,10 +183,6 @@ struct syscall_args {
|
||||
case RBP: val = UPT_RBP(regs); break; \
|
||||
case ORIG_RAX: val = UPT_ORIG_RAX(regs); break; \
|
||||
case CS: val = UPT_CS(regs); break; \
|
||||
case DS: val = UPT_DS(regs); break; \
|
||||
case ES: val = UPT_ES(regs); break; \
|
||||
case FS: val = UPT_FS(regs); break; \
|
||||
case GS: val = UPT_GS(regs); break; \
|
||||
case EFLAGS: val = UPT_EFLAGS(regs); break; \
|
||||
default : \
|
||||
panic("Bad register in UPT_REG : %d\n", reg); \
|
||||
|
@ -96,7 +96,7 @@ struct acpi_find_pci_root {
|
||||
static acpi_status
|
||||
do_root_bridge_busnr_callback(struct acpi_resource *resource, void *data)
|
||||
{
|
||||
int *busnr = (int *)data;
|
||||
unsigned long *busnr = (unsigned long *)data;
|
||||
struct acpi_resource_address64 address;
|
||||
|
||||
if (resource->id != ACPI_RSTYPE_ADDRESS16 &&
|
||||
@ -115,13 +115,13 @@ do_root_bridge_busnr_callback(struct acpi_resource *resource, void *data)
|
||||
static int get_root_bridge_busnr(acpi_handle handle)
|
||||
{
|
||||
acpi_status status;
|
||||
int bus, bbn;
|
||||
unsigned long bus, bbn;
|
||||
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
|
||||
acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);
|
||||
|
||||
status = acpi_evaluate_integer(handle, METHOD_NAME__BBN, NULL,
|
||||
(unsigned long *)&bbn);
|
||||
&bbn);
|
||||
if (status == AE_NOT_FOUND) {
|
||||
/* Assume bus = 0 */
|
||||
printk(KERN_INFO PREFIX
|
||||
@ -153,7 +153,7 @@ static int get_root_bridge_busnr(acpi_handle handle)
|
||||
}
|
||||
exit:
|
||||
acpi_os_free(buffer.pointer);
|
||||
return bbn;
|
||||
return (int)bbn;
|
||||
}
|
||||
|
||||
static acpi_status
|
||||
|
3
drivers/char/.gitignore
vendored
Normal file
3
drivers/char/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
consolemap_deftbl.c
|
||||
defkeymap.c
|
||||
|
@ -437,7 +437,7 @@ static int mga_do_agp_dma_bootstrap(drm_device_t * dev,
|
||||
drm_mga_dma_bootstrap_t * dma_bs)
|
||||
{
|
||||
drm_mga_private_t * const dev_priv = (drm_mga_private_t *) dev->dev_private;
|
||||
const unsigned int warp_size = mga_warp_microcode_size(dev_priv);
|
||||
unsigned int warp_size = mga_warp_microcode_size(dev_priv);
|
||||
int err;
|
||||
unsigned offset;
|
||||
const unsigned secondary_size = dma_bs->secondary_bin_count
|
||||
@ -499,6 +499,12 @@ static int mga_do_agp_dma_bootstrap(drm_device_t * dev,
|
||||
return err;
|
||||
}
|
||||
|
||||
/* Make drm_addbufs happy by not trying to create a mapping for less
|
||||
* than a page.
|
||||
*/
|
||||
if (warp_size < PAGE_SIZE)
|
||||
warp_size = PAGE_SIZE;
|
||||
|
||||
offset = 0;
|
||||
err = drm_addmap( dev, offset, warp_size,
|
||||
_DRM_AGP, _DRM_READ_ONLY, & dev_priv->warp );
|
||||
@ -587,7 +593,7 @@ static int mga_do_pci_dma_bootstrap(drm_device_t * dev,
|
||||
drm_mga_dma_bootstrap_t * dma_bs)
|
||||
{
|
||||
drm_mga_private_t * const dev_priv = (drm_mga_private_t *) dev->dev_private;
|
||||
const unsigned int warp_size = mga_warp_microcode_size(dev_priv);
|
||||
unsigned int warp_size = mga_warp_microcode_size(dev_priv);
|
||||
unsigned int primary_size;
|
||||
unsigned int bin_count;
|
||||
int err;
|
||||
@ -599,6 +605,12 @@ static int mga_do_pci_dma_bootstrap(drm_device_t * dev,
|
||||
return DRM_ERR(EFAULT);
|
||||
}
|
||||
|
||||
/* Make drm_addbufs happy by not trying to create a mapping for less
|
||||
* than a page.
|
||||
*/
|
||||
if (warp_size < PAGE_SIZE)
|
||||
warp_size = PAGE_SIZE;
|
||||
|
||||
/* The proper alignment is 0x100 for this mapping */
|
||||
err = drm_addmap(dev, 0, warp_size, _DRM_CONSISTENT,
|
||||
_DRM_READ_ONLY, &dev_priv->warp);
|
||||
@ -812,6 +824,10 @@ static int mga_do_init_dma( drm_device_t *dev, drm_mga_init_t *init )
|
||||
}
|
||||
|
||||
if (! dev_priv->used_new_dma_init) {
|
||||
|
||||
dev_priv->dma_access = MGA_PAGPXFER;
|
||||
dev_priv->wagp_enable = MGA_WAGP_ENABLE;
|
||||
|
||||
dev_priv->status = drm_core_findmap(dev, init->status_offset);
|
||||
if (!dev_priv->status) {
|
||||
DRM_ERROR("failed to find status page!\n");
|
||||
@ -928,7 +944,7 @@ static int mga_do_cleanup_dma( drm_device_t *dev )
|
||||
drm_mga_private_t *dev_priv = dev->dev_private;
|
||||
|
||||
if ((dev_priv->warp != NULL)
|
||||
&& (dev_priv->mmio->type != _DRM_CONSISTENT))
|
||||
&& (dev_priv->warp->type != _DRM_CONSISTENT))
|
||||
drm_core_ioremapfree(dev_priv->warp, dev);
|
||||
|
||||
if ((dev_priv->primary != NULL)
|
||||
|
@ -2283,8 +2283,9 @@ static void ohci_schedule_iso_tasklets(struct ti_ohci *ohci,
|
||||
{
|
||||
struct ohci1394_iso_tasklet *t;
|
||||
unsigned long mask;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock(&ohci->iso_tasklet_list_lock);
|
||||
spin_lock_irqsave(&ohci->iso_tasklet_list_lock, flags);
|
||||
|
||||
list_for_each_entry(t, &ohci->iso_tasklet_list, link) {
|
||||
mask = 1 << t->context;
|
||||
@ -2295,8 +2296,7 @@ static void ohci_schedule_iso_tasklets(struct ti_ohci *ohci,
|
||||
tasklet_schedule(&t->tasklet);
|
||||
}
|
||||
|
||||
spin_unlock(&ohci->iso_tasklet_list_lock);
|
||||
|
||||
spin_unlock_irqrestore(&ohci->iso_tasklet_list_lock, flags);
|
||||
}
|
||||
|
||||
static irqreturn_t ohci_irq_handler(int irq, void *dev_id,
|
||||
|
@ -412,6 +412,7 @@ static void fcp_request(struct hpsb_host *host, int nodeid, int direction,
|
||||
static ssize_t raw1394_read(struct file *file, char __user * buffer,
|
||||
size_t count, loff_t * offset_is_ignored)
|
||||
{
|
||||
unsigned long flags;
|
||||
struct file_info *fi = (struct file_info *)file->private_data;
|
||||
struct list_head *lh;
|
||||
struct pending_request *req;
|
||||
@ -435,10 +436,10 @@ static ssize_t raw1394_read(struct file *file, char __user * buffer,
|
||||
}
|
||||
}
|
||||
|
||||
spin_lock_irq(&fi->reqlists_lock);
|
||||
spin_lock_irqsave(&fi->reqlists_lock, flags);
|
||||
lh = fi->req_complete.next;
|
||||
list_del(lh);
|
||||
spin_unlock_irq(&fi->reqlists_lock);
|
||||
spin_unlock_irqrestore(&fi->reqlists_lock, flags);
|
||||
|
||||
req = list_entry(lh, struct pending_request, list);
|
||||
|
||||
@ -486,6 +487,7 @@ static int state_opened(struct file_info *fi, struct pending_request *req)
|
||||
|
||||
static int state_initialized(struct file_info *fi, struct pending_request *req)
|
||||
{
|
||||
unsigned long flags;
|
||||
struct host_info *hi;
|
||||
struct raw1394_khost_list *khl;
|
||||
|
||||
@ -499,7 +501,7 @@ static int state_initialized(struct file_info *fi, struct pending_request *req)
|
||||
|
||||
switch (req->req.type) {
|
||||
case RAW1394_REQ_LIST_CARDS:
|
||||
spin_lock_irq(&host_info_lock);
|
||||
spin_lock_irqsave(&host_info_lock, flags);
|
||||
khl = kmalloc(sizeof(struct raw1394_khost_list) * host_count,
|
||||
SLAB_ATOMIC);
|
||||
|
||||
@ -513,7 +515,7 @@ static int state_initialized(struct file_info *fi, struct pending_request *req)
|
||||
khl++;
|
||||
}
|
||||
}
|
||||
spin_unlock_irq(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, flags);
|
||||
|
||||
if (khl != NULL) {
|
||||
req->req.error = RAW1394_ERROR_NONE;
|
||||
@ -528,7 +530,7 @@ static int state_initialized(struct file_info *fi, struct pending_request *req)
|
||||
break;
|
||||
|
||||
case RAW1394_REQ_SET_CARD:
|
||||
spin_lock_irq(&host_info_lock);
|
||||
spin_lock_irqsave(&host_info_lock, flags);
|
||||
if (req->req.misc < host_count) {
|
||||
list_for_each_entry(hi, &host_info_list, list) {
|
||||
if (!req->req.misc--)
|
||||
@ -550,7 +552,7 @@ static int state_initialized(struct file_info *fi, struct pending_request *req)
|
||||
} else {
|
||||
req->req.error = RAW1394_ERROR_INVALID_ARG;
|
||||
}
|
||||
spin_unlock_irq(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, flags);
|
||||
|
||||
req->req.length = 0;
|
||||
break;
|
||||
@ -569,7 +571,6 @@ static void handle_iso_listen(struct file_info *fi, struct pending_request *req)
|
||||
{
|
||||
int channel = req->req.misc;
|
||||
|
||||
spin_lock_irq(&host_info_lock);
|
||||
if ((channel > 63) || (channel < -64)) {
|
||||
req->req.error = RAW1394_ERROR_INVALID_ARG;
|
||||
} else if (channel >= 0) {
|
||||
@ -601,7 +602,6 @@ static void handle_iso_listen(struct file_info *fi, struct pending_request *req)
|
||||
|
||||
req->req.length = 0;
|
||||
queue_complete_req(req);
|
||||
spin_unlock_irq(&host_info_lock);
|
||||
}
|
||||
|
||||
static void handle_fcp_listen(struct file_info *fi, struct pending_request *req)
|
||||
@ -627,6 +627,7 @@ static void handle_fcp_listen(struct file_info *fi, struct pending_request *req)
|
||||
static int handle_async_request(struct file_info *fi,
|
||||
struct pending_request *req, int node)
|
||||
{
|
||||
unsigned long flags;
|
||||
struct hpsb_packet *packet = NULL;
|
||||
u64 addr = req->req.address & 0xffffffffffffULL;
|
||||
|
||||
@ -761,9 +762,9 @@ static int handle_async_request(struct file_info *fi,
|
||||
hpsb_set_packet_complete_task(packet,
|
||||
(void (*)(void *))queue_complete_cb, req);
|
||||
|
||||
spin_lock_irq(&fi->reqlists_lock);
|
||||
spin_lock_irqsave(&fi->reqlists_lock, flags);
|
||||
list_add_tail(&req->list, &fi->req_pending);
|
||||
spin_unlock_irq(&fi->reqlists_lock);
|
||||
spin_unlock_irqrestore(&fi->reqlists_lock, flags);
|
||||
|
||||
packet->generation = req->req.generation;
|
||||
|
||||
@ -779,6 +780,7 @@ static int handle_async_request(struct file_info *fi,
|
||||
static int handle_iso_send(struct file_info *fi, struct pending_request *req,
|
||||
int channel)
|
||||
{
|
||||
unsigned long flags;
|
||||
struct hpsb_packet *packet;
|
||||
|
||||
packet = hpsb_make_isopacket(fi->host, req->req.length, channel & 0x3f,
|
||||
@ -804,9 +806,9 @@ static int handle_iso_send(struct file_info *fi, struct pending_request *req,
|
||||
(void (*)(void *))queue_complete_req,
|
||||
req);
|
||||
|
||||
spin_lock_irq(&fi->reqlists_lock);
|
||||
spin_lock_irqsave(&fi->reqlists_lock, flags);
|
||||
list_add_tail(&req->list, &fi->req_pending);
|
||||
spin_unlock_irq(&fi->reqlists_lock);
|
||||
spin_unlock_irqrestore(&fi->reqlists_lock, flags);
|
||||
|
||||
/* Update the generation of the packet just before sending. */
|
||||
packet->generation = req->req.generation;
|
||||
@ -821,6 +823,7 @@ static int handle_iso_send(struct file_info *fi, struct pending_request *req,
|
||||
|
||||
static int handle_async_send(struct file_info *fi, struct pending_request *req)
|
||||
{
|
||||
unsigned long flags;
|
||||
struct hpsb_packet *packet;
|
||||
int header_length = req->req.misc & 0xffff;
|
||||
int expect_response = req->req.misc >> 16;
|
||||
@ -867,9 +870,9 @@ static int handle_async_send(struct file_info *fi, struct pending_request *req)
|
||||
hpsb_set_packet_complete_task(packet,
|
||||
(void (*)(void *))queue_complete_cb, req);
|
||||
|
||||
spin_lock_irq(&fi->reqlists_lock);
|
||||
spin_lock_irqsave(&fi->reqlists_lock, flags);
|
||||
list_add_tail(&req->list, &fi->req_pending);
|
||||
spin_unlock_irq(&fi->reqlists_lock);
|
||||
spin_unlock_irqrestore(&fi->reqlists_lock, flags);
|
||||
|
||||
/* Update the generation of the packet just before sending. */
|
||||
packet->generation = req->req.generation;
|
||||
@ -885,6 +888,7 @@ static int handle_async_send(struct file_info *fi, struct pending_request *req)
|
||||
static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer,
|
||||
u64 addr, size_t length, u16 flags)
|
||||
{
|
||||
unsigned long irqflags;
|
||||
struct pending_request *req;
|
||||
struct host_info *hi;
|
||||
struct file_info *fi = NULL;
|
||||
@ -899,7 +903,7 @@ static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer,
|
||||
"addr: %4.4x %8.8x length: %Zu", nodeid,
|
||||
(u16) ((addr >> 32) & 0xFFFF), (u32) (addr & 0xFFFFFFFF),
|
||||
length);
|
||||
spin_lock(&host_info_lock);
|
||||
spin_lock_irqsave(&host_info_lock, irqflags);
|
||||
hi = find_host_info(host); /* search address-entry */
|
||||
if (hi != NULL) {
|
||||
list_for_each_entry(fi, &hi->file_info_list, list) {
|
||||
@ -924,7 +928,7 @@ static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer,
|
||||
if (!found) {
|
||||
printk(KERN_ERR "raw1394: arm_read FAILED addr_entry not found"
|
||||
" -> rcode_address_error\n");
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (RCODE_ADDRESS_ERROR);
|
||||
} else {
|
||||
DBGMSG("arm_read addr_entry FOUND");
|
||||
@ -954,7 +958,7 @@ static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer,
|
||||
req = __alloc_pending_request(SLAB_ATOMIC);
|
||||
if (!req) {
|
||||
DBGMSG("arm_read -> rcode_conflict_error");
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected.
|
||||
The request may be retried */
|
||||
}
|
||||
@ -974,7 +978,7 @@ static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer,
|
||||
if (!(req->data)) {
|
||||
free_pending_request(req);
|
||||
DBGMSG("arm_read -> rcode_conflict_error");
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected.
|
||||
The request may be retried */
|
||||
}
|
||||
@ -1031,13 +1035,14 @@ static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer,
|
||||
sizeof(struct arm_request));
|
||||
queue_complete_req(req);
|
||||
}
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (rcode);
|
||||
}
|
||||
|
||||
static int arm_write(struct hpsb_host *host, int nodeid, int destid,
|
||||
quadlet_t * data, u64 addr, size_t length, u16 flags)
|
||||
{
|
||||
unsigned long irqflags;
|
||||
struct pending_request *req;
|
||||
struct host_info *hi;
|
||||
struct file_info *fi = NULL;
|
||||
@ -1052,7 +1057,7 @@ static int arm_write(struct hpsb_host *host, int nodeid, int destid,
|
||||
"addr: %4.4x %8.8x length: %Zu", nodeid,
|
||||
(u16) ((addr >> 32) & 0xFFFF), (u32) (addr & 0xFFFFFFFF),
|
||||
length);
|
||||
spin_lock(&host_info_lock);
|
||||
spin_lock_irqsave(&host_info_lock, irqflags);
|
||||
hi = find_host_info(host); /* search address-entry */
|
||||
if (hi != NULL) {
|
||||
list_for_each_entry(fi, &hi->file_info_list, list) {
|
||||
@ -1077,7 +1082,7 @@ static int arm_write(struct hpsb_host *host, int nodeid, int destid,
|
||||
if (!found) {
|
||||
printk(KERN_ERR "raw1394: arm_write FAILED addr_entry not found"
|
||||
" -> rcode_address_error\n");
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (RCODE_ADDRESS_ERROR);
|
||||
} else {
|
||||
DBGMSG("arm_write addr_entry FOUND");
|
||||
@ -1106,7 +1111,7 @@ static int arm_write(struct hpsb_host *host, int nodeid, int destid,
|
||||
req = __alloc_pending_request(SLAB_ATOMIC);
|
||||
if (!req) {
|
||||
DBGMSG("arm_write -> rcode_conflict_error");
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected.
|
||||
The request my be retried */
|
||||
}
|
||||
@ -1118,7 +1123,7 @@ static int arm_write(struct hpsb_host *host, int nodeid, int destid,
|
||||
if (!(req->data)) {
|
||||
free_pending_request(req);
|
||||
DBGMSG("arm_write -> rcode_conflict_error");
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected.
|
||||
The request may be retried */
|
||||
}
|
||||
@ -1165,7 +1170,7 @@ static int arm_write(struct hpsb_host *host, int nodeid, int destid,
|
||||
sizeof(struct arm_request));
|
||||
queue_complete_req(req);
|
||||
}
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (rcode);
|
||||
}
|
||||
|
||||
@ -1173,6 +1178,7 @@ static int arm_lock(struct hpsb_host *host, int nodeid, quadlet_t * store,
|
||||
u64 addr, quadlet_t data, quadlet_t arg, int ext_tcode,
|
||||
u16 flags)
|
||||
{
|
||||
unsigned long irqflags;
|
||||
struct pending_request *req;
|
||||
struct host_info *hi;
|
||||
struct file_info *fi = NULL;
|
||||
@ -1198,7 +1204,7 @@ static int arm_lock(struct hpsb_host *host, int nodeid, quadlet_t * store,
|
||||
(u32) (addr & 0xFFFFFFFF), ext_tcode & 0xFF,
|
||||
be32_to_cpu(data), be32_to_cpu(arg));
|
||||
}
|
||||
spin_lock(&host_info_lock);
|
||||
spin_lock_irqsave(&host_info_lock, irqflags);
|
||||
hi = find_host_info(host); /* search address-entry */
|
||||
if (hi != NULL) {
|
||||
list_for_each_entry(fi, &hi->file_info_list, list) {
|
||||
@ -1224,7 +1230,7 @@ static int arm_lock(struct hpsb_host *host, int nodeid, quadlet_t * store,
|
||||
if (!found) {
|
||||
printk(KERN_ERR "raw1394: arm_lock FAILED addr_entry not found"
|
||||
" -> rcode_address_error\n");
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (RCODE_ADDRESS_ERROR);
|
||||
} else {
|
||||
DBGMSG("arm_lock addr_entry FOUND");
|
||||
@ -1307,7 +1313,7 @@ static int arm_lock(struct hpsb_host *host, int nodeid, quadlet_t * store,
|
||||
req = __alloc_pending_request(SLAB_ATOMIC);
|
||||
if (!req) {
|
||||
DBGMSG("arm_lock -> rcode_conflict_error");
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected.
|
||||
The request may be retried */
|
||||
}
|
||||
@ -1316,7 +1322,7 @@ static int arm_lock(struct hpsb_host *host, int nodeid, quadlet_t * store,
|
||||
if (!(req->data)) {
|
||||
free_pending_request(req);
|
||||
DBGMSG("arm_lock -> rcode_conflict_error");
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected.
|
||||
The request may be retried */
|
||||
}
|
||||
@ -1382,7 +1388,7 @@ static int arm_lock(struct hpsb_host *host, int nodeid, quadlet_t * store,
|
||||
sizeof(struct arm_response) + 2 * sizeof(*store));
|
||||
queue_complete_req(req);
|
||||
}
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (rcode);
|
||||
}
|
||||
|
||||
@ -1390,6 +1396,7 @@ static int arm_lock64(struct hpsb_host *host, int nodeid, octlet_t * store,
|
||||
u64 addr, octlet_t data, octlet_t arg, int ext_tcode,
|
||||
u16 flags)
|
||||
{
|
||||
unsigned long irqflags;
|
||||
struct pending_request *req;
|
||||
struct host_info *hi;
|
||||
struct file_info *fi = NULL;
|
||||
@ -1422,7 +1429,7 @@ static int arm_lock64(struct hpsb_host *host, int nodeid, octlet_t * store,
|
||||
(u32) ((be64_to_cpu(arg) >> 32) & 0xFFFFFFFF),
|
||||
(u32) (be64_to_cpu(arg) & 0xFFFFFFFF));
|
||||
}
|
||||
spin_lock(&host_info_lock);
|
||||
spin_lock_irqsave(&host_info_lock, irqflags);
|
||||
hi = find_host_info(host); /* search addressentry in file_info's for host */
|
||||
if (hi != NULL) {
|
||||
list_for_each_entry(fi, &hi->file_info_list, list) {
|
||||
@ -1449,7 +1456,7 @@ static int arm_lock64(struct hpsb_host *host, int nodeid, octlet_t * store,
|
||||
printk(KERN_ERR
|
||||
"raw1394: arm_lock64 FAILED addr_entry not found"
|
||||
" -> rcode_address_error\n");
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (RCODE_ADDRESS_ERROR);
|
||||
} else {
|
||||
DBGMSG("arm_lock64 addr_entry FOUND");
|
||||
@ -1533,7 +1540,7 @@ static int arm_lock64(struct hpsb_host *host, int nodeid, octlet_t * store,
|
||||
DBGMSG("arm_lock64 -> entering notification-section");
|
||||
req = __alloc_pending_request(SLAB_ATOMIC);
|
||||
if (!req) {
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
DBGMSG("arm_lock64 -> rcode_conflict_error");
|
||||
return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected.
|
||||
The request may be retried */
|
||||
@ -1542,7 +1549,7 @@ static int arm_lock64(struct hpsb_host *host, int nodeid, octlet_t * store,
|
||||
req->data = kmalloc(size, SLAB_ATOMIC);
|
||||
if (!(req->data)) {
|
||||
free_pending_request(req);
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
DBGMSG("arm_lock64 -> rcode_conflict_error");
|
||||
return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected.
|
||||
The request may be retried */
|
||||
@ -1609,7 +1616,7 @@ static int arm_lock64(struct hpsb_host *host, int nodeid, octlet_t * store,
|
||||
sizeof(struct arm_response) + 2 * sizeof(*store));
|
||||
queue_complete_req(req);
|
||||
}
|
||||
spin_unlock(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, irqflags);
|
||||
return (rcode);
|
||||
}
|
||||
|
||||
@ -1980,6 +1987,7 @@ static int write_phypacket(struct file_info *fi, struct pending_request *req)
|
||||
struct hpsb_packet *packet = NULL;
|
||||
int retval = 0;
|
||||
quadlet_t data;
|
||||
unsigned long flags;
|
||||
|
||||
data = be32_to_cpu((u32) req->req.sendb);
|
||||
DBGMSG("write_phypacket called - quadlet 0x%8.8x ", data);
|
||||
@ -1990,9 +1998,9 @@ static int write_phypacket(struct file_info *fi, struct pending_request *req)
|
||||
req->packet = packet;
|
||||
hpsb_set_packet_complete_task(packet,
|
||||
(void (*)(void *))queue_complete_cb, req);
|
||||
spin_lock_irq(&fi->reqlists_lock);
|
||||
spin_lock_irqsave(&fi->reqlists_lock, flags);
|
||||
list_add_tail(&req->list, &fi->req_pending);
|
||||
spin_unlock_irq(&fi->reqlists_lock);
|
||||
spin_unlock_irqrestore(&fi->reqlists_lock, flags);
|
||||
packet->generation = req->req.generation;
|
||||
retval = hpsb_send_packet(packet);
|
||||
DBGMSG("write_phypacket send_packet called => retval: %d ", retval);
|
||||
@ -2659,14 +2667,15 @@ static unsigned int raw1394_poll(struct file *file, poll_table * pt)
|
||||
{
|
||||
struct file_info *fi = file->private_data;
|
||||
unsigned int mask = POLLOUT | POLLWRNORM;
|
||||
unsigned long flags;
|
||||
|
||||
poll_wait(file, &fi->poll_wait_complete, pt);
|
||||
|
||||
spin_lock_irq(&fi->reqlists_lock);
|
||||
spin_lock_irqsave(&fi->reqlists_lock, flags);
|
||||
if (!list_empty(&fi->req_complete)) {
|
||||
mask |= POLLIN | POLLRDNORM;
|
||||
}
|
||||
spin_unlock_irq(&fi->reqlists_lock);
|
||||
spin_unlock_irqrestore(&fi->reqlists_lock, flags);
|
||||
|
||||
return mask;
|
||||
}
|
||||
@ -2710,6 +2719,7 @@ static int raw1394_release(struct inode *inode, struct file *file)
|
||||
struct arm_addr *arm_addr = NULL;
|
||||
int another_host;
|
||||
int csr_mod = 0;
|
||||
unsigned long flags;
|
||||
|
||||
if (fi->iso_state != RAW1394_ISO_INACTIVE)
|
||||
raw1394_iso_shutdown(fi);
|
||||
@ -2720,13 +2730,11 @@ static int raw1394_release(struct inode *inode, struct file *file)
|
||||
}
|
||||
}
|
||||
|
||||
spin_lock_irq(&host_info_lock);
|
||||
spin_lock_irqsave(&host_info_lock, flags);
|
||||
fi->listen_channels = 0;
|
||||
spin_unlock_irq(&host_info_lock);
|
||||
|
||||
fail = 0;
|
||||
/* set address-entries invalid */
|
||||
spin_lock_irq(&host_info_lock);
|
||||
|
||||
while (!list_empty(&fi->addr_list)) {
|
||||
another_host = 0;
|
||||
@ -2777,14 +2785,14 @@ static int raw1394_release(struct inode *inode, struct file *file)
|
||||
vfree(addr->addr_space_buffer);
|
||||
kfree(addr);
|
||||
} /* while */
|
||||
spin_unlock_irq(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, flags);
|
||||
if (fail > 0) {
|
||||
printk(KERN_ERR "raw1394: during addr_list-release "
|
||||
"error(s) occurred \n");
|
||||
}
|
||||
|
||||
while (!done) {
|
||||
spin_lock_irq(&fi->reqlists_lock);
|
||||
spin_lock_irqsave(&fi->reqlists_lock, flags);
|
||||
|
||||
while (!list_empty(&fi->req_complete)) {
|
||||
lh = fi->req_complete.next;
|
||||
@ -2798,7 +2806,7 @@ static int raw1394_release(struct inode *inode, struct file *file)
|
||||
if (list_empty(&fi->req_pending))
|
||||
done = 1;
|
||||
|
||||
spin_unlock_irq(&fi->reqlists_lock);
|
||||
spin_unlock_irqrestore(&fi->reqlists_lock, flags);
|
||||
|
||||
if (!done)
|
||||
down_interruptible(&fi->complete_sem);
|
||||
@ -2828,9 +2836,9 @@ static int raw1394_release(struct inode *inode, struct file *file)
|
||||
fi->host->id);
|
||||
|
||||
if (fi->state == connected) {
|
||||
spin_lock_irq(&host_info_lock);
|
||||
spin_lock_irqsave(&host_info_lock, flags);
|
||||
list_del(&fi->list);
|
||||
spin_unlock_irq(&host_info_lock);
|
||||
spin_unlock_irqrestore(&host_info_lock, flags);
|
||||
|
||||
put_device(&fi->host->device);
|
||||
}
|
||||
|
@ -3063,6 +3063,7 @@ static int md_thread(void * arg)
|
||||
* many dirty RAID5 blocks.
|
||||
*/
|
||||
|
||||
allow_signal(SIGKILL);
|
||||
complete(thread->event);
|
||||
while (!kthread_should_stop()) {
|
||||
void (*run)(mddev_t *);
|
||||
@ -3111,7 +3112,7 @@ mdk_thread_t *md_register_thread(void (*run) (mddev_t *), mddev_t *mddev,
|
||||
thread->mddev = mddev;
|
||||
thread->name = name;
|
||||
thread->timeout = MAX_SCHEDULE_TIMEOUT;
|
||||
thread->tsk = kthread_run(md_thread, thread, mdname(thread->mddev));
|
||||
thread->tsk = kthread_run(md_thread, thread, name, mdname(thread->mddev));
|
||||
if (IS_ERR(thread->tsk)) {
|
||||
kfree(thread);
|
||||
return NULL;
|
||||
@ -3569,6 +3570,7 @@ static void md_do_sync(mddev_t *mddev)
|
||||
try_again:
|
||||
if (signal_pending(current)) {
|
||||
flush_signals(current);
|
||||
set_bit(MD_RECOVERY_INTR, &mddev->recovery);
|
||||
goto skip;
|
||||
}
|
||||
ITERATE_MDDEV(mddev2,tmp) {
|
||||
|
@ -578,8 +578,9 @@ static int orinoco_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
txfid, NULL);
|
||||
if (err) {
|
||||
netif_start_queue(dev);
|
||||
printk(KERN_ERR "%s: Error %d transmitting packet\n",
|
||||
dev->name, err);
|
||||
if (net_ratelimit())
|
||||
printk(KERN_ERR "%s: Error %d transmitting packet\n",
|
||||
dev->name, err);
|
||||
stats->tx_errors++;
|
||||
goto fail;
|
||||
}
|
||||
|
4
drivers/pci/.gitignore
vendored
Normal file
4
drivers/pci/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
classlist.h
|
||||
devlist.h
|
||||
gen-devlist
|
||||
|
@ -1645,6 +1645,8 @@ int scsi_error_handler(void *data)
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
}
|
||||
|
||||
__set_current_state(TASK_RUNNING);
|
||||
|
||||
SCSI_LOG_ERROR_RECOVERY(1, printk("Error handler scsi_eh_%d"
|
||||
" exiting\n",shost->host_no));
|
||||
|
||||
|
@ -276,6 +276,8 @@ static const struct pnp_device_id pnp_dev_table[] = {
|
||||
{ "SUP1620", 0 },
|
||||
/* SupraExpress 33.6 Data/Fax PnP modem */
|
||||
{ "SUP1760", 0 },
|
||||
/* SupraExpress 56i Sp Intl */
|
||||
{ "SUP2171", 0 },
|
||||
/* Phoebe Micro */
|
||||
/* Phoebe Micro 33.6 Data Fax 1433VQH Plug & Play */
|
||||
{ "TEX0011", 0 },
|
||||
|
7
drivers/video/logo/.gitignore
vendored
Normal file
7
drivers/video/logo/.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
#
|
||||
# Generated files
|
||||
#
|
||||
*_mono.c
|
||||
*_vga16.c
|
||||
*_clut224.c
|
||||
*_gray256.c
|
@ -96,14 +96,14 @@ static int vesafb_blank(int blank, struct fb_info *info)
|
||||
int loop = 10000;
|
||||
u8 seq = 0, crtc17 = 0;
|
||||
|
||||
err = 0;
|
||||
|
||||
if (blank) {
|
||||
if (blank == FB_BLANK_POWERDOWN) {
|
||||
seq = 0x20;
|
||||
crtc17 = 0x00;
|
||||
err = 0;
|
||||
} else {
|
||||
seq = 0x00;
|
||||
crtc17 = 0x80;
|
||||
err = (blank == FB_BLANK_UNBLANK) ? 0 : -EINVAL;
|
||||
}
|
||||
|
||||
vga_wseq(NULL, 0x00, 0x01);
|
||||
|
@ -110,9 +110,8 @@ struct nfs_seqid_counter {
|
||||
};
|
||||
|
||||
struct nfs_seqid {
|
||||
struct list_head list;
|
||||
struct nfs_seqid_counter *sequence;
|
||||
struct rpc_task *task;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
static inline void nfs_confirm_seqid(struct nfs_seqid_counter *seqid, int status)
|
||||
@ -127,6 +126,7 @@ static inline void nfs_confirm_seqid(struct nfs_seqid_counter *seqid, int status
|
||||
* semantics by allowing the server to identify replayed requests.
|
||||
*/
|
||||
struct nfs4_state_owner {
|
||||
spinlock_t so_lock;
|
||||
struct list_head so_list; /* per-clientid list of state_owners */
|
||||
struct nfs4_client *so_client;
|
||||
u32 so_id; /* 32-bit identifier, unique */
|
||||
|
@ -212,6 +212,7 @@ static void update_open_stateid(struct nfs4_state *state, nfs4_stateid *stateid,
|
||||
|
||||
open_flags &= (FMODE_READ|FMODE_WRITE);
|
||||
/* Protect against nfs4_find_state() */
|
||||
spin_lock(&state->owner->so_lock);
|
||||
spin_lock(&inode->i_lock);
|
||||
state->state |= open_flags;
|
||||
/* NB! List reordering - see the reclaim code for why. */
|
||||
@ -221,6 +222,7 @@ static void update_open_stateid(struct nfs4_state *state, nfs4_stateid *stateid,
|
||||
state->nreaders++;
|
||||
memcpy(&state->stateid, stateid, sizeof(state->stateid));
|
||||
spin_unlock(&inode->i_lock);
|
||||
spin_unlock(&state->owner->so_lock);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2357,7 +2359,7 @@ static inline ssize_t nfs4_get_acl_uncached(struct inode *inode, void *buf, size
|
||||
return -ENOMEM;
|
||||
args.acl_pages[0] = localpage;
|
||||
args.acl_pgbase = 0;
|
||||
args.acl_len = PAGE_SIZE;
|
||||
resp_len = args.acl_len = PAGE_SIZE;
|
||||
} else {
|
||||
resp_buf = buf;
|
||||
buf_to_pages(buf, buflen, args.acl_pages, &args.acl_pgbase);
|
||||
|
@ -267,6 +267,7 @@ nfs4_alloc_state_owner(void)
|
||||
sp = kzalloc(sizeof(*sp),GFP_KERNEL);
|
||||
if (!sp)
|
||||
return NULL;
|
||||
spin_lock_init(&sp->so_lock);
|
||||
INIT_LIST_HEAD(&sp->so_states);
|
||||
INIT_LIST_HEAD(&sp->so_delegations);
|
||||
rpc_init_wait_queue(&sp->so_sequence.wait, "Seqid_waitqueue");
|
||||
@ -438,20 +439,23 @@ nfs4_get_open_state(struct inode *inode, struct nfs4_state_owner *owner)
|
||||
if (state)
|
||||
goto out;
|
||||
new = nfs4_alloc_open_state();
|
||||
spin_lock(&owner->so_lock);
|
||||
spin_lock(&inode->i_lock);
|
||||
state = __nfs4_find_state_byowner(inode, owner);
|
||||
if (state == NULL && new != NULL) {
|
||||
state = new;
|
||||
/* Note: The reclaim code dictates that we add stateless
|
||||
* and read-only stateids to the end of the list */
|
||||
list_add_tail(&state->open_states, &owner->so_states);
|
||||
state->owner = owner;
|
||||
atomic_inc(&owner->so_count);
|
||||
list_add(&state->inode_states, &nfsi->open_states);
|
||||
state->inode = igrab(inode);
|
||||
spin_unlock(&inode->i_lock);
|
||||
/* Note: The reclaim code dictates that we add stateless
|
||||
* and read-only stateids to the end of the list */
|
||||
list_add_tail(&state->open_states, &owner->so_states);
|
||||
spin_unlock(&owner->so_lock);
|
||||
} else {
|
||||
spin_unlock(&inode->i_lock);
|
||||
spin_unlock(&owner->so_lock);
|
||||
if (new)
|
||||
nfs4_free_open_state(new);
|
||||
}
|
||||
@ -468,12 +472,14 @@ void nfs4_put_open_state(struct nfs4_state *state)
|
||||
struct inode *inode = state->inode;
|
||||
struct nfs4_state_owner *owner = state->owner;
|
||||
|
||||
if (!atomic_dec_and_lock(&state->count, &inode->i_lock))
|
||||
if (!atomic_dec_and_lock(&state->count, &owner->so_lock))
|
||||
return;
|
||||
spin_lock(&inode->i_lock);
|
||||
if (!list_empty(&state->inode_states))
|
||||
list_del(&state->inode_states);
|
||||
spin_unlock(&inode->i_lock);
|
||||
list_del(&state->open_states);
|
||||
spin_unlock(&inode->i_lock);
|
||||
spin_unlock(&owner->so_lock);
|
||||
iput(inode);
|
||||
BUG_ON (state->state != 0);
|
||||
nfs4_free_open_state(state);
|
||||
@ -491,6 +497,7 @@ void nfs4_close_state(struct nfs4_state *state, mode_t mode)
|
||||
|
||||
atomic_inc(&owner->so_count);
|
||||
/* Protect against nfs4_find_state() */
|
||||
spin_lock(&owner->so_lock);
|
||||
spin_lock(&inode->i_lock);
|
||||
if (mode & FMODE_READ)
|
||||
state->nreaders--;
|
||||
@ -503,6 +510,7 @@ void nfs4_close_state(struct nfs4_state *state, mode_t mode)
|
||||
list_move_tail(&state->open_states, &owner->so_states);
|
||||
}
|
||||
spin_unlock(&inode->i_lock);
|
||||
spin_unlock(&owner->so_lock);
|
||||
newstate = 0;
|
||||
if (state->state != 0) {
|
||||
if (state->nreaders)
|
||||
@ -670,16 +678,12 @@ void nfs4_copy_stateid(nfs4_stateid *dst, struct nfs4_state *state, fl_owner_t f
|
||||
|
||||
struct nfs_seqid *nfs_alloc_seqid(struct nfs_seqid_counter *counter)
|
||||
{
|
||||
struct rpc_sequence *sequence = counter->sequence;
|
||||
struct nfs_seqid *new;
|
||||
|
||||
new = kmalloc(sizeof(*new), GFP_KERNEL);
|
||||
if (new != NULL) {
|
||||
new->sequence = counter;
|
||||
new->task = NULL;
|
||||
spin_lock(&sequence->lock);
|
||||
list_add_tail(&new->list, &sequence->list);
|
||||
spin_unlock(&sequence->lock);
|
||||
INIT_LIST_HEAD(&new->list);
|
||||
}
|
||||
return new;
|
||||
}
|
||||
@ -687,16 +691,13 @@ struct nfs_seqid *nfs_alloc_seqid(struct nfs_seqid_counter *counter)
|
||||
void nfs_free_seqid(struct nfs_seqid *seqid)
|
||||
{
|
||||
struct rpc_sequence *sequence = seqid->sequence->sequence;
|
||||
struct rpc_task *next = NULL;
|
||||
|
||||
spin_lock(&sequence->lock);
|
||||
list_del(&seqid->list);
|
||||
if (!list_empty(&sequence->list)) {
|
||||
next = list_entry(sequence->list.next, struct nfs_seqid, list)->task;
|
||||
if (next)
|
||||
rpc_wake_up_task(next);
|
||||
if (!list_empty(&seqid->list)) {
|
||||
spin_lock(&sequence->lock);
|
||||
list_del(&seqid->list);
|
||||
spin_unlock(&sequence->lock);
|
||||
}
|
||||
spin_unlock(&sequence->lock);
|
||||
rpc_wake_up_next(&sequence->wait);
|
||||
kfree(seqid);
|
||||
}
|
||||
|
||||
@ -752,13 +753,16 @@ int nfs_wait_on_sequence(struct nfs_seqid *seqid, struct rpc_task *task)
|
||||
struct rpc_sequence *sequence = seqid->sequence->sequence;
|
||||
int status = 0;
|
||||
|
||||
if (sequence->list.next == &seqid->list)
|
||||
goto out;
|
||||
spin_lock(&sequence->lock);
|
||||
if (sequence->list.next != &seqid->list) {
|
||||
seqid->task = task;
|
||||
if (!list_empty(&sequence->list)) {
|
||||
rpc_sleep_on(&sequence->wait, task, NULL, NULL);
|
||||
status = -EAGAIN;
|
||||
}
|
||||
} else
|
||||
list_add(&seqid->list, &sequence->list);
|
||||
spin_unlock(&sequence->lock);
|
||||
out:
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -903,6 +907,7 @@ static void nfs4_state_mark_reclaim(struct nfs4_client *clp)
|
||||
list_for_each_entry(sp, &clp->cl_state_owners, so_list) {
|
||||
sp->so_seqid.counter = 0;
|
||||
sp->so_seqid.flags = 0;
|
||||
spin_lock(&sp->so_lock);
|
||||
list_for_each_entry(state, &sp->so_states, open_states) {
|
||||
list_for_each_entry(lock, &state->lock_states, ls_locks) {
|
||||
lock->ls_seqid.counter = 0;
|
||||
@ -910,6 +915,7 @@ static void nfs4_state_mark_reclaim(struct nfs4_client *clp)
|
||||
lock->ls_flags &= ~NFS_LOCK_INITIALIZED;
|
||||
}
|
||||
}
|
||||
spin_unlock(&sp->so_lock);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3255,7 +3255,8 @@ static int decode_getacl(struct xdr_stream *xdr, struct rpc_rqst *req,
|
||||
if (attrlen <= *acl_len)
|
||||
xdr_read_pages(xdr, attrlen);
|
||||
*acl_len = attrlen;
|
||||
}
|
||||
} else
|
||||
status = -EOPNOTSUPP;
|
||||
|
||||
out:
|
||||
return status;
|
||||
|
@ -15,25 +15,26 @@
|
||||
ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP_OFFSET)
|
||||
ldr \irqstat, [\irqstat] @ get interrupts
|
||||
cmp \irqstat, #0
|
||||
beq 1001f
|
||||
beq 1001f @ upper IRQ?
|
||||
clz \irqnr, \irqstat
|
||||
mov \base, #31
|
||||
subs \irqnr, \base, \irqnr
|
||||
sub \irqnr, \base, \irqnr
|
||||
b 1002f @ lower IRQ being
|
||||
@ handled
|
||||
|
||||
1001:
|
||||
/*
|
||||
* IXP465 has an upper IRQ status register
|
||||
*/
|
||||
#if defined(CONFIG_CPU_IXP46X)
|
||||
bne 1002f
|
||||
ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP2_OFFSET)
|
||||
ldr \irqstat, [\irqstat] @ get upper interrupts
|
||||
mov \irqnr, #63
|
||||
clz \irqstat, \irqstat
|
||||
cmp \irqstat, #32
|
||||
subne \irqnr, \irqnr, \irqstat
|
||||
1002:
|
||||
#endif
|
||||
1002:
|
||||
.endm
|
||||
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
|
||||
#define pcibios_assign_all_busses() 1
|
||||
|
||||
#if defined(CONFIG_CPU_IXP465) && !defined(__ASSEMBLY__)
|
||||
#if defined(CONFIG_CPU_IXP46X) && !defined(__ASSEMBLY__)
|
||||
extern unsigned int processor_id;
|
||||
#define cpu_is_ixp465() ((processor_id & 0xffffffc0) == 0x69054200)
|
||||
#else
|
||||
|
@ -653,7 +653,7 @@
|
||||
|
||||
#define UDCCS_IO_RFS (1 << 0) /* Receive FIFO service */
|
||||
#define UDCCS_IO_RPC (1 << 1) /* Receive packet complete */
|
||||
#define UDCCS_IO_ROF (1 << 3) /* Receive overflow */
|
||||
#define UDCCS_IO_ROF (1 << 2) /* Receive overflow */
|
||||
#define UDCCS_IO_DME (1 << 3) /* DMA enable */
|
||||
#define UDCCS_IO_RNE (1 << 6) /* Receive FIFO not empty */
|
||||
#define UDCCS_IO_RSP (1 << 7) /* Receive short packet */
|
||||
|
@ -103,7 +103,7 @@
|
||||
({ \
|
||||
smp_mb(); \
|
||||
__asm__ __volatile__( \
|
||||
"@ up_op_read\n" \
|
||||
"@ up_op_write\n" \
|
||||
"1: ldrex lr, [%0]\n" \
|
||||
" adds lr, lr, %1\n" \
|
||||
" strex ip, lr, [%0]\n" \
|
||||
@ -231,7 +231,7 @@
|
||||
#define __up_op_write(ptr,wake) \
|
||||
({ \
|
||||
__asm__ __volatile__( \
|
||||
"@ up_op_read\n" \
|
||||
"@ up_op_write\n" \
|
||||
" mrs ip, cpsr\n" \
|
||||
" orr lr, ip, #128\n" \
|
||||
" msr cpsr_c, lr\n" \
|
||||
|
@ -43,7 +43,7 @@ typedef struct bootmem_data {
|
||||
extern unsigned long __init bootmem_bootmap_pages (unsigned long);
|
||||
extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend);
|
||||
extern void __init free_bootmem (unsigned long addr, unsigned long size);
|
||||
extern void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal);
|
||||
extern void * __init __alloc_bootmem_limit (unsigned long size, unsigned long align, unsigned long goal, unsigned long limit);
|
||||
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
|
||||
extern void __init reserve_bootmem (unsigned long addr, unsigned long size);
|
||||
#define alloc_bootmem(x) \
|
||||
@ -54,6 +54,16 @@ extern void __init reserve_bootmem (unsigned long addr, unsigned long size);
|
||||
__alloc_bootmem((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
|
||||
#define alloc_bootmem_low_pages(x) \
|
||||
__alloc_bootmem((x), PAGE_SIZE, 0)
|
||||
|
||||
#define alloc_bootmem_limit(x, limit) \
|
||||
__alloc_bootmem_limit((x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS), (limit))
|
||||
#define alloc_bootmem_low_limit(x, limit) \
|
||||
__alloc_bootmem_limit((x), SMP_CACHE_BYTES, 0, (limit))
|
||||
#define alloc_bootmem_pages_limit(x, limit) \
|
||||
__alloc_bootmem_limit((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS), (limit))
|
||||
#define alloc_bootmem_low_pages_limit(x, limit) \
|
||||
__alloc_bootmem_limit((x), PAGE_SIZE, 0, (limit))
|
||||
|
||||
#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
|
||||
extern unsigned long __init free_all_bootmem (void);
|
||||
|
||||
@ -61,7 +71,7 @@ extern unsigned long __init init_bootmem_node (pg_data_t *pgdat, unsigned long f
|
||||
extern void __init reserve_bootmem_node (pg_data_t *pgdat, unsigned long physaddr, unsigned long size);
|
||||
extern void __init free_bootmem_node (pg_data_t *pgdat, unsigned long addr, unsigned long size);
|
||||
extern unsigned long __init free_all_bootmem_node (pg_data_t *pgdat);
|
||||
extern void * __init __alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal);
|
||||
extern void * __init __alloc_bootmem_node_limit (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal, unsigned long limit);
|
||||
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
|
||||
#define alloc_bootmem_node(pgdat, x) \
|
||||
__alloc_bootmem_node((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
|
||||
@ -69,6 +79,14 @@ extern void * __init __alloc_bootmem_node (pg_data_t *pgdat, unsigned long size,
|
||||
__alloc_bootmem_node((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
|
||||
#define alloc_bootmem_low_pages_node(pgdat, x) \
|
||||
__alloc_bootmem_node((pgdat), (x), PAGE_SIZE, 0)
|
||||
|
||||
#define alloc_bootmem_node_limit(pgdat, x, limit) \
|
||||
__alloc_bootmem_node_limit((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS), (limit))
|
||||
#define alloc_bootmem_pages_node_limit(pgdat, x, limit) \
|
||||
__alloc_bootmem_node_limit((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS), (limit))
|
||||
#define alloc_bootmem_low_pages_node_limit(pgdat, x, limit) \
|
||||
__alloc_bootmem_node_limit((pgdat), (x), PAGE_SIZE, 0, (limit))
|
||||
|
||||
#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
|
||||
|
||||
#ifdef CONFIG_HAVE_ARCH_ALLOC_REMAP
|
||||
@ -105,5 +123,15 @@ extern void *__init alloc_large_system_hash(const char *tablename,
|
||||
#endif
|
||||
extern int __initdata hashdist; /* Distribute hashes across NUMA nodes? */
|
||||
|
||||
static inline void *__alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal)
|
||||
{
|
||||
return __alloc_bootmem_limit(size, align, goal, 0);
|
||||
}
|
||||
|
||||
static inline void *__alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align,
|
||||
unsigned long goal)
|
||||
{
|
||||
return __alloc_bootmem_node_limit(pgdat, size, align, goal, 0);
|
||||
}
|
||||
|
||||
#endif /* _LINUX_BOOTMEM_H */
|
||||
|
@ -155,11 +155,24 @@ static inline void set_file_hugepages(struct file *file)
|
||||
{
|
||||
file->f_op = &hugetlbfs_file_operations;
|
||||
}
|
||||
|
||||
static inline int valid_hugetlb_file_off(struct vm_area_struct *vma,
|
||||
unsigned long address)
|
||||
{
|
||||
struct inode *inode = vma->vm_file->f_dentry->d_inode;
|
||||
loff_t file_off = address - vma->vm_start;
|
||||
|
||||
file_off += (vma->vm_pgoff << PAGE_SHIFT);
|
||||
|
||||
return (file_off < inode->i_size);
|
||||
}
|
||||
|
||||
#else /* !CONFIG_HUGETLBFS */
|
||||
|
||||
#define is_file_hugepages(file) 0
|
||||
#define set_file_hugepages(file) BUG()
|
||||
#define hugetlb_zero_setup(size) ERR_PTR(-ENOSYS)
|
||||
#define valid_hugetlb_file_off(vma, address) 0
|
||||
|
||||
#endif /* !CONFIG_HUGETLBFS */
|
||||
|
||||
|
@ -66,7 +66,12 @@ struct rpc_cred_cache {
|
||||
|
||||
struct rpc_auth {
|
||||
unsigned int au_cslack; /* call cred size estimate */
|
||||
unsigned int au_rslack; /* reply verf size guess */
|
||||
/* guess at number of u32's auth adds before
|
||||
* reply data; normally the verifier size: */
|
||||
unsigned int au_rslack;
|
||||
/* for gss, used to calculate au_rslack: */
|
||||
unsigned int au_verfsize;
|
||||
|
||||
unsigned int au_flags; /* various flags */
|
||||
struct rpc_authops * au_ops; /* operations */
|
||||
rpc_authflavor_t au_flavor; /* pseudoflavor (note may
|
||||
|
@ -40,14 +40,21 @@ int gss_import_sec_context(
|
||||
struct gss_ctx **ctx_id);
|
||||
u32 gss_get_mic(
|
||||
struct gss_ctx *ctx_id,
|
||||
u32 qop,
|
||||
struct xdr_buf *message,
|
||||
struct xdr_netobj *mic_token);
|
||||
u32 gss_verify_mic(
|
||||
struct gss_ctx *ctx_id,
|
||||
struct xdr_buf *message,
|
||||
struct xdr_netobj *mic_token,
|
||||
u32 *qstate);
|
||||
struct xdr_netobj *mic_token);
|
||||
u32 gss_wrap(
|
||||
struct gss_ctx *ctx_id,
|
||||
int offset,
|
||||
struct xdr_buf *outbuf,
|
||||
struct page **inpages);
|
||||
u32 gss_unwrap(
|
||||
struct gss_ctx *ctx_id,
|
||||
int offset,
|
||||
struct xdr_buf *inbuf);
|
||||
u32 gss_delete_sec_context(
|
||||
struct gss_ctx **ctx_id);
|
||||
|
||||
@ -56,7 +63,6 @@ char *gss_service_to_auth_domain_name(struct gss_api_mech *, u32 service);
|
||||
|
||||
struct pf_desc {
|
||||
u32 pseudoflavor;
|
||||
u32 qop;
|
||||
u32 service;
|
||||
char *name;
|
||||
char *auth_domain_name;
|
||||
@ -85,14 +91,21 @@ struct gss_api_ops {
|
||||
struct gss_ctx *ctx_id);
|
||||
u32 (*gss_get_mic)(
|
||||
struct gss_ctx *ctx_id,
|
||||
u32 qop,
|
||||
struct xdr_buf *message,
|
||||
struct xdr_netobj *mic_token);
|
||||
u32 (*gss_verify_mic)(
|
||||
struct gss_ctx *ctx_id,
|
||||
struct xdr_buf *message,
|
||||
struct xdr_netobj *mic_token,
|
||||
u32 *qstate);
|
||||
struct xdr_netobj *mic_token);
|
||||
u32 (*gss_wrap)(
|
||||
struct gss_ctx *ctx_id,
|
||||
int offset,
|
||||
struct xdr_buf *outbuf,
|
||||
struct page **inpages);
|
||||
u32 (*gss_unwrap)(
|
||||
struct gss_ctx *ctx_id,
|
||||
int offset,
|
||||
struct xdr_buf *buf);
|
||||
void (*gss_delete_sec_context)(
|
||||
void *internal_ctx_id);
|
||||
};
|
||||
|
@ -65,16 +65,6 @@ typedef unsigned int OM_uint32;
|
||||
#define GSS_C_MECH_CODE 2
|
||||
|
||||
|
||||
/*
|
||||
* Define the default Quality of Protection for per-message services. Note
|
||||
* that an implementation that offers multiple levels of QOP may either reserve
|
||||
* a value (for example zero, as assumed here) to mean "default protection", or
|
||||
* alternatively may simply equate GSS_C_QOP_DEFAULT to a specific explicit
|
||||
* QOP value. However a value of 0 should always be interpreted by a GSSAPI
|
||||
* implementation as a request for the default protection level.
|
||||
*/
|
||||
#define GSS_C_QOP_DEFAULT 0
|
||||
|
||||
/*
|
||||
* Expiration time of 2^32-1 seconds means infinite lifetime for a
|
||||
* credential or security context
|
||||
|
@ -116,18 +116,22 @@ enum seal_alg {
|
||||
|
||||
s32
|
||||
make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body,
|
||||
struct xdr_netobj *cksum);
|
||||
int body_offset, struct xdr_netobj *cksum);
|
||||
|
||||
u32 gss_get_mic_kerberos(struct gss_ctx *, struct xdr_buf *,
|
||||
struct xdr_netobj *);
|
||||
|
||||
u32 gss_verify_mic_kerberos(struct gss_ctx *, struct xdr_buf *,
|
||||
struct xdr_netobj *);
|
||||
|
||||
u32
|
||||
krb5_make_token(struct krb5_ctx *context_handle, int qop_req,
|
||||
struct xdr_buf *input_message_buffer,
|
||||
struct xdr_netobj *output_message_buffer, int toktype);
|
||||
gss_wrap_kerberos(struct gss_ctx *ctx_id, int offset,
|
||||
struct xdr_buf *outbuf, struct page **pages);
|
||||
|
||||
u32
|
||||
krb5_read_token(struct krb5_ctx *context_handle,
|
||||
struct xdr_netobj *input_token_buffer,
|
||||
struct xdr_buf *message_buffer,
|
||||
int *qop_state, int toktype);
|
||||
gss_unwrap_kerberos(struct gss_ctx *ctx_id, int offset,
|
||||
struct xdr_buf *buf);
|
||||
|
||||
|
||||
u32
|
||||
krb5_encrypt(struct crypto_tfm * key,
|
||||
@ -137,6 +141,13 @@ u32
|
||||
krb5_decrypt(struct crypto_tfm * key,
|
||||
void *iv, void *in, void *out, int length);
|
||||
|
||||
int
|
||||
gss_encrypt_xdr_buf(struct crypto_tfm *tfm, struct xdr_buf *outbuf, int offset,
|
||||
struct page **pages);
|
||||
|
||||
int
|
||||
gss_decrypt_xdr_buf(struct crypto_tfm *tfm, struct xdr_buf *inbuf, int offset);
|
||||
|
||||
s32
|
||||
krb5_make_seq_num(struct crypto_tfm * key,
|
||||
int direction,
|
||||
|
@ -41,9 +41,9 @@ struct spkm3_ctx {
|
||||
#define SPKM_WRAP_TOK 5
|
||||
#define SPKM_DEL_TOK 6
|
||||
|
||||
u32 spkm3_make_token(struct spkm3_ctx *ctx, int qop_req, struct xdr_buf * text, struct xdr_netobj * token, int toktype);
|
||||
u32 spkm3_make_token(struct spkm3_ctx *ctx, struct xdr_buf * text, struct xdr_netobj * token, int toktype);
|
||||
|
||||
u32 spkm3_read_token(struct spkm3_ctx *ctx, struct xdr_netobj *read_token, struct xdr_buf *message_buffer, int *qop_state, int toktype);
|
||||
u32 spkm3_read_token(struct spkm3_ctx *ctx, struct xdr_netobj *read_token, struct xdr_buf *message_buffer, int toktype);
|
||||
|
||||
#define CKSUMTYPE_RSA_MD5 0x0007
|
||||
|
||||
|
@ -73,7 +73,10 @@ struct rpc_rqst {
|
||||
int rq_cong; /* has incremented xprt->cong */
|
||||
int rq_received; /* receive completed */
|
||||
u32 rq_seqno; /* gss seq no. used on req. */
|
||||
|
||||
int rq_enc_pages_num;
|
||||
struct page **rq_enc_pages; /* scratch pages for use by
|
||||
gss privacy code */
|
||||
void (*rq_release_snd_buf)(struct rpc_rqst *); /* release rq_enc_pages */
|
||||
struct list_head rq_list;
|
||||
|
||||
struct xdr_buf rq_private_buf; /* The receive buffer
|
||||
|
@ -848,7 +848,7 @@ static inline void copy_flags(unsigned long clone_flags, struct task_struct *p)
|
||||
{
|
||||
unsigned long new_flags = p->flags;
|
||||
|
||||
new_flags &= ~PF_SUPERPRIV;
|
||||
new_flags &= ~(PF_SUPERPRIV | PF_NOFREEZE);
|
||||
new_flags |= PF_FORKNOEXEC;
|
||||
if (!(clone_flags & CLONE_PTRACE))
|
||||
p->ptrace = 0;
|
||||
|
@ -387,25 +387,19 @@ int posix_cpu_timer_del(struct k_itimer *timer)
|
||||
if (unlikely(p == NULL))
|
||||
return 0;
|
||||
|
||||
spin_lock(&p->sighand->siglock);
|
||||
if (!list_empty(&timer->it.cpu.entry)) {
|
||||
read_lock(&tasklist_lock);
|
||||
if (unlikely(p->signal == NULL)) {
|
||||
/*
|
||||
* We raced with the reaping of the task.
|
||||
* The deletion should have cleared us off the list.
|
||||
*/
|
||||
BUG_ON(!list_empty(&timer->it.cpu.entry));
|
||||
} else {
|
||||
/*
|
||||
* Take us off the task's timer list.
|
||||
*/
|
||||
spin_lock(&p->sighand->siglock);
|
||||
list_del(&timer->it.cpu.entry);
|
||||
spin_unlock(&p->sighand->siglock);
|
||||
}
|
||||
read_unlock(&tasklist_lock);
|
||||
/*
|
||||
* Take us off the task's timer list. We don't need to
|
||||
* take tasklist_lock and check for the task being reaped.
|
||||
* If it was reaped, it already called posix_cpu_timers_exit
|
||||
* and posix_cpu_timers_exit_group to clear all the timers
|
||||
* that pointed to it.
|
||||
*/
|
||||
list_del(&timer->it.cpu.entry);
|
||||
put_task_struct(p);
|
||||
}
|
||||
put_task_struct(p);
|
||||
spin_unlock(&p->sighand->siglock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
6
lib/.gitignore
vendored
Normal file
6
lib/.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
#
|
||||
# Generated files
|
||||
#
|
||||
gen_crc32table
|
||||
crc32table.h
|
||||
|
31
mm/bootmem.c
31
mm/bootmem.c
@ -154,10 +154,10 @@ static void __init free_bootmem_core(bootmem_data_t *bdata, unsigned long addr,
|
||||
*/
|
||||
static void * __init
|
||||
__alloc_bootmem_core(struct bootmem_data *bdata, unsigned long size,
|
||||
unsigned long align, unsigned long goal)
|
||||
unsigned long align, unsigned long goal, unsigned long limit)
|
||||
{
|
||||
unsigned long offset, remaining_size, areasize, preferred;
|
||||
unsigned long i, start = 0, incr, eidx;
|
||||
unsigned long i, start = 0, incr, eidx, end_pfn = bdata->node_low_pfn;
|
||||
void *ret;
|
||||
|
||||
if(!size) {
|
||||
@ -166,7 +166,14 @@ __alloc_bootmem_core(struct bootmem_data *bdata, unsigned long size,
|
||||
}
|
||||
BUG_ON(align & (align-1));
|
||||
|
||||
eidx = bdata->node_low_pfn - (bdata->node_boot_start >> PAGE_SHIFT);
|
||||
if (limit && bdata->node_boot_start >= limit)
|
||||
return NULL;
|
||||
|
||||
limit >>=PAGE_SHIFT;
|
||||
if (limit && end_pfn > limit)
|
||||
end_pfn = limit;
|
||||
|
||||
eidx = end_pfn - (bdata->node_boot_start >> PAGE_SHIFT);
|
||||
offset = 0;
|
||||
if (align &&
|
||||
(bdata->node_boot_start & (align - 1UL)) != 0)
|
||||
@ -178,11 +185,12 @@ __alloc_bootmem_core(struct bootmem_data *bdata, unsigned long size,
|
||||
* first, then we try to allocate lower pages.
|
||||
*/
|
||||
if (goal && (goal >= bdata->node_boot_start) &&
|
||||
((goal >> PAGE_SHIFT) < bdata->node_low_pfn)) {
|
||||
((goal >> PAGE_SHIFT) < end_pfn)) {
|
||||
preferred = goal - bdata->node_boot_start;
|
||||
|
||||
if (bdata->last_success >= preferred)
|
||||
preferred = bdata->last_success;
|
||||
if (!limit || (limit && limit > bdata->last_success))
|
||||
preferred = bdata->last_success;
|
||||
} else
|
||||
preferred = 0;
|
||||
|
||||
@ -382,14 +390,15 @@ unsigned long __init free_all_bootmem (void)
|
||||
return(free_all_bootmem_core(NODE_DATA(0)));
|
||||
}
|
||||
|
||||
void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal)
|
||||
void * __init __alloc_bootmem_limit (unsigned long size, unsigned long align, unsigned long goal,
|
||||
unsigned long limit)
|
||||
{
|
||||
pg_data_t *pgdat = pgdat_list;
|
||||
void *ptr;
|
||||
|
||||
for_each_pgdat(pgdat)
|
||||
if ((ptr = __alloc_bootmem_core(pgdat->bdata, size,
|
||||
align, goal)))
|
||||
align, goal, limit)))
|
||||
return(ptr);
|
||||
|
||||
/*
|
||||
@ -400,14 +409,16 @@ void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void * __init __alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal)
|
||||
|
||||
void * __init __alloc_bootmem_node_limit (pg_data_t *pgdat, unsigned long size, unsigned long align,
|
||||
unsigned long goal, unsigned long limit)
|
||||
{
|
||||
void *ptr;
|
||||
|
||||
ptr = __alloc_bootmem_core(pgdat->bdata, size, align, goal);
|
||||
ptr = __alloc_bootmem_core(pgdat->bdata, size, align, goal, limit);
|
||||
if (ptr)
|
||||
return (ptr);
|
||||
|
||||
return __alloc_bootmem(size, align, goal);
|
||||
return __alloc_bootmem_limit(size, align, goal, limit);
|
||||
}
|
||||
|
||||
|
35
mm/hugetlb.c
35
mm/hugetlb.c
@ -274,21 +274,22 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
|
||||
{
|
||||
pte_t *src_pte, *dst_pte, entry;
|
||||
struct page *ptepage;
|
||||
unsigned long addr = vma->vm_start;
|
||||
unsigned long end = vma->vm_end;
|
||||
unsigned long addr;
|
||||
|
||||
while (addr < end) {
|
||||
for (addr = vma->vm_start; addr < vma->vm_end; addr += HPAGE_SIZE) {
|
||||
dst_pte = huge_pte_alloc(dst, addr);
|
||||
if (!dst_pte)
|
||||
goto nomem;
|
||||
spin_lock(&src->page_table_lock);
|
||||
src_pte = huge_pte_offset(src, addr);
|
||||
BUG_ON(!src_pte || pte_none(*src_pte)); /* prefaulted */
|
||||
entry = *src_pte;
|
||||
ptepage = pte_page(entry);
|
||||
get_page(ptepage);
|
||||
add_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE);
|
||||
set_huge_pte_at(dst, addr, dst_pte, entry);
|
||||
addr += HPAGE_SIZE;
|
||||
if (src_pte && !pte_none(*src_pte)) {
|
||||
entry = *src_pte;
|
||||
ptepage = pte_page(entry);
|
||||
get_page(ptepage);
|
||||
add_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE);
|
||||
set_huge_pte_at(dst, addr, dst_pte, entry);
|
||||
}
|
||||
spin_unlock(&src->page_table_lock);
|
||||
}
|
||||
return 0;
|
||||
|
||||
@ -323,8 +324,8 @@ void unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start,
|
||||
|
||||
page = pte_page(pte);
|
||||
put_page(page);
|
||||
add_mm_counter(mm, rss, - (HPAGE_SIZE / PAGE_SIZE));
|
||||
}
|
||||
add_mm_counter(mm, rss, -((end - start) >> PAGE_SHIFT));
|
||||
flush_tlb_range(vma, start, end);
|
||||
}
|
||||
|
||||
@ -403,6 +404,7 @@ int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
BUG_ON(!is_vm_hugetlb_page(vma));
|
||||
|
||||
vpfn = vaddr/PAGE_SIZE;
|
||||
spin_lock(&mm->page_table_lock);
|
||||
while (vaddr < vma->vm_end && remainder) {
|
||||
|
||||
if (pages) {
|
||||
@ -415,8 +417,13 @@ int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
* indexing below to work. */
|
||||
pte = huge_pte_offset(mm, vaddr & HPAGE_MASK);
|
||||
|
||||
/* hugetlb should be locked, and hence, prefaulted */
|
||||
WARN_ON(!pte || pte_none(*pte));
|
||||
/* the hugetlb file might have been truncated */
|
||||
if (!pte || pte_none(*pte)) {
|
||||
remainder = 0;
|
||||
if (!i)
|
||||
i = -EFAULT;
|
||||
break;
|
||||
}
|
||||
|
||||
page = &pte_page(*pte)[vpfn % (HPAGE_SIZE/PAGE_SIZE)];
|
||||
|
||||
@ -434,7 +441,7 @@ int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
--remainder;
|
||||
++i;
|
||||
}
|
||||
|
||||
spin_unlock(&mm->page_table_lock);
|
||||
*length = remainder;
|
||||
*position = vaddr;
|
||||
|
||||
|
14
mm/memory.c
14
mm/memory.c
@ -2045,8 +2045,18 @@ int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct * vma,
|
||||
|
||||
inc_page_state(pgfault);
|
||||
|
||||
if (is_vm_hugetlb_page(vma))
|
||||
return VM_FAULT_SIGBUS; /* mapping truncation does this. */
|
||||
if (unlikely(is_vm_hugetlb_page(vma))) {
|
||||
if (valid_hugetlb_file_off(vma, address))
|
||||
/* We get here only if there was a stale(zero) TLB entry
|
||||
* (because of HW prefetching).
|
||||
* Low-level arch code (if needed) should have already
|
||||
* purged the stale entry as part of this fault handling.
|
||||
* Here we just return.
|
||||
*/
|
||||
return VM_FAULT_MINOR;
|
||||
else
|
||||
return VM_FAULT_SIGBUS; /* mapping truncation does this. */
|
||||
}
|
||||
|
||||
/*
|
||||
* We need the page table lock to synchronize with kswapd
|
||||
|
@ -10,7 +10,7 @@ auth_rpcgss-objs := auth_gss.o gss_generic_token.o \
|
||||
obj-$(CONFIG_RPCSEC_GSS_KRB5) += rpcsec_gss_krb5.o
|
||||
|
||||
rpcsec_gss_krb5-objs := gss_krb5_mech.o gss_krb5_seal.o gss_krb5_unseal.o \
|
||||
gss_krb5_seqnum.o
|
||||
gss_krb5_seqnum.o gss_krb5_wrap.o
|
||||
|
||||
obj-$(CONFIG_RPCSEC_GSS_SPKM3) += rpcsec_gss_spkm3.o
|
||||
|
||||
|
@ -43,6 +43,7 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/pagemap.h>
|
||||
#include <linux/sunrpc/clnt.h>
|
||||
#include <linux/sunrpc/auth.h>
|
||||
#include <linux/sunrpc/auth_gss.h>
|
||||
@ -853,9 +854,7 @@ gss_marshal(struct rpc_task *task, u32 *p)
|
||||
*p++ = htonl(RPC_AUTH_GSS);
|
||||
|
||||
mic.data = (u8 *)(p + 1);
|
||||
maj_stat = gss_get_mic(ctx->gc_gss_ctx,
|
||||
GSS_C_QOP_DEFAULT,
|
||||
&verf_buf, &mic);
|
||||
maj_stat = gss_get_mic(ctx->gc_gss_ctx, &verf_buf, &mic);
|
||||
if (maj_stat == GSS_S_CONTEXT_EXPIRED) {
|
||||
cred->cr_flags &= ~RPCAUTH_CRED_UPTODATE;
|
||||
} else if (maj_stat != 0) {
|
||||
@ -886,10 +885,8 @@ static u32 *
|
||||
gss_validate(struct rpc_task *task, u32 *p)
|
||||
{
|
||||
struct rpc_cred *cred = task->tk_msg.rpc_cred;
|
||||
struct gss_cred *gss_cred = container_of(cred, struct gss_cred,
|
||||
gc_base);
|
||||
struct gss_cl_ctx *ctx = gss_cred_get_ctx(cred);
|
||||
u32 seq, qop_state;
|
||||
u32 seq;
|
||||
struct kvec iov;
|
||||
struct xdr_buf verf_buf;
|
||||
struct xdr_netobj mic;
|
||||
@ -910,23 +907,14 @@ gss_validate(struct rpc_task *task, u32 *p)
|
||||
mic.data = (u8 *)p;
|
||||
mic.len = len;
|
||||
|
||||
maj_stat = gss_verify_mic(ctx->gc_gss_ctx, &verf_buf, &mic, &qop_state);
|
||||
maj_stat = gss_verify_mic(ctx->gc_gss_ctx, &verf_buf, &mic);
|
||||
if (maj_stat == GSS_S_CONTEXT_EXPIRED)
|
||||
cred->cr_flags &= ~RPCAUTH_CRED_UPTODATE;
|
||||
if (maj_stat)
|
||||
goto out_bad;
|
||||
switch (gss_cred->gc_service) {
|
||||
case RPC_GSS_SVC_NONE:
|
||||
/* verifier data, flavor, length: */
|
||||
task->tk_auth->au_rslack = XDR_QUADLEN(len) + 2;
|
||||
break;
|
||||
case RPC_GSS_SVC_INTEGRITY:
|
||||
/* verifier data, flavor, length, length, sequence number: */
|
||||
task->tk_auth->au_rslack = XDR_QUADLEN(len) + 4;
|
||||
break;
|
||||
case RPC_GSS_SVC_PRIVACY:
|
||||
goto out_bad;
|
||||
}
|
||||
/* We leave it to unwrap to calculate au_rslack. For now we just
|
||||
* calculate the length of the verifier: */
|
||||
task->tk_auth->au_verfsize = XDR_QUADLEN(len) + 2;
|
||||
gss_put_ctx(ctx);
|
||||
dprintk("RPC: %4u GSS gss_validate: gss_verify_mic succeeded.\n",
|
||||
task->tk_pid);
|
||||
@ -971,8 +959,7 @@ gss_wrap_req_integ(struct rpc_cred *cred, struct gss_cl_ctx *ctx,
|
||||
p = iov->iov_base + iov->iov_len;
|
||||
mic.data = (u8 *)(p + 1);
|
||||
|
||||
maj_stat = gss_get_mic(ctx->gc_gss_ctx,
|
||||
GSS_C_QOP_DEFAULT, &integ_buf, &mic);
|
||||
maj_stat = gss_get_mic(ctx->gc_gss_ctx, &integ_buf, &mic);
|
||||
status = -EIO; /* XXX? */
|
||||
if (maj_stat == GSS_S_CONTEXT_EXPIRED)
|
||||
cred->cr_flags &= ~RPCAUTH_CRED_UPTODATE;
|
||||
@ -986,6 +973,113 @@ gss_wrap_req_integ(struct rpc_cred *cred, struct gss_cl_ctx *ctx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
priv_release_snd_buf(struct rpc_rqst *rqstp)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i=0; i < rqstp->rq_enc_pages_num; i++)
|
||||
__free_page(rqstp->rq_enc_pages[i]);
|
||||
kfree(rqstp->rq_enc_pages);
|
||||
}
|
||||
|
||||
static int
|
||||
alloc_enc_pages(struct rpc_rqst *rqstp)
|
||||
{
|
||||
struct xdr_buf *snd_buf = &rqstp->rq_snd_buf;
|
||||
int first, last, i;
|
||||
|
||||
if (snd_buf->page_len == 0) {
|
||||
rqstp->rq_enc_pages_num = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
first = snd_buf->page_base >> PAGE_CACHE_SHIFT;
|
||||
last = (snd_buf->page_base + snd_buf->page_len - 1) >> PAGE_CACHE_SHIFT;
|
||||
rqstp->rq_enc_pages_num = last - first + 1 + 1;
|
||||
rqstp->rq_enc_pages
|
||||
= kmalloc(rqstp->rq_enc_pages_num * sizeof(struct page *),
|
||||
GFP_NOFS);
|
||||
if (!rqstp->rq_enc_pages)
|
||||
goto out;
|
||||
for (i=0; i < rqstp->rq_enc_pages_num; i++) {
|
||||
rqstp->rq_enc_pages[i] = alloc_page(GFP_NOFS);
|
||||
if (rqstp->rq_enc_pages[i] == NULL)
|
||||
goto out_free;
|
||||
}
|
||||
rqstp->rq_release_snd_buf = priv_release_snd_buf;
|
||||
return 0;
|
||||
out_free:
|
||||
for (i--; i >= 0; i--) {
|
||||
__free_page(rqstp->rq_enc_pages[i]);
|
||||
}
|
||||
out:
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
static inline int
|
||||
gss_wrap_req_priv(struct rpc_cred *cred, struct gss_cl_ctx *ctx,
|
||||
kxdrproc_t encode, struct rpc_rqst *rqstp, u32 *p, void *obj)
|
||||
{
|
||||
struct xdr_buf *snd_buf = &rqstp->rq_snd_buf;
|
||||
u32 offset;
|
||||
u32 maj_stat;
|
||||
int status;
|
||||
u32 *opaque_len;
|
||||
struct page **inpages;
|
||||
int first;
|
||||
int pad;
|
||||
struct kvec *iov;
|
||||
char *tmp;
|
||||
|
||||
opaque_len = p++;
|
||||
offset = (u8 *)p - (u8 *)snd_buf->head[0].iov_base;
|
||||
*p++ = htonl(rqstp->rq_seqno);
|
||||
|
||||
status = encode(rqstp, p, obj);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
status = alloc_enc_pages(rqstp);
|
||||
if (status)
|
||||
return status;
|
||||
first = snd_buf->page_base >> PAGE_CACHE_SHIFT;
|
||||
inpages = snd_buf->pages + first;
|
||||
snd_buf->pages = rqstp->rq_enc_pages;
|
||||
snd_buf->page_base -= first << PAGE_CACHE_SHIFT;
|
||||
/* Give the tail its own page, in case we need extra space in the
|
||||
* head when wrapping: */
|
||||
if (snd_buf->page_len || snd_buf->tail[0].iov_len) {
|
||||
tmp = page_address(rqstp->rq_enc_pages[rqstp->rq_enc_pages_num - 1]);
|
||||
memcpy(tmp, snd_buf->tail[0].iov_base, snd_buf->tail[0].iov_len);
|
||||
snd_buf->tail[0].iov_base = tmp;
|
||||
}
|
||||
maj_stat = gss_wrap(ctx->gc_gss_ctx, offset, snd_buf, inpages);
|
||||
/* RPC_SLACK_SPACE should prevent this ever happening: */
|
||||
BUG_ON(snd_buf->len > snd_buf->buflen);
|
||||
status = -EIO;
|
||||
/* We're assuming that when GSS_S_CONTEXT_EXPIRED, the encryption was
|
||||
* done anyway, so it's safe to put the request on the wire: */
|
||||
if (maj_stat == GSS_S_CONTEXT_EXPIRED)
|
||||
cred->cr_flags &= ~RPCAUTH_CRED_UPTODATE;
|
||||
else if (maj_stat)
|
||||
return status;
|
||||
|
||||
*opaque_len = htonl(snd_buf->len - offset);
|
||||
/* guess whether we're in the head or the tail: */
|
||||
if (snd_buf->page_len || snd_buf->tail[0].iov_len)
|
||||
iov = snd_buf->tail;
|
||||
else
|
||||
iov = snd_buf->head;
|
||||
p = iov->iov_base + iov->iov_len;
|
||||
pad = 3 - ((snd_buf->len - offset - 1) & 3);
|
||||
memset(p, 0, pad);
|
||||
iov->iov_len += pad;
|
||||
snd_buf->len += pad;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
gss_wrap_req(struct rpc_task *task,
|
||||
kxdrproc_t encode, void *rqstp, u32 *p, void *obj)
|
||||
@ -1013,6 +1107,8 @@ gss_wrap_req(struct rpc_task *task,
|
||||
rqstp, p, obj);
|
||||
break;
|
||||
case RPC_GSS_SVC_PRIVACY:
|
||||
status = gss_wrap_req_priv(cred, ctx, encode,
|
||||
rqstp, p, obj);
|
||||
break;
|
||||
}
|
||||
out:
|
||||
@ -1050,8 +1146,7 @@ gss_unwrap_resp_integ(struct rpc_cred *cred, struct gss_cl_ctx *ctx,
|
||||
if (xdr_buf_read_netobj(rcv_buf, &mic, mic_offset))
|
||||
return status;
|
||||
|
||||
maj_stat = gss_verify_mic(ctx->gc_gss_ctx, &integ_buf,
|
||||
&mic, NULL);
|
||||
maj_stat = gss_verify_mic(ctx->gc_gss_ctx, &integ_buf, &mic);
|
||||
if (maj_stat == GSS_S_CONTEXT_EXPIRED)
|
||||
cred->cr_flags &= ~RPCAUTH_CRED_UPTODATE;
|
||||
if (maj_stat != GSS_S_COMPLETE)
|
||||
@ -1059,6 +1154,35 @@ gss_unwrap_resp_integ(struct rpc_cred *cred, struct gss_cl_ctx *ctx,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
gss_unwrap_resp_priv(struct rpc_cred *cred, struct gss_cl_ctx *ctx,
|
||||
struct rpc_rqst *rqstp, u32 **p)
|
||||
{
|
||||
struct xdr_buf *rcv_buf = &rqstp->rq_rcv_buf;
|
||||
u32 offset;
|
||||
u32 opaque_len;
|
||||
u32 maj_stat;
|
||||
int status = -EIO;
|
||||
|
||||
opaque_len = ntohl(*(*p)++);
|
||||
offset = (u8 *)(*p) - (u8 *)rcv_buf->head[0].iov_base;
|
||||
if (offset + opaque_len > rcv_buf->len)
|
||||
return status;
|
||||
/* remove padding: */
|
||||
rcv_buf->len = offset + opaque_len;
|
||||
|
||||
maj_stat = gss_unwrap(ctx->gc_gss_ctx, offset, rcv_buf);
|
||||
if (maj_stat == GSS_S_CONTEXT_EXPIRED)
|
||||
cred->cr_flags &= ~RPCAUTH_CRED_UPTODATE;
|
||||
if (maj_stat != GSS_S_COMPLETE)
|
||||
return status;
|
||||
if (ntohl(*(*p)++) != rqstp->rq_seqno)
|
||||
return status;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
gss_unwrap_resp(struct rpc_task *task,
|
||||
kxdrproc_t decode, void *rqstp, u32 *p, void *obj)
|
||||
@ -1067,6 +1191,9 @@ gss_unwrap_resp(struct rpc_task *task,
|
||||
struct gss_cred *gss_cred = container_of(cred, struct gss_cred,
|
||||
gc_base);
|
||||
struct gss_cl_ctx *ctx = gss_cred_get_ctx(cred);
|
||||
u32 *savedp = p;
|
||||
struct kvec *head = ((struct rpc_rqst *)rqstp)->rq_rcv_buf.head;
|
||||
int savedlen = head->iov_len;
|
||||
int status = -EIO;
|
||||
|
||||
if (ctx->gc_proc != RPC_GSS_PROC_DATA)
|
||||
@ -1080,8 +1207,14 @@ gss_unwrap_resp(struct rpc_task *task,
|
||||
goto out;
|
||||
break;
|
||||
case RPC_GSS_SVC_PRIVACY:
|
||||
status = gss_unwrap_resp_priv(cred, ctx, rqstp, &p);
|
||||
if (status)
|
||||
goto out;
|
||||
break;
|
||||
}
|
||||
/* take into account extra slack for integrity and privacy cases: */
|
||||
task->tk_auth->au_rslack = task->tk_auth->au_verfsize + (p - savedp)
|
||||
+ (savedlen - head->iov_len);
|
||||
out_decode:
|
||||
status = decode(rqstp, p, obj);
|
||||
out:
|
||||
|
@ -139,17 +139,91 @@ buf_to_sg(struct scatterlist *sg, char *ptr, int len) {
|
||||
sg->length = len;
|
||||
}
|
||||
|
||||
static int
|
||||
process_xdr_buf(struct xdr_buf *buf, int offset, int len,
|
||||
int (*actor)(struct scatterlist *, void *), void *data)
|
||||
{
|
||||
int i, page_len, thislen, page_offset, ret = 0;
|
||||
struct scatterlist sg[1];
|
||||
|
||||
if (offset >= buf->head[0].iov_len) {
|
||||
offset -= buf->head[0].iov_len;
|
||||
} else {
|
||||
thislen = buf->head[0].iov_len - offset;
|
||||
if (thislen > len)
|
||||
thislen = len;
|
||||
buf_to_sg(sg, buf->head[0].iov_base + offset, thislen);
|
||||
ret = actor(sg, data);
|
||||
if (ret)
|
||||
goto out;
|
||||
offset = 0;
|
||||
len -= thislen;
|
||||
}
|
||||
if (len == 0)
|
||||
goto out;
|
||||
|
||||
if (offset >= buf->page_len) {
|
||||
offset -= buf->page_len;
|
||||
} else {
|
||||
page_len = buf->page_len - offset;
|
||||
if (page_len > len)
|
||||
page_len = len;
|
||||
len -= page_len;
|
||||
page_offset = (offset + buf->page_base) & (PAGE_CACHE_SIZE - 1);
|
||||
i = (offset + buf->page_base) >> PAGE_CACHE_SHIFT;
|
||||
thislen = PAGE_CACHE_SIZE - page_offset;
|
||||
do {
|
||||
if (thislen > page_len)
|
||||
thislen = page_len;
|
||||
sg->page = buf->pages[i];
|
||||
sg->offset = page_offset;
|
||||
sg->length = thislen;
|
||||
ret = actor(sg, data);
|
||||
if (ret)
|
||||
goto out;
|
||||
page_len -= thislen;
|
||||
i++;
|
||||
page_offset = 0;
|
||||
thislen = PAGE_CACHE_SIZE;
|
||||
} while (page_len != 0);
|
||||
offset = 0;
|
||||
}
|
||||
if (len == 0)
|
||||
goto out;
|
||||
|
||||
if (offset < buf->tail[0].iov_len) {
|
||||
thislen = buf->tail[0].iov_len - offset;
|
||||
if (thislen > len)
|
||||
thislen = len;
|
||||
buf_to_sg(sg, buf->tail[0].iov_base + offset, thislen);
|
||||
ret = actor(sg, data);
|
||||
len -= thislen;
|
||||
}
|
||||
if (len != 0)
|
||||
ret = -EINVAL;
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
checksummer(struct scatterlist *sg, void *data)
|
||||
{
|
||||
struct crypto_tfm *tfm = (struct crypto_tfm *)data;
|
||||
|
||||
crypto_digest_update(tfm, sg, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* checksum the plaintext data and hdrlen bytes of the token header */
|
||||
s32
|
||||
make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body,
|
||||
struct xdr_netobj *cksum)
|
||||
int body_offset, struct xdr_netobj *cksum)
|
||||
{
|
||||
char *cksumname;
|
||||
struct crypto_tfm *tfm = NULL; /* XXX add to ctx? */
|
||||
struct scatterlist sg[1];
|
||||
u32 code = GSS_S_FAILURE;
|
||||
int len, thislen, offset;
|
||||
int i;
|
||||
|
||||
switch (cksumtype) {
|
||||
case CKSUMTYPE_RSA_MD5:
|
||||
@ -169,33 +243,8 @@ make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body,
|
||||
crypto_digest_init(tfm);
|
||||
buf_to_sg(sg, header, hdrlen);
|
||||
crypto_digest_update(tfm, sg, 1);
|
||||
if (body->head[0].iov_len) {
|
||||
buf_to_sg(sg, body->head[0].iov_base, body->head[0].iov_len);
|
||||
crypto_digest_update(tfm, sg, 1);
|
||||
}
|
||||
|
||||
len = body->page_len;
|
||||
if (len != 0) {
|
||||
offset = body->page_base & (PAGE_CACHE_SIZE - 1);
|
||||
i = body->page_base >> PAGE_CACHE_SHIFT;
|
||||
thislen = PAGE_CACHE_SIZE - offset;
|
||||
do {
|
||||
if (thislen > len)
|
||||
thislen = len;
|
||||
sg->page = body->pages[i];
|
||||
sg->offset = offset;
|
||||
sg->length = thislen;
|
||||
crypto_digest_update(tfm, sg, 1);
|
||||
len -= thislen;
|
||||
i++;
|
||||
offset = 0;
|
||||
thislen = PAGE_CACHE_SIZE;
|
||||
} while(len != 0);
|
||||
}
|
||||
if (body->tail[0].iov_len) {
|
||||
buf_to_sg(sg, body->tail[0].iov_base, body->tail[0].iov_len);
|
||||
crypto_digest_update(tfm, sg, 1);
|
||||
}
|
||||
process_xdr_buf(body, body_offset, body->len - body_offset,
|
||||
checksummer, tfm);
|
||||
crypto_digest_final(tfm, cksum->data);
|
||||
code = 0;
|
||||
out:
|
||||
@ -204,3 +253,154 @@ make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body,
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(make_checksum);
|
||||
|
||||
struct encryptor_desc {
|
||||
u8 iv[8]; /* XXX hard-coded blocksize */
|
||||
struct crypto_tfm *tfm;
|
||||
int pos;
|
||||
struct xdr_buf *outbuf;
|
||||
struct page **pages;
|
||||
struct scatterlist infrags[4];
|
||||
struct scatterlist outfrags[4];
|
||||
int fragno;
|
||||
int fraglen;
|
||||
};
|
||||
|
||||
static int
|
||||
encryptor(struct scatterlist *sg, void *data)
|
||||
{
|
||||
struct encryptor_desc *desc = data;
|
||||
struct xdr_buf *outbuf = desc->outbuf;
|
||||
struct page *in_page;
|
||||
int thislen = desc->fraglen + sg->length;
|
||||
int fraglen, ret;
|
||||
int page_pos;
|
||||
|
||||
/* Worst case is 4 fragments: head, end of page 1, start
|
||||
* of page 2, tail. Anything more is a bug. */
|
||||
BUG_ON(desc->fragno > 3);
|
||||
desc->infrags[desc->fragno] = *sg;
|
||||
desc->outfrags[desc->fragno] = *sg;
|
||||
|
||||
page_pos = desc->pos - outbuf->head[0].iov_len;
|
||||
if (page_pos >= 0 && page_pos < outbuf->page_len) {
|
||||
/* pages are not in place: */
|
||||
int i = (page_pos + outbuf->page_base) >> PAGE_CACHE_SHIFT;
|
||||
in_page = desc->pages[i];
|
||||
} else {
|
||||
in_page = sg->page;
|
||||
}
|
||||
desc->infrags[desc->fragno].page = in_page;
|
||||
desc->fragno++;
|
||||
desc->fraglen += sg->length;
|
||||
desc->pos += sg->length;
|
||||
|
||||
fraglen = thislen & 7; /* XXX hardcoded blocksize */
|
||||
thislen -= fraglen;
|
||||
|
||||
if (thislen == 0)
|
||||
return 0;
|
||||
|
||||
ret = crypto_cipher_encrypt_iv(desc->tfm, desc->outfrags, desc->infrags,
|
||||
thislen, desc->iv);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (fraglen) {
|
||||
desc->outfrags[0].page = sg->page;
|
||||
desc->outfrags[0].offset = sg->offset + sg->length - fraglen;
|
||||
desc->outfrags[0].length = fraglen;
|
||||
desc->infrags[0] = desc->outfrags[0];
|
||||
desc->infrags[0].page = in_page;
|
||||
desc->fragno = 1;
|
||||
desc->fraglen = fraglen;
|
||||
} else {
|
||||
desc->fragno = 0;
|
||||
desc->fraglen = 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
gss_encrypt_xdr_buf(struct crypto_tfm *tfm, struct xdr_buf *buf, int offset,
|
||||
struct page **pages)
|
||||
{
|
||||
int ret;
|
||||
struct encryptor_desc desc;
|
||||
|
||||
BUG_ON((buf->len - offset) % crypto_tfm_alg_blocksize(tfm) != 0);
|
||||
|
||||
memset(desc.iv, 0, sizeof(desc.iv));
|
||||
desc.tfm = tfm;
|
||||
desc.pos = offset;
|
||||
desc.outbuf = buf;
|
||||
desc.pages = pages;
|
||||
desc.fragno = 0;
|
||||
desc.fraglen = 0;
|
||||
|
||||
ret = process_xdr_buf(buf, offset, buf->len - offset, encryptor, &desc);
|
||||
return ret;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(gss_encrypt_xdr_buf);
|
||||
|
||||
struct decryptor_desc {
|
||||
u8 iv[8]; /* XXX hard-coded blocksize */
|
||||
struct crypto_tfm *tfm;
|
||||
struct scatterlist frags[4];
|
||||
int fragno;
|
||||
int fraglen;
|
||||
};
|
||||
|
||||
static int
|
||||
decryptor(struct scatterlist *sg, void *data)
|
||||
{
|
||||
struct decryptor_desc *desc = data;
|
||||
int thislen = desc->fraglen + sg->length;
|
||||
int fraglen, ret;
|
||||
|
||||
/* Worst case is 4 fragments: head, end of page 1, start
|
||||
* of page 2, tail. Anything more is a bug. */
|
||||
BUG_ON(desc->fragno > 3);
|
||||
desc->frags[desc->fragno] = *sg;
|
||||
desc->fragno++;
|
||||
desc->fraglen += sg->length;
|
||||
|
||||
fraglen = thislen & 7; /* XXX hardcoded blocksize */
|
||||
thislen -= fraglen;
|
||||
|
||||
if (thislen == 0)
|
||||
return 0;
|
||||
|
||||
ret = crypto_cipher_decrypt_iv(desc->tfm, desc->frags, desc->frags,
|
||||
thislen, desc->iv);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (fraglen) {
|
||||
desc->frags[0].page = sg->page;
|
||||
desc->frags[0].offset = sg->offset + sg->length - fraglen;
|
||||
desc->frags[0].length = fraglen;
|
||||
desc->fragno = 1;
|
||||
desc->fraglen = fraglen;
|
||||
} else {
|
||||
desc->fragno = 0;
|
||||
desc->fraglen = 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
gss_decrypt_xdr_buf(struct crypto_tfm *tfm, struct xdr_buf *buf, int offset)
|
||||
{
|
||||
struct decryptor_desc desc;
|
||||
|
||||
/* XXXJBF: */
|
||||
BUG_ON((buf->len - offset) % crypto_tfm_alg_blocksize(tfm) != 0);
|
||||
|
||||
memset(desc.iv, 0, sizeof(desc.iv));
|
||||
desc.tfm = tfm;
|
||||
desc.fragno = 0;
|
||||
desc.fraglen = 0;
|
||||
return process_xdr_buf(buf, offset, buf->len - offset, decryptor, &desc);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(gss_decrypt_xdr_buf);
|
||||
|
@ -190,43 +190,12 @@ gss_delete_sec_context_kerberos(void *internal_ctx) {
|
||||
kfree(kctx);
|
||||
}
|
||||
|
||||
static u32
|
||||
gss_verify_mic_kerberos(struct gss_ctx *ctx,
|
||||
struct xdr_buf *message,
|
||||
struct xdr_netobj *mic_token,
|
||||
u32 *qstate) {
|
||||
u32 maj_stat = 0;
|
||||
int qop_state;
|
||||
struct krb5_ctx *kctx = ctx->internal_ctx_id;
|
||||
|
||||
maj_stat = krb5_read_token(kctx, mic_token, message, &qop_state,
|
||||
KG_TOK_MIC_MSG);
|
||||
if (!maj_stat && qop_state)
|
||||
*qstate = qop_state;
|
||||
|
||||
dprintk("RPC: gss_verify_mic_kerberos returning %d\n", maj_stat);
|
||||
return maj_stat;
|
||||
}
|
||||
|
||||
static u32
|
||||
gss_get_mic_kerberos(struct gss_ctx *ctx,
|
||||
u32 qop,
|
||||
struct xdr_buf *message,
|
||||
struct xdr_netobj *mic_token) {
|
||||
u32 err = 0;
|
||||
struct krb5_ctx *kctx = ctx->internal_ctx_id;
|
||||
|
||||
err = krb5_make_token(kctx, qop, message, mic_token, KG_TOK_MIC_MSG);
|
||||
|
||||
dprintk("RPC: gss_get_mic_kerberos returning %d\n",err);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static struct gss_api_ops gss_kerberos_ops = {
|
||||
.gss_import_sec_context = gss_import_sec_context_kerberos,
|
||||
.gss_get_mic = gss_get_mic_kerberos,
|
||||
.gss_verify_mic = gss_verify_mic_kerberos,
|
||||
.gss_wrap = gss_wrap_kerberos,
|
||||
.gss_unwrap = gss_unwrap_kerberos,
|
||||
.gss_delete_sec_context = gss_delete_sec_context_kerberos,
|
||||
};
|
||||
|
||||
@ -241,6 +210,11 @@ static struct pf_desc gss_kerberos_pfs[] = {
|
||||
.service = RPC_GSS_SVC_INTEGRITY,
|
||||
.name = "krb5i",
|
||||
},
|
||||
[2] = {
|
||||
.pseudoflavor = RPC_AUTH_GSS_KRB5P,
|
||||
.service = RPC_GSS_SVC_PRIVACY,
|
||||
.name = "krb5p",
|
||||
},
|
||||
};
|
||||
|
||||
static struct gss_api_mech gss_kerberos_mech = {
|
||||
|
@ -70,22 +70,13 @@
|
||||
# define RPCDBG_FACILITY RPCDBG_AUTH
|
||||
#endif
|
||||
|
||||
static inline int
|
||||
gss_krb5_padding(int blocksize, int length) {
|
||||
/* Most of the code is block-size independent but in practice we
|
||||
* use only 8: */
|
||||
BUG_ON(blocksize != 8);
|
||||
return 8 - (length & 7);
|
||||
}
|
||||
|
||||
u32
|
||||
krb5_make_token(struct krb5_ctx *ctx, int qop_req,
|
||||
struct xdr_buf *text, struct xdr_netobj *token,
|
||||
int toktype)
|
||||
gss_get_mic_kerberos(struct gss_ctx *gss_ctx, struct xdr_buf *text,
|
||||
struct xdr_netobj *token)
|
||||
{
|
||||
struct krb5_ctx *ctx = gss_ctx->internal_ctx_id;
|
||||
s32 checksum_type;
|
||||
struct xdr_netobj md5cksum = {.len = 0, .data = NULL};
|
||||
int blocksize = 0, tmsglen;
|
||||
unsigned char *ptr, *krb5_hdr, *msg_start;
|
||||
s32 now;
|
||||
|
||||
@ -93,9 +84,6 @@ krb5_make_token(struct krb5_ctx *ctx, int qop_req,
|
||||
|
||||
now = get_seconds();
|
||||
|
||||
if (qop_req != 0)
|
||||
goto out_err;
|
||||
|
||||
switch (ctx->signalg) {
|
||||
case SGN_ALG_DES_MAC_MD5:
|
||||
checksum_type = CKSUMTYPE_RSA_MD5;
|
||||
@ -111,21 +99,13 @@ krb5_make_token(struct krb5_ctx *ctx, int qop_req,
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
if (toktype == KG_TOK_WRAP_MSG) {
|
||||
blocksize = crypto_tfm_alg_blocksize(ctx->enc);
|
||||
tmsglen = blocksize + text->len
|
||||
+ gss_krb5_padding(blocksize, blocksize + text->len);
|
||||
} else {
|
||||
tmsglen = 0;
|
||||
}
|
||||
|
||||
token->len = g_token_size(&ctx->mech_used, 22 + tmsglen);
|
||||
token->len = g_token_size(&ctx->mech_used, 22);
|
||||
|
||||
ptr = token->data;
|
||||
g_make_token_header(&ctx->mech_used, 22 + tmsglen, &ptr);
|
||||
g_make_token_header(&ctx->mech_used, 22, &ptr);
|
||||
|
||||
*ptr++ = (unsigned char) ((toktype>>8)&0xff);
|
||||
*ptr++ = (unsigned char) (toktype&0xff);
|
||||
*ptr++ = (unsigned char) ((KG_TOK_MIC_MSG>>8)&0xff);
|
||||
*ptr++ = (unsigned char) (KG_TOK_MIC_MSG&0xff);
|
||||
|
||||
/* ptr now at byte 2 of header described in rfc 1964, section 1.2.1: */
|
||||
krb5_hdr = ptr - 2;
|
||||
@ -133,17 +113,9 @@ krb5_make_token(struct krb5_ctx *ctx, int qop_req,
|
||||
|
||||
*(u16 *)(krb5_hdr + 2) = htons(ctx->signalg);
|
||||
memset(krb5_hdr + 4, 0xff, 4);
|
||||
if (toktype == KG_TOK_WRAP_MSG)
|
||||
*(u16 *)(krb5_hdr + 4) = htons(ctx->sealalg);
|
||||
|
||||
if (toktype == KG_TOK_WRAP_MSG) {
|
||||
/* XXX removing support for now */
|
||||
goto out_err;
|
||||
} else { /* Sign only. */
|
||||
if (make_checksum(checksum_type, krb5_hdr, 8, text,
|
||||
&md5cksum))
|
||||
if (make_checksum(checksum_type, krb5_hdr, 8, text, 0, &md5cksum))
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
switch (ctx->signalg) {
|
||||
case SGN_ALG_DES_MAC_MD5:
|
||||
|
@ -68,21 +68,14 @@
|
||||
#endif
|
||||
|
||||
|
||||
/* message_buffer is an input if toktype is MIC and an output if it is WRAP:
|
||||
* If toktype is MIC: read_token is a mic token, and message_buffer is the
|
||||
* data that the mic was supposedly taken over.
|
||||
* If toktype is WRAP: read_token is a wrap token, and message_buffer is used
|
||||
* to return the decrypted data.
|
||||
*/
|
||||
/* read_token is a mic token, and message_buffer is the data that the mic was
|
||||
* supposedly taken over. */
|
||||
|
||||
/* XXX will need to change prototype and/or just split into a separate function
|
||||
* when we add privacy (because read_token will be in pages too). */
|
||||
u32
|
||||
krb5_read_token(struct krb5_ctx *ctx,
|
||||
struct xdr_netobj *read_token,
|
||||
struct xdr_buf *message_buffer,
|
||||
int *qop_state, int toktype)
|
||||
gss_verify_mic_kerberos(struct gss_ctx *gss_ctx,
|
||||
struct xdr_buf *message_buffer, struct xdr_netobj *read_token)
|
||||
{
|
||||
struct krb5_ctx *ctx = gss_ctx->internal_ctx_id;
|
||||
int signalg;
|
||||
int sealalg;
|
||||
s32 checksum_type;
|
||||
@ -100,16 +93,12 @@ krb5_read_token(struct krb5_ctx *ctx,
|
||||
read_token->len))
|
||||
goto out;
|
||||
|
||||
if ((*ptr++ != ((toktype>>8)&0xff)) || (*ptr++ != (toktype&0xff)))
|
||||
if ((*ptr++ != ((KG_TOK_MIC_MSG>>8)&0xff)) ||
|
||||
(*ptr++ != ( KG_TOK_MIC_MSG &0xff)) )
|
||||
goto out;
|
||||
|
||||
/* XXX sanity-check bodysize?? */
|
||||
|
||||
if (toktype == KG_TOK_WRAP_MSG) {
|
||||
/* XXX gone */
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* get the sign and seal algorithms */
|
||||
|
||||
signalg = ptr[0] + (ptr[1] << 8);
|
||||
@ -120,14 +109,7 @@ krb5_read_token(struct krb5_ctx *ctx,
|
||||
if ((ptr[4] != 0xff) || (ptr[5] != 0xff))
|
||||
goto out;
|
||||
|
||||
if (((toktype != KG_TOK_WRAP_MSG) && (sealalg != 0xffff)) ||
|
||||
((toktype == KG_TOK_WRAP_MSG) && (sealalg == 0xffff)))
|
||||
goto out;
|
||||
|
||||
/* in the current spec, there is only one valid seal algorithm per
|
||||
key type, so a simple comparison is ok */
|
||||
|
||||
if ((toktype == KG_TOK_WRAP_MSG) && !(sealalg == ctx->sealalg))
|
||||
if (sealalg != 0xffff)
|
||||
goto out;
|
||||
|
||||
/* there are several mappings of seal algorithms to sign algorithms,
|
||||
@ -154,7 +136,7 @@ krb5_read_token(struct krb5_ctx *ctx,
|
||||
switch (signalg) {
|
||||
case SGN_ALG_DES_MAC_MD5:
|
||||
ret = make_checksum(checksum_type, ptr - 2, 8,
|
||||
message_buffer, &md5cksum);
|
||||
message_buffer, 0, &md5cksum);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
@ -175,9 +157,6 @@ krb5_read_token(struct krb5_ctx *ctx,
|
||||
|
||||
/* it got through unscathed. Make sure the context is unexpired */
|
||||
|
||||
if (qop_state)
|
||||
*qop_state = GSS_C_QOP_DEFAULT;
|
||||
|
||||
now = get_seconds();
|
||||
|
||||
ret = GSS_S_CONTEXT_EXPIRED;
|
||||
|
363
net/sunrpc/auth_gss/gss_krb5_wrap.c
Normal file
363
net/sunrpc/auth_gss/gss_krb5_wrap.c
Normal file
@ -0,0 +1,363 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/sunrpc/gss_krb5.h>
|
||||
#include <linux/random.h>
|
||||
#include <linux/pagemap.h>
|
||||
#include <asm/scatterlist.h>
|
||||
#include <linux/crypto.h>
|
||||
|
||||
#ifdef RPC_DEBUG
|
||||
# define RPCDBG_FACILITY RPCDBG_AUTH
|
||||
#endif
|
||||
|
||||
static inline int
|
||||
gss_krb5_padding(int blocksize, int length)
|
||||
{
|
||||
/* Most of the code is block-size independent but currently we
|
||||
* use only 8: */
|
||||
BUG_ON(blocksize != 8);
|
||||
return 8 - (length & 7);
|
||||
}
|
||||
|
||||
static inline void
|
||||
gss_krb5_add_padding(struct xdr_buf *buf, int offset, int blocksize)
|
||||
{
|
||||
int padding = gss_krb5_padding(blocksize, buf->len - offset);
|
||||
char *p;
|
||||
struct kvec *iov;
|
||||
|
||||
if (buf->page_len || buf->tail[0].iov_len)
|
||||
iov = &buf->tail[0];
|
||||
else
|
||||
iov = &buf->head[0];
|
||||
p = iov->iov_base + iov->iov_len;
|
||||
iov->iov_len += padding;
|
||||
buf->len += padding;
|
||||
memset(p, padding, padding);
|
||||
}
|
||||
|
||||
static inline int
|
||||
gss_krb5_remove_padding(struct xdr_buf *buf, int blocksize)
|
||||
{
|
||||
u8 *ptr;
|
||||
u8 pad;
|
||||
int len = buf->len;
|
||||
|
||||
if (len <= buf->head[0].iov_len) {
|
||||
pad = *(u8 *)(buf->head[0].iov_base + len - 1);
|
||||
if (pad > buf->head[0].iov_len)
|
||||
return -EINVAL;
|
||||
buf->head[0].iov_len -= pad;
|
||||
goto out;
|
||||
} else
|
||||
len -= buf->head[0].iov_len;
|
||||
if (len <= buf->page_len) {
|
||||
int last = (buf->page_base + len - 1)
|
||||
>>PAGE_CACHE_SHIFT;
|
||||
int offset = (buf->page_base + len - 1)
|
||||
& (PAGE_CACHE_SIZE - 1);
|
||||
ptr = kmap_atomic(buf->pages[last], KM_SKB_SUNRPC_DATA);
|
||||
pad = *(ptr + offset);
|
||||
kunmap_atomic(ptr, KM_SKB_SUNRPC_DATA);
|
||||
goto out;
|
||||
} else
|
||||
len -= buf->page_len;
|
||||
BUG_ON(len > buf->tail[0].iov_len);
|
||||
pad = *(u8 *)(buf->tail[0].iov_base + len - 1);
|
||||
out:
|
||||
/* XXX: NOTE: we do not adjust the page lengths--they represent
|
||||
* a range of data in the real filesystem page cache, and we need
|
||||
* to know that range so the xdr code can properly place read data.
|
||||
* However adjusting the head length, as we do above, is harmless.
|
||||
* In the case of a request that fits into a single page, the server
|
||||
* also uses length and head length together to determine the original
|
||||
* start of the request to copy the request for deferal; so it's
|
||||
* easier on the server if we adjust head and tail length in tandem.
|
||||
* It's not really a problem that we don't fool with the page and
|
||||
* tail lengths, though--at worst badly formed xdr might lead the
|
||||
* server to attempt to parse the padding.
|
||||
* XXX: Document all these weird requirements for gss mechanism
|
||||
* wrap/unwrap functions. */
|
||||
if (pad > blocksize)
|
||||
return -EINVAL;
|
||||
if (buf->len > pad)
|
||||
buf->len -= pad;
|
||||
else
|
||||
return -EINVAL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void
|
||||
make_confounder(char *p, int blocksize)
|
||||
{
|
||||
static u64 i = 0;
|
||||
u64 *q = (u64 *)p;
|
||||
|
||||
/* rfc1964 claims this should be "random". But all that's really
|
||||
* necessary is that it be unique. And not even that is necessary in
|
||||
* our case since our "gssapi" implementation exists only to support
|
||||
* rpcsec_gss, so we know that the only buffers we will ever encrypt
|
||||
* already begin with a unique sequence number. Just to hedge my bets
|
||||
* I'll make a half-hearted attempt at something unique, but ensuring
|
||||
* uniqueness would mean worrying about atomicity and rollover, and I
|
||||
* don't care enough. */
|
||||
|
||||
BUG_ON(blocksize != 8);
|
||||
*q = i++;
|
||||
}
|
||||
|
||||
/* Assumptions: the head and tail of inbuf are ours to play with.
|
||||
* The pages, however, may be real pages in the page cache and we replace
|
||||
* them with scratch pages from **pages before writing to them. */
|
||||
/* XXX: obviously the above should be documentation of wrap interface,
|
||||
* and shouldn't be in this kerberos-specific file. */
|
||||
|
||||
/* XXX factor out common code with seal/unseal. */
|
||||
|
||||
u32
|
||||
gss_wrap_kerberos(struct gss_ctx *ctx, int offset,
|
||||
struct xdr_buf *buf, struct page **pages)
|
||||
{
|
||||
struct krb5_ctx *kctx = ctx->internal_ctx_id;
|
||||
s32 checksum_type;
|
||||
struct xdr_netobj md5cksum = {.len = 0, .data = NULL};
|
||||
int blocksize = 0, plainlen;
|
||||
unsigned char *ptr, *krb5_hdr, *msg_start;
|
||||
s32 now;
|
||||
int headlen;
|
||||
struct page **tmp_pages;
|
||||
|
||||
dprintk("RPC: gss_wrap_kerberos\n");
|
||||
|
||||
now = get_seconds();
|
||||
|
||||
switch (kctx->signalg) {
|
||||
case SGN_ALG_DES_MAC_MD5:
|
||||
checksum_type = CKSUMTYPE_RSA_MD5;
|
||||
break;
|
||||
default:
|
||||
dprintk("RPC: gss_krb5_seal: kctx->signalg %d not"
|
||||
" supported\n", kctx->signalg);
|
||||
goto out_err;
|
||||
}
|
||||
if (kctx->sealalg != SEAL_ALG_NONE && kctx->sealalg != SEAL_ALG_DES) {
|
||||
dprintk("RPC: gss_krb5_seal: kctx->sealalg %d not supported\n",
|
||||
kctx->sealalg);
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
blocksize = crypto_tfm_alg_blocksize(kctx->enc);
|
||||
gss_krb5_add_padding(buf, offset, blocksize);
|
||||
BUG_ON((buf->len - offset) % blocksize);
|
||||
plainlen = blocksize + buf->len - offset;
|
||||
|
||||
headlen = g_token_size(&kctx->mech_used, 22 + plainlen) -
|
||||
(buf->len - offset);
|
||||
|
||||
ptr = buf->head[0].iov_base + offset;
|
||||
/* shift data to make room for header. */
|
||||
/* XXX Would be cleverer to encrypt while copying. */
|
||||
/* XXX bounds checking, slack, etc. */
|
||||
memmove(ptr + headlen, ptr, buf->head[0].iov_len - offset);
|
||||
buf->head[0].iov_len += headlen;
|
||||
buf->len += headlen;
|
||||
BUG_ON((buf->len - offset - headlen) % blocksize);
|
||||
|
||||
g_make_token_header(&kctx->mech_used, 22 + plainlen, &ptr);
|
||||
|
||||
|
||||
*ptr++ = (unsigned char) ((KG_TOK_WRAP_MSG>>8)&0xff);
|
||||
*ptr++ = (unsigned char) (KG_TOK_WRAP_MSG&0xff);
|
||||
|
||||
/* ptr now at byte 2 of header described in rfc 1964, section 1.2.1: */
|
||||
krb5_hdr = ptr - 2;
|
||||
msg_start = krb5_hdr + 24;
|
||||
/* XXXJBF: */ BUG_ON(buf->head[0].iov_base + offset + headlen != msg_start + blocksize);
|
||||
|
||||
*(u16 *)(krb5_hdr + 2) = htons(kctx->signalg);
|
||||
memset(krb5_hdr + 4, 0xff, 4);
|
||||
*(u16 *)(krb5_hdr + 4) = htons(kctx->sealalg);
|
||||
|
||||
make_confounder(msg_start, blocksize);
|
||||
|
||||
/* XXXJBF: UGH!: */
|
||||
tmp_pages = buf->pages;
|
||||
buf->pages = pages;
|
||||
if (make_checksum(checksum_type, krb5_hdr, 8, buf,
|
||||
offset + headlen - blocksize, &md5cksum))
|
||||
goto out_err;
|
||||
buf->pages = tmp_pages;
|
||||
|
||||
switch (kctx->signalg) {
|
||||
case SGN_ALG_DES_MAC_MD5:
|
||||
if (krb5_encrypt(kctx->seq, NULL, md5cksum.data,
|
||||
md5cksum.data, md5cksum.len))
|
||||
goto out_err;
|
||||
memcpy(krb5_hdr + 16,
|
||||
md5cksum.data + md5cksum.len - KRB5_CKSUM_LENGTH,
|
||||
KRB5_CKSUM_LENGTH);
|
||||
|
||||
dprintk("RPC: make_seal_token: cksum data: \n");
|
||||
print_hexl((u32 *) (krb5_hdr + 16), KRB5_CKSUM_LENGTH, 0);
|
||||
break;
|
||||
default:
|
||||
BUG();
|
||||
}
|
||||
|
||||
kfree(md5cksum.data);
|
||||
|
||||
/* XXX would probably be more efficient to compute checksum
|
||||
* and encrypt at the same time: */
|
||||
if ((krb5_make_seq_num(kctx->seq, kctx->initiate ? 0 : 0xff,
|
||||
kctx->seq_send, krb5_hdr + 16, krb5_hdr + 8)))
|
||||
goto out_err;
|
||||
|
||||
if (gss_encrypt_xdr_buf(kctx->enc, buf, offset + headlen - blocksize,
|
||||
pages))
|
||||
goto out_err;
|
||||
|
||||
kctx->seq_send++;
|
||||
|
||||
return ((kctx->endtime < now) ? GSS_S_CONTEXT_EXPIRED : GSS_S_COMPLETE);
|
||||
out_err:
|
||||
if (md5cksum.data) kfree(md5cksum.data);
|
||||
return GSS_S_FAILURE;
|
||||
}
|
||||
|
||||
u32
|
||||
gss_unwrap_kerberos(struct gss_ctx *ctx, int offset, struct xdr_buf *buf)
|
||||
{
|
||||
struct krb5_ctx *kctx = ctx->internal_ctx_id;
|
||||
int signalg;
|
||||
int sealalg;
|
||||
s32 checksum_type;
|
||||
struct xdr_netobj md5cksum = {.len = 0, .data = NULL};
|
||||
s32 now;
|
||||
int direction;
|
||||
s32 seqnum;
|
||||
unsigned char *ptr;
|
||||
int bodysize;
|
||||
u32 ret = GSS_S_DEFECTIVE_TOKEN;
|
||||
void *data_start, *orig_start;
|
||||
int data_len;
|
||||
int blocksize;
|
||||
|
||||
dprintk("RPC: gss_unwrap_kerberos\n");
|
||||
|
||||
ptr = (u8 *)buf->head[0].iov_base + offset;
|
||||
if (g_verify_token_header(&kctx->mech_used, &bodysize, &ptr,
|
||||
buf->len - offset))
|
||||
goto out;
|
||||
|
||||
if ((*ptr++ != ((KG_TOK_WRAP_MSG>>8)&0xff)) ||
|
||||
(*ptr++ != (KG_TOK_WRAP_MSG &0xff)) )
|
||||
goto out;
|
||||
|
||||
/* XXX sanity-check bodysize?? */
|
||||
|
||||
/* get the sign and seal algorithms */
|
||||
|
||||
signalg = ptr[0] + (ptr[1] << 8);
|
||||
sealalg = ptr[2] + (ptr[3] << 8);
|
||||
|
||||
/* Sanity checks */
|
||||
|
||||
if ((ptr[4] != 0xff) || (ptr[5] != 0xff))
|
||||
goto out;
|
||||
|
||||
if (sealalg == 0xffff)
|
||||
goto out;
|
||||
|
||||
/* in the current spec, there is only one valid seal algorithm per
|
||||
key type, so a simple comparison is ok */
|
||||
|
||||
if (sealalg != kctx->sealalg)
|
||||
goto out;
|
||||
|
||||
/* there are several mappings of seal algorithms to sign algorithms,
|
||||
but few enough that we can try them all. */
|
||||
|
||||
if ((kctx->sealalg == SEAL_ALG_NONE && signalg > 1) ||
|
||||
(kctx->sealalg == SEAL_ALG_1 && signalg != SGN_ALG_3) ||
|
||||
(kctx->sealalg == SEAL_ALG_DES3KD &&
|
||||
signalg != SGN_ALG_HMAC_SHA1_DES3_KD))
|
||||
goto out;
|
||||
|
||||
if (gss_decrypt_xdr_buf(kctx->enc, buf,
|
||||
ptr + 22 - (unsigned char *)buf->head[0].iov_base))
|
||||
goto out;
|
||||
|
||||
/* compute the checksum of the message */
|
||||
|
||||
/* initialize the the cksum */
|
||||
switch (signalg) {
|
||||
case SGN_ALG_DES_MAC_MD5:
|
||||
checksum_type = CKSUMTYPE_RSA_MD5;
|
||||
break;
|
||||
default:
|
||||
ret = GSS_S_DEFECTIVE_TOKEN;
|
||||
goto out;
|
||||
}
|
||||
|
||||
switch (signalg) {
|
||||
case SGN_ALG_DES_MAC_MD5:
|
||||
ret = make_checksum(checksum_type, ptr - 2, 8, buf,
|
||||
ptr + 22 - (unsigned char *)buf->head[0].iov_base, &md5cksum);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = krb5_encrypt(kctx->seq, NULL, md5cksum.data,
|
||||
md5cksum.data, md5cksum.len);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
if (memcmp(md5cksum.data + 8, ptr + 14, 8)) {
|
||||
ret = GSS_S_BAD_SIG;
|
||||
goto out;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ret = GSS_S_DEFECTIVE_TOKEN;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* it got through unscathed. Make sure the context is unexpired */
|
||||
|
||||
now = get_seconds();
|
||||
|
||||
ret = GSS_S_CONTEXT_EXPIRED;
|
||||
if (now > kctx->endtime)
|
||||
goto out;
|
||||
|
||||
/* do sequencing checks */
|
||||
|
||||
ret = GSS_S_BAD_SIG;
|
||||
if ((ret = krb5_get_seq_num(kctx->seq, ptr + 14, ptr + 6, &direction,
|
||||
&seqnum)))
|
||||
goto out;
|
||||
|
||||
if ((kctx->initiate && direction != 0xff) ||
|
||||
(!kctx->initiate && direction != 0))
|
||||
goto out;
|
||||
|
||||
/* Copy the data back to the right position. XXX: Would probably be
|
||||
* better to copy and encrypt at the same time. */
|
||||
|
||||
blocksize = crypto_tfm_alg_blocksize(kctx->enc);
|
||||
data_start = ptr + 22 + blocksize;
|
||||
orig_start = buf->head[0].iov_base + offset;
|
||||
data_len = (buf->head[0].iov_base + buf->head[0].iov_len) - data_start;
|
||||
memmove(orig_start, data_start, data_len);
|
||||
buf->head[0].iov_len -= (data_start - orig_start);
|
||||
buf->len -= (data_start - orig_start);
|
||||
|
||||
ret = GSS_S_DEFECTIVE_TOKEN;
|
||||
if (gss_krb5_remove_padding(buf, blocksize))
|
||||
goto out;
|
||||
|
||||
ret = GSS_S_COMPLETE;
|
||||
out:
|
||||
if (md5cksum.data) kfree(md5cksum.data);
|
||||
return ret;
|
||||
}
|
@ -250,13 +250,11 @@ gss_import_sec_context(const void *input_token, size_t bufsize,
|
||||
|
||||
u32
|
||||
gss_get_mic(struct gss_ctx *context_handle,
|
||||
u32 qop,
|
||||
struct xdr_buf *message,
|
||||
struct xdr_netobj *mic_token)
|
||||
{
|
||||
return context_handle->mech_type->gm_ops
|
||||
->gss_get_mic(context_handle,
|
||||
qop,
|
||||
message,
|
||||
mic_token);
|
||||
}
|
||||
@ -266,16 +264,34 @@ gss_get_mic(struct gss_ctx *context_handle,
|
||||
u32
|
||||
gss_verify_mic(struct gss_ctx *context_handle,
|
||||
struct xdr_buf *message,
|
||||
struct xdr_netobj *mic_token,
|
||||
u32 *qstate)
|
||||
struct xdr_netobj *mic_token)
|
||||
{
|
||||
return context_handle->mech_type->gm_ops
|
||||
->gss_verify_mic(context_handle,
|
||||
message,
|
||||
mic_token,
|
||||
qstate);
|
||||
mic_token);
|
||||
}
|
||||
|
||||
u32
|
||||
gss_wrap(struct gss_ctx *ctx_id,
|
||||
int offset,
|
||||
struct xdr_buf *buf,
|
||||
struct page **inpages)
|
||||
{
|
||||
return ctx_id->mech_type->gm_ops
|
||||
->gss_wrap(ctx_id, offset, buf, inpages);
|
||||
}
|
||||
|
||||
u32
|
||||
gss_unwrap(struct gss_ctx *ctx_id,
|
||||
int offset,
|
||||
struct xdr_buf *buf)
|
||||
{
|
||||
return ctx_id->mech_type->gm_ops
|
||||
->gss_unwrap(ctx_id, offset, buf);
|
||||
}
|
||||
|
||||
|
||||
/* gss_delete_sec_context: free all resources associated with context_handle.
|
||||
* Note this differs from the RFC 2744-specified prototype in that we don't
|
||||
* bother returning an output token, since it would never be used anyway. */
|
||||
|
@ -224,18 +224,13 @@ gss_delete_sec_context_spkm3(void *internal_ctx) {
|
||||
static u32
|
||||
gss_verify_mic_spkm3(struct gss_ctx *ctx,
|
||||
struct xdr_buf *signbuf,
|
||||
struct xdr_netobj *checksum,
|
||||
u32 *qstate) {
|
||||
struct xdr_netobj *checksum)
|
||||
{
|
||||
u32 maj_stat = 0;
|
||||
int qop_state = 0;
|
||||
struct spkm3_ctx *sctx = ctx->internal_ctx_id;
|
||||
|
||||
dprintk("RPC: gss_verify_mic_spkm3 calling spkm3_read_token\n");
|
||||
maj_stat = spkm3_read_token(sctx, checksum, signbuf, &qop_state,
|
||||
SPKM_MIC_TOK);
|
||||
|
||||
if (!maj_stat && qop_state)
|
||||
*qstate = qop_state;
|
||||
maj_stat = spkm3_read_token(sctx, checksum, signbuf, SPKM_MIC_TOK);
|
||||
|
||||
dprintk("RPC: gss_verify_mic_spkm3 returning %d\n", maj_stat);
|
||||
return maj_stat;
|
||||
@ -243,15 +238,15 @@ gss_verify_mic_spkm3(struct gss_ctx *ctx,
|
||||
|
||||
static u32
|
||||
gss_get_mic_spkm3(struct gss_ctx *ctx,
|
||||
u32 qop,
|
||||
struct xdr_buf *message_buffer,
|
||||
struct xdr_netobj *message_token) {
|
||||
struct xdr_netobj *message_token)
|
||||
{
|
||||
u32 err = 0;
|
||||
struct spkm3_ctx *sctx = ctx->internal_ctx_id;
|
||||
|
||||
dprintk("RPC: gss_get_mic_spkm3\n");
|
||||
|
||||
err = spkm3_make_token(sctx, qop, message_buffer,
|
||||
err = spkm3_make_token(sctx, message_buffer,
|
||||
message_token, SPKM_MIC_TOK);
|
||||
return err;
|
||||
}
|
||||
@ -264,8 +259,8 @@ static struct gss_api_ops gss_spkm3_ops = {
|
||||
};
|
||||
|
||||
static struct pf_desc gss_spkm3_pfs[] = {
|
||||
{RPC_AUTH_GSS_SPKM, 0, RPC_GSS_SVC_NONE, "spkm3"},
|
||||
{RPC_AUTH_GSS_SPKMI, 0, RPC_GSS_SVC_INTEGRITY, "spkm3i"},
|
||||
{RPC_AUTH_GSS_SPKM, RPC_GSS_SVC_NONE, "spkm3"},
|
||||
{RPC_AUTH_GSS_SPKMI, RPC_GSS_SVC_INTEGRITY, "spkm3i"},
|
||||
};
|
||||
|
||||
static struct gss_api_mech gss_spkm3_mech = {
|
||||
|
@ -51,7 +51,7 @@
|
||||
*/
|
||||
|
||||
u32
|
||||
spkm3_make_token(struct spkm3_ctx *ctx, int qop_req,
|
||||
spkm3_make_token(struct spkm3_ctx *ctx,
|
||||
struct xdr_buf * text, struct xdr_netobj * token,
|
||||
int toktype)
|
||||
{
|
||||
@ -68,8 +68,6 @@ spkm3_make_token(struct spkm3_ctx *ctx, int qop_req,
|
||||
dprintk("RPC: spkm3_make_token\n");
|
||||
|
||||
now = jiffies;
|
||||
if (qop_req != 0)
|
||||
goto out_err;
|
||||
|
||||
if (ctx->ctx_id.len != 16) {
|
||||
dprintk("RPC: spkm3_make_token BAD ctx_id.len %d\n",
|
||||
|
@ -52,7 +52,7 @@ u32
|
||||
spkm3_read_token(struct spkm3_ctx *ctx,
|
||||
struct xdr_netobj *read_token, /* checksum */
|
||||
struct xdr_buf *message_buffer, /* signbuf */
|
||||
int *qop_state, int toktype)
|
||||
int toktype)
|
||||
{
|
||||
s32 code;
|
||||
struct xdr_netobj wire_cksum = {.len =0, .data = NULL};
|
||||
|
@ -566,8 +566,7 @@ gss_verify_header(struct svc_rqst *rqstp, struct rsc *rsci,
|
||||
|
||||
if (rqstp->rq_deferred) /* skip verification of revisited request */
|
||||
return SVC_OK;
|
||||
if (gss_verify_mic(ctx_id, &rpchdr, &checksum, NULL)
|
||||
!= GSS_S_COMPLETE) {
|
||||
if (gss_verify_mic(ctx_id, &rpchdr, &checksum) != GSS_S_COMPLETE) {
|
||||
*authp = rpcsec_gsserr_credproblem;
|
||||
return SVC_DENIED;
|
||||
}
|
||||
@ -604,7 +603,7 @@ gss_write_verf(struct svc_rqst *rqstp, struct gss_ctx *ctx_id, u32 seq)
|
||||
xdr_buf_from_iov(&iov, &verf_data);
|
||||
p = rqstp->rq_res.head->iov_base + rqstp->rq_res.head->iov_len;
|
||||
mic.data = (u8 *)(p + 1);
|
||||
maj_stat = gss_get_mic(ctx_id, 0, &verf_data, &mic);
|
||||
maj_stat = gss_get_mic(ctx_id, &verf_data, &mic);
|
||||
if (maj_stat != GSS_S_COMPLETE)
|
||||
return -1;
|
||||
*p++ = htonl(mic.len);
|
||||
@ -710,7 +709,7 @@ unwrap_integ_data(struct xdr_buf *buf, u32 seq, struct gss_ctx *ctx)
|
||||
goto out;
|
||||
if (read_bytes_from_xdr_buf(buf, integ_len + 4, mic.data, mic.len))
|
||||
goto out;
|
||||
maj_stat = gss_verify_mic(ctx, &integ_buf, &mic, NULL);
|
||||
maj_stat = gss_verify_mic(ctx, &integ_buf, &mic);
|
||||
if (maj_stat != GSS_S_COMPLETE)
|
||||
goto out;
|
||||
if (ntohl(svc_getu32(&buf->head[0])) != seq)
|
||||
@ -1012,7 +1011,7 @@ svcauth_gss_release(struct svc_rqst *rqstp)
|
||||
resv = &resbuf->tail[0];
|
||||
}
|
||||
mic.data = (u8 *)resv->iov_base + resv->iov_len + 4;
|
||||
if (gss_get_mic(gsd->rsci->mechctx, 0, &integ_buf, &mic))
|
||||
if (gss_get_mic(gsd->rsci->mechctx, &integ_buf, &mic))
|
||||
goto out_err;
|
||||
svc_putu32(resv, htonl(mic.len));
|
||||
memset(mic.data + mic.len, 0,
|
||||
|
@ -710,9 +710,16 @@ call_encode(struct rpc_task *task)
|
||||
rpc_exit(task, -EIO);
|
||||
return;
|
||||
}
|
||||
if (encode != NULL)
|
||||
task->tk_status = rpcauth_wrap_req(task, encode, req, p,
|
||||
task->tk_msg.rpc_argp);
|
||||
if (encode == NULL)
|
||||
return;
|
||||
|
||||
task->tk_status = rpcauth_wrap_req(task, encode, req, p,
|
||||
task->tk_msg.rpc_argp);
|
||||
if (task->tk_status == -ENOMEM) {
|
||||
/* XXX: Is this sane? */
|
||||
rpc_delay(task, 3*HZ);
|
||||
task->tk_status = -EAGAIN;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -177,6 +177,8 @@ rpc_pipe_release(struct inode *inode, struct file *filp)
|
||||
__rpc_purge_upcall(inode, -EPIPE);
|
||||
if (rpci->ops->release_pipe)
|
||||
rpci->ops->release_pipe(inode);
|
||||
if (!rpci->nreaders && !rpci->nwriters)
|
||||
rpci->ops = NULL;
|
||||
out:
|
||||
up(&inode->i_sem);
|
||||
return 0;
|
||||
|
@ -839,6 +839,7 @@ static void xprt_request_init(struct rpc_task *task, struct rpc_xprt *xprt)
|
||||
req->rq_task = task;
|
||||
req->rq_xprt = xprt;
|
||||
req->rq_xid = xprt_alloc_xid(xprt);
|
||||
req->rq_release_snd_buf = NULL;
|
||||
dprintk("RPC: %4d reserved req %p xid %08x\n", task->tk_pid,
|
||||
req, ntohl(req->rq_xid));
|
||||
}
|
||||
@ -867,6 +868,8 @@ void xprt_release(struct rpc_task *task)
|
||||
xprt->last_used + xprt->idle_timeout);
|
||||
spin_unlock_bh(&xprt->transport_lock);
|
||||
task->tk_rqstp = NULL;
|
||||
if (req->rq_release_snd_buf)
|
||||
req->rq_release_snd_buf(req);
|
||||
memset(req, 0, sizeof(*req)); /* mark unused */
|
||||
|
||||
dprintk("RPC: %4d release request %p\n", task->tk_pid, req);
|
||||
|
4
scripts/.gitignore
vendored
Normal file
4
scripts/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
conmakehash
|
||||
kallsyms
|
||||
pnmtologo
|
||||
|
3
scripts/basic/.gitignore
vendored
Normal file
3
scripts/basic/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
fixdep
|
||||
split-include
|
||||
docproc
|
16
scripts/kconfig/.gitignore
vendored
Normal file
16
scripts/kconfig/.gitignore
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
#
|
||||
# Generated files
|
||||
#
|
||||
config*
|
||||
lex.*.c
|
||||
*.tab.c
|
||||
*.tab.h
|
||||
|
||||
#
|
||||
# configuration programs
|
||||
#
|
||||
conf
|
||||
mconf
|
||||
qconf
|
||||
gconf
|
||||
kxgettext
|
4
scripts/mod/.gitignore
vendored
Normal file
4
scripts/mod/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
elfconfig.h
|
||||
mk_elfconfig
|
||||
modpost
|
||||
|
7
usr/.gitignore
vendored
Normal file
7
usr/.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
#
|
||||
# Generated files
|
||||
#
|
||||
gen_init_cpio
|
||||
initramfs_data.cpio
|
||||
initramfs_data.cpio.gz
|
||||
initramfs_list
|
Loading…
Reference in New Issue
Block a user