2007-08-24 22:47:26

by Mathieu Desnoyers

[permalink] [raw]
Subject: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

Hi Andrew,

I get the following BUG when booting 2.6.23-rc3-mm1 on i386. I wonder if
you would have some ideas about what is causing this problem. I'll start
bissecting it soon. I seems to be caused by an buggy skb_put call in
kobject_uevent_env.

Thanks,

Mathieu


Synthesizing the initial hotplug events...[ 13.738308] skb_over_panic: text:c0252ede len:97 put:11 head:c2237e00 data:c2237e00 tail:0xc2237e61 end:0xc2237e60 dev:<NULL>
[ 13.772252] ------------[ cut here ]------------
[ 13.786057] Kernel BUG at c039e27c [verbose debug info unavailable]
[ 13.804788] invalid opcode: 0000 [#1] PREEMPT SMP
[ 13.819195] Modules linked in:
[ 13.828350]
[ 13.832805] Pid: 1038, comm: udevtrigger Not tainted (2.6.23-rc3-mm1-testssmp #281)
[ 13.855695] EIP: 0060:[<c039e27c>] EFLAGS: 00010286 CPU: 0
[ 13.872090] EIP is at skb_over_panic+0x5c/0x60
[ 13.885368] EAX: 00000084 EBX: c2237e00 ECX: 10000000 EDX: 00000000
[ 13.904093] ESI: 00000000 EDI: c2237e56 EBP: c2243eb4 ESP: c2243e88
[ 13.922820] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[ 13.938951] Process udevtrigger (pid: 1038, ti=c2242000 task=c22a94f0 task.ti=c2242000)
[ 13.962348] Stack: c05010ac c0252ede 00000061 0000000b c2237e00 c2237e00 c2237e61 c2237e60
[ 13.987584] c04d2181 c2bc1e80 00000005 c2243efc c0252ee3 c2237e00 c04d2124 c04ce0b8
[ 14.012823] c2b9ed20 00000000 c04ce0b8 c2b9ed20 c04e2e6b c05401a0 c2ac9000 c2243f04
[ 14.038065] Call Trace:
[ 14.045931] [<c010971a>] show_trace_log_lvl+0x1a/0x30
[ 14.061321] [<c01097d8>] show_stack_log_lvl+0xa8/0xe0
[ 14.076707] [<c01098da>] show_registers+0xca/0x250
[ 14.091312] [<c0109b70>] die+0x110/0x280
[ 14.103323] [<c04187c1>] do_trap+0x91/0xc0
[ 14.115857] [<c0109fc9>] do_invalid_op+0x89/0xa0
[ 14.129944] [<c041857a>] error_code+0x72/0x78
[ 14.143252] [<c0252ee3>] kobject_uevent_env+0x353/0x380
[ 14.159155] [<c0252f1a>] kobject_uevent+0xa/0x10
[ 14.173244] [<c02c524b>] store_uevent+0x2b/0x70
[ 14.187076] [<c02c4f6f>] dev_attr_store+0x2f/0x40
[ 14.201425] [<c01cd0e0>] sysfs_write_file+0xa0/0x100
[ 14.216553] [<c018cbf9>] vfs_write+0x99/0x130
[ 14.229862] [<c018d2dd>] sys_write+0x3d/0x70
[ 14.242911] [<c0108596>] syscall_call+0x7/0xb
[ 14.256223] =======================
[ 14.266906] INFO: lockdep is turned off.
[ 14.278624] Code: 00 00 89 5c 24 14 8b 98 8c 00 00 00 89 54 24 0c 89 5c 24 10 8b 40 50 89 4c 24 04 c7 04 24 ac 10 50 c0 89 44 24 08 e8 64 1f d9 ff <0f> 0b eb fe 55 89 e5 56 89 d6 53 89 c3 83 ec
[ 14.336986] EIP: [<c039e27c>] skb_over_panic+0x5c/0x60 SS:ESP 0068:c2243e88

here is my config:

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.23-rc3-mm1
# Fri Aug 24 18:30:46 2007
#
CONFIG_X86_32=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_QUICKLIST=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION="-testssmp"
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SWAP_PREFETCH=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_USER_NS is not set
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=17
# CONFIG_CONTAINERS is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_RELAY=y
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not set
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_PROC_KPAGEMAP=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_LBD=y
CONFIG_BLK_DEV_IO_TRACE=y
CONFIG_LSF=y
# CONFIG_BLK_DEV_BSG is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_AS=y
# CONFIG_DEFAULT_DEADLINE is not set
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="anticipatory"

#
# Processor type and features
#
# CONFIG_TICK_ONESHOT is not set
# CONFIG_NO_HZ is not set
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_SMP=y
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
CONFIG_PARAVIRT=y
CONFIG_XEN=y
CONFIG_VMI=y
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
CONFIG_MPENTIUMIII=y
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MCORE2 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_MVIAC7 is not set
# CONFIG_X86_GENERIC is not set
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=5
CONFIG_X86_XADD=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_TSC=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=4
# CONFIG_HPET_TIMER is not set
CONFIG_NR_CPUS=8
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_NONFATAL=y
# CONFIG_X86_MCE_P4THERMAL is not set
CONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_X86_REBOOTFIXUPS is not set
# CONFIG_MICROCODE is not set
# CONFIG_X86_MSR is not set
# CONFIG_X86_CPUID is not set

#
# Firmware Drivers
#
# CONFIG_EDD is not set
# CONFIG_DELL_RBU is not set
CONFIG_DCDBAS=m
CONFIG_DMIID=y
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_VMSPLIT_3G=y
# CONFIG_VMSPLIT_3G_OPT is not set
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_2G_OPT is not set
# CONFIG_VMSPLIT_1G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_SPARSEMEM_STATIC=y
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_NR_QUICK=1
CONFIG_VIRT_TO_BUS=y
# CONFIG_HIGHPTE is not set
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
# CONFIG_EFI is not set
CONFIG_IRQBALANCE=y
CONFIG_SECCOMP=y
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
CONFIG_KEXEC=y
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x100000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x100000
CONFIG_HOTPLUG_CPU=y
CONFIG_COMPAT_VDSO=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y

#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SLEEP_SMP=y
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND_SMP_POSSIBLE=y
CONFIG_SUSPEND=y
CONFIG_HIBERNATION_SMP_POSSIBLE=y
# CONFIG_HIBERNATION is not set
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_PROCFS=y
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=y
# CONFIG_ACPI_DOCK is not set
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=y
# CONFIG_ACPI_SBS is not set
# CONFIG_APM is not set

#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set

#
# CPU idle PM support
#
# CONFIG_CPU_IDLE is not set

#
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
# CONFIG_PCIEPORTBUS is not set
CONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not set
# CONFIG_PCI_DEBUG is not set
CONFIG_HT_IRQ=y
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
# CONFIG_PCCARD is not set
# CONFIG_HOTPLUG_PCI is not set

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_MISC=y

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
CONFIG_INET_XFRM_MODE_TRANSPORT=y
CONFIG_INET_XFRM_MODE_TUNNEL=y
CONFIG_INET_XFRM_MODE_BEET=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IP_VS is not set
# CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_NETWORK_SECMARK is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set

#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
# CONFIG_NF_CONNTRACK_ENABLED is not set
# CONFIG_NF_CONNTRACK is not set
# CONFIG_NETFILTER_XTABLES is not set

#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_QUEUE=y
# CONFIG_IP_NF_IPTABLES is not set
# CONFIG_IP_NF_ARPTABLES is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set

#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NET_TCPPROBE is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set

#
# Wireless
#
# CONFIG_CFG80211 is not set
# CONFIG_WIRELESS_EXT is not set
# CONFIG_MAC80211 is not set
CONFIG_IEEE80211=m
CONFIG_IEEE80211_DEBUG=y
CONFIG_IEEE80211_CRYPT_WEP=m
CONFIG_IEEE80211_CRYPT_CCMP=m
# CONFIG_IEEE80211_CRYPT_TKIP is not set
# CONFIG_IEEE80211_SOFTMAC is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=m
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
# CONFIG_MTD is not set
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
# CONFIG_PARPORT_SERIAL is not set
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_GSC is not set
# CONFIG_PARPORT_AX88796 is not set
# CONFIG_PARPORT_1284 is not set
CONFIG_PNP=y
# CONFIG_PNP_DEBUG is not set

#
# Protocols
#
# CONFIG_ISAPNP is not set
# CONFIG_PNPBIOS is not set
CONFIG_PNPACPI=y
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_FD=y
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_XEN_BLKDEV_FRONTEND is not set
CONFIG_MISC_DEVICES=y
# CONFIG_IBM_ASM is not set
# CONFIG_PHANTOM is not set
# CONFIG_EEPROM_93CX6 is not set
# CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set
# CONFIG_SONY_LAPTOP is not set
# CONFIG_THINKPAD_ACPI is not set
CONFIG_IDE=y
CONFIG_IDE_MAX_HWIFS=4
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_BLK_DEV_IDEACPI is not set
# CONFIG_IDE_TASK_IOCTL is not set
CONFIG_IDE_PROC_FS=y

#
# IDE chipset support/bugfixes
#
CONFIG_IDE_GENERIC=y
# CONFIG_BLK_DEV_PLATFORM is not set
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_IDEPNP is not set

#
# PCI IDE chipsets support
#
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
CONFIG_IDEPCI_PCIBUS_ORDER=y
# CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_BLK_DEV_GENERIC=y
# CONFIG_BLK_DEV_OPTI621 is not set
CONFIG_BLK_DEV_RZ1000=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_ATIIXP is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_CS5535 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_JMICRON is not set
# CONFIG_BLK_DEV_SC1200 is not set
CONFIG_BLK_DEV_PIIX=y
# CONFIG_BLK_DEV_IT8213 is not set
# CONFIG_BLK_DEV_IT821X is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_BLK_DEV_TC86C001 is not set
# CONFIG_IDE_ARM is not set

#
# Other IDE chipsets support
#

#
# Note: most of these also require special kernel boot parameters
#
# CONFIG_BLK_DEV_4DRIVES is not set
# CONFIG_BLK_DEV_ALI14XX is not set
# CONFIG_BLK_DEV_DTC2278 is not set
# CONFIG_BLK_DEV_HT6560B is not set
# CONFIG_BLK_DEV_QD65XX is not set
# CONFIG_BLK_DEV_UMC8672 is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_BLK_DEV_HD is not set

#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_CHR_DEV_SG=y
# CONFIG_CHR_DEV_SCH is not set

#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set
CONFIG_SCSI_WAIT_SCAN=m

#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_7000FASST is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AHA152X is not set
# CONFIG_SCSI_AHA1542 is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_AIC94XX is not set
CONFIG_SCSI_DPT_I2O=m
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_ARCMSR is not set
# CONFIG_MEGARAID_NEWGEN is not set
# CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set
# CONFIG_SCSI_HPTIOP is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_DTC3280 is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_PPA is not set
# CONFIG_SCSI_IMM is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_IPR is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_PSI240I is not set
# CONFIG_SCSI_QLOGIC_FAS is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_QLA_ISCSI is not set
# CONFIG_SCSI_LPFC is not set
# CONFIG_SCSI_SEAGATE is not set
# CONFIG_SCSI_SYM53C416 is not set
# CONFIG_SCSI_DC395x is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_ULTRASTOR is not set
# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set
# CONFIG_SCSI_SRP is not set
CONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
CONFIG_ATA_ACPI=y
# CONFIG_SATA_AHCI is not set
# CONFIG_SATA_SVW is not set
CONFIG_ATA_PIIX=y
# CONFIG_SATA_MV is not set
# CONFIG_SATA_NV is not set
# CONFIG_PDC_ADMA is not set
# CONFIG_SATA_QSTOR is not set
# CONFIG_SATA_PROMISE is not set
# CONFIG_SATA_SX4 is not set
# CONFIG_SATA_SIL is not set
# CONFIG_SATA_SIL24 is not set
# CONFIG_SATA_SIS is not set
# CONFIG_SATA_ULI is not set
# CONFIG_SATA_VIA is not set
# CONFIG_SATA_VITESSE is not set
# CONFIG_SATA_INIC162X is not set
# CONFIG_PATA_ALI is not set
# CONFIG_PATA_AMD is not set
# CONFIG_PATA_ARTOP is not set
# CONFIG_PATA_ATIIXP is not set
# CONFIG_PATA_CMD640_PCI is not set
# CONFIG_PATA_CMD64X is not set
# CONFIG_PATA_CS5520 is not set
# CONFIG_PATA_CS5530 is not set
# CONFIG_PATA_CS5535 is not set
# CONFIG_PATA_CYPRESS is not set
# CONFIG_PATA_EFAR is not set
# CONFIG_ATA_GENERIC is not set
# CONFIG_PATA_HPT366 is not set
# CONFIG_PATA_HPT37X is not set
# CONFIG_PATA_HPT3X2N is not set
# CONFIG_PATA_HPT3X3 is not set
# CONFIG_PATA_IT821X is not set
# CONFIG_PATA_IT8213 is not set
# CONFIG_PATA_JMICRON is not set
# CONFIG_PATA_LEGACY is not set
# CONFIG_PATA_TRIFLEX is not set
# CONFIG_PATA_MARVELL is not set
# CONFIG_PATA_MPIIX is not set
# CONFIG_PATA_OLDPIIX is not set
# CONFIG_PATA_NETCELL is not set
# CONFIG_PATA_NS87410 is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_OPTIDMA is not set
# CONFIG_PATA_PDC_OLD is not set
# CONFIG_PATA_QDI is not set
# CONFIG_PATA_RADISYS is not set
# CONFIG_PATA_RZ1000 is not set
# CONFIG_PATA_SC1200 is not set
# CONFIG_PATA_SERVERWORKS is not set
# CONFIG_PATA_PDC2027X is not set
# CONFIG_PATA_SIL680 is not set
# CONFIG_PATA_SIS is not set
# CONFIG_PATA_VIA is not set
# CONFIG_PATA_WINBOND is not set
# CONFIG_PATA_WINBOND_VLB is not set
# CONFIG_PATA_PLATFORM is not set
# CONFIG_MD is not set
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support
#
# CONFIG_FIREWIRE is not set
CONFIG_IEEE1394=y

#
# Subsystem Options
#
# CONFIG_IEEE1394_VERBOSEDEBUG is not set

#
# Controllers
#

#
# Texas Instruments PCILynx requires I2C
#
CONFIG_IEEE1394_OHCI1394=y

#
# Protocols
#
# CONFIG_IEEE1394_VIDEO1394 is not set
# CONFIG_IEEE1394_SBP2 is not set
# CONFIG_IEEE1394_ETH1394_ROM_ENTRY is not set
# CONFIG_IEEE1394_ETH1394 is not set
# CONFIG_IEEE1394_DV1394 is not set
CONFIG_IEEE1394_RAWIO=y
# CONFIG_I2O is not set
CONFIG_MACINTOSH_DRIVERS=y
# CONFIG_MAC_EMUMOUSEBTN is not set
CONFIG_NETDEVICES=y
# CONFIG_NETDEVICES_MULTIQUEUE is not set
CONFIG_DUMMY=m
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=m
# CONFIG_NET_SB1000 is not set
# CONFIG_ARCNET is not set
# CONFIG_PHYLIB is not set
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
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
# CONFIG_NET_TULIP is not set
# CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_AC3200 is not set
# CONFIG_APRICOT is not set
# CONFIG_B44 is not set
# CONFIG_FORCEDETH is not set
# CONFIG_CS89x0 is not set
# CONFIG_DGRS is not set
# CONFIG_EEPRO100 is not set
# CONFIG_E100 is not set
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_8139CP is not set
CONFIG_8139TOO=y
CONFIG_8139TOO_PIO=y
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
# CONFIG_8139_OLD_RX_RESET is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_SC92031 is not set
# CONFIG_NET_POCKET is not set
CONFIG_NETDEV_1000=y
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_E1000E is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
CONFIG_SKGE=m
CONFIG_SKY2=m
# CONFIG_SKY2_DEBUG is not set
# CONFIG_VIA_VELOCITY is not set
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
CONFIG_NETDEV_10000=y
# CONFIG_CHELSIO_T1 is not set
# CONFIG_CHELSIO_T3 is not set
# CONFIG_IXGB is not set
CONFIG_S2IO=m
# CONFIG_S2IO_NAPI is not set
# CONFIG_MYRI10GE is not set
# CONFIG_NETXEN_NIC is not set
# CONFIG_MLX4_CORE is not set
# CONFIG_TR is not set

#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
# CONFIG_WLAN_80211 is not set

#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET_MII is not set
# CONFIG_USB_USBNET is not set
# CONFIG_WAN is not set
CONFIG_XEN_NETDEV_FRONTEND=y
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
CONFIG_INPUT_POLLDEV=m

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_INPORT is not set
# CONFIG_MOUSE_LOGIBM is not set
# CONFIG_MOUSE_PC110PAD is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PARKBD is not set
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_NOZOMI is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
CONFIG_PRINTER=y
# CONFIG_LP_CONSOLE is not set
# CONFIG_PPDEV is not set
# CONFIG_TIPAR is not set
CONFIG_HVC_DRIVER=y
CONFIG_HVC_XEN=y
# CONFIG_IPMI_HANDLER is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_NVRAM is not set
CONFIG_RTC=m
# CONFIG_GEN_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set
CONFIG_AGP=y
# CONFIG_AGP_ALI is not set
# CONFIG_AGP_ATI is not set
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD64 is not set
CONFIG_AGP_INTEL=y
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
# CONFIG_AGP_VIA is not set
# CONFIG_AGP_EFFICEON is not set
CONFIG_DRM=y
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_R128 is not set
# CONFIG_DRM_RADEON is not set
# CONFIG_DRM_I810 is not set
# CONFIG_DRM_I830 is not set
# CONFIG_DRM_I915 is not set
# CONFIG_DRM_MGA is not set
# CONFIG_DRM_SIS is not set
# CONFIG_DRM_VIA is not set
# CONFIG_DRM_SAVAGE is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_NSC_GPIO is not set
# CONFIG_CS5535_GPIO is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HPET is not set
# CONFIG_HANGCHECK_TIMER is not set
# CONFIG_TCG_TPM is not set
# CONFIG_TELCLOCK is not set
CONFIG_DEVPORT=y
# CONFIG_I2C is not set

#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
CONFIG_HWMON=y
CONFIG_HWMON_VID=m
# CONFIG_SENSORS_ABITUGURU is not set
# CONFIG_SENSORS_ABITUGURU3 is not set
# CONFIG_SENSORS_K8TEMP is not set
# CONFIG_SENSORS_F71805F is not set
# CONFIG_SENSORS_CORETEMP is not set
CONFIG_SENSORS_IT87=m
# CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_PC87427 is not set
# CONFIG_SENSORS_SIS5595 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_VT1211 is not set
# CONFIG_SENSORS_VT8231 is not set
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
# CONFIG_SENSORS_HDAPS is not set
# CONFIG_SENSORS_APPLESMC is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
# CONFIG_WATCHDOG is not set

#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
# CONFIG_SSB is not set

#
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set

#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
# CONFIG_DVB_CORE is not set
CONFIG_DAB=y
# CONFIG_USB_DABUSB is not set

#
# Graphics support
#
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set

#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set
# CONFIG_VGASTATE is not set
CONFIG_VIDEO_OUTPUT_CONTROL=m
# CONFIG_FB is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
# CONFIG_VIDEO_SELECT is not set
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y

#
# Sound
#
CONFIG_SOUND=y

#
# Advanced Linux Sound Architecture
#
CONFIG_SND=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
CONFIG_SND_SEQUENCER=y
# CONFIG_SND_SEQ_DUMMY is not set
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=y
CONFIG_SND_PCM_OSS=y
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SEQUENCER_OSS=y
# CONFIG_SND_RTCTIMER is not set
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set

#
# Generic devices
#
CONFIG_SND_AC97_CODEC=y
# CONFIG_SND_DUMMY is not set
# CONFIG_SND_VIRMIDI is not set
# CONFIG_SND_MTPAV is not set
# CONFIG_SND_MTS64 is not set
# CONFIG_SND_SERIAL_U16550 is not set
# CONFIG_SND_MPU401 is not set
# CONFIG_SND_PORTMAN2X4 is not set

#
# ISA devices
#
# CONFIG_SND_ADLIB is not set
# CONFIG_SND_AD1816A is not set
# CONFIG_SND_AD1848 is not set
# CONFIG_SND_ALS100 is not set
# CONFIG_SND_AZT2320 is not set
# CONFIG_SND_CMI8330 is not set
# CONFIG_SND_CS4231 is not set
# CONFIG_SND_CS4232 is not set
# CONFIG_SND_CS4236 is not set
# CONFIG_SND_DT019X is not set
# CONFIG_SND_ES968 is not set
# CONFIG_SND_ES1688 is not set
# CONFIG_SND_ES18XX is not set
# CONFIG_SND_GUSCLASSIC is not set
# CONFIG_SND_GUSEXTREME is not set
# CONFIG_SND_GUSMAX is not set
# CONFIG_SND_INTERWAVE is not set
# CONFIG_SND_INTERWAVE_STB is not set
# CONFIG_SND_OPL3SA2 is not set
# CONFIG_SND_OPTI92X_AD1848 is not set
# CONFIG_SND_OPTI92X_CS4231 is not set
# CONFIG_SND_OPTI93X is not set
# CONFIG_SND_MIRO is not set
# CONFIG_SND_SB8 is not set
# CONFIG_SND_SB16 is not set
# CONFIG_SND_SBAWE is not set
# CONFIG_SND_SGALAXY is not set
# CONFIG_SND_SSCAPE is not set
# CONFIG_SND_WAVEFRONT is not set

#
# PCI devices
#
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ALS300 is not set
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5530 is not set
# CONFIG_SND_CS5535AUDIO is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_GINA24 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_MONA is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_ECHO3G is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_EMU10K1X is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_FM801 is not set
CONFIG_SND_HDA_INTEL=m
# CONFIG_SND_HDA_HWDEP is not set
CONFIG_SND_HDA_CODEC_REALTEK=y
CONFIG_SND_HDA_CODEC_ANALOG=y
CONFIG_SND_HDA_CODEC_SIGMATEL=y
CONFIG_SND_HDA_CODEC_VIA=y
CONFIG_SND_HDA_CODEC_ATIHDMI=y
CONFIG_SND_HDA_CODEC_CONEXANT=y
CONFIG_SND_HDA_CODEC_CMEDIA=y
CONFIG_SND_HDA_CODEC_SI3054=y
CONFIG_SND_HDA_GENERIC=y
# CONFIG_SND_HDA_POWER_SAVE is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
CONFIG_SND_INTEL8X0=y
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_PCXHR is not set
# CONFIG_SND_RIPTIDE is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set
# CONFIG_SND_AC97_POWER_SAVE is not set

#
# USB devices
#
# CONFIG_SND_USB_AUDIO is not set
# CONFIG_SND_USB_USX2Y is not set
# CONFIG_SND_USB_CAIAQ is not set

#
# System on Chip audio support
#
# CONFIG_SND_SOC is not set

#
# SoC Audio support for SuperH
#

#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
CONFIG_AC97_BUS=y
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
# CONFIG_HID_DEBUG is not set
# CONFIG_HIDRAW is not set

#
# USB Input Devices
#
CONFIG_USB_HID=y
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
# CONFIG_HID_FF is not set
# CONFIG_USB_HIDDEV is not set
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set

#
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_DEVICE_CLASS is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_SUSPEND is not set
# CONFIG_USB_PERSIST is not set
# CONFIG_USB_OTG is not set

#
# USB Host Controller Drivers
#
CONFIG_USB_EHCI_HCD=y
# CONFIG_USB_EHCI_SPLIT_ISO is not set
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
CONFIG_USB_UHCI_HCD=y
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set

#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
CONFIG_USB_PRINTER=y

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#

#
# may also be needed; see USB_STORAGE Help for more information
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_DPCM is not set
# CONFIG_USB_STORAGE_USBAT is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_LIBUSUAL is not set

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set
CONFIG_USB_MON=y

#
# USB port drivers
#
# CONFIG_USB_USS720 is not set

#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set

#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_AUERSWALD is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_BERRY_CHARGE is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
CONFIG_USB_CYTHERM=m
# CONFIG_USB_PHIDGET is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
# CONFIG_USB_GOTEMP is not set

#
# USB DSL modem support
#

#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set
# CONFIG_MMC is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_INFINIBAND is not set
# CONFIG_EDAC is not set
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set

#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
# CONFIG_RTC_DRV_TEST is not set

#
# SPI RTC drivers
#

#
# Platform RTC drivers
#
# CONFIG_RTC_DRV_CMOS is not set
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_STK17TA8 is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_M48T59 is not set
# CONFIG_RTC_DRV_V3020 is not set

#
# on-CPU RTC drivers
#
CONFIG_AUXDISPLAY=y
# CONFIG_KS0108 is not set
CONFIG_VIRTUALIZATION=y
# CONFIG_KVM is not set

#
# Userspace I/O
#
# CONFIG_UIO is not set
# CONFIG_LGUEST is not set

#
# File systems
#
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
# CONFIG_EXT3_FS_POSIX_ACL is not set
# CONFIG_EXT3_FS_SECURITY is not set
# CONFIG_EXT4DEV_FS is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
# CONFIG_REISER4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
CONFIG_AUTOFS4_FS=y
CONFIG_FUSE_FS=y

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
# CONFIG_ZISOFS is not set
CONFIG_UDF_FS=y
CONFIG_UDF_NLS=y

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_FS is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set

#
# Layered filesystems
#
# CONFIG_UNION_FS is not set

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set

#
# Network File Systems
#
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
CONFIG_NFSD=y
# CONFIG_NFSD_V3 is not set
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=y
CONFIG_EXPORTFS=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
# CONFIG_SUNRPC_BIND34 is not set
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y

#
# Native Language Support
#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set

#
# Distributed Lock Manager
#
# CONFIG_DLM is not set
CONFIG_INSTRUMENTATION=y
CONFIG_PROFILING=y
CONFIG_OPROFILE=m
CONFIG_KPROBES=y

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_PRINTK_TIME=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_UNUSED_SYMBOLS=y
# CONFIG_PAGE_OWNER is not set
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_SCHED_DEBUG=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_SLAB is not set
CONFIG_DEBUG_PREEMPT=y
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
# CONFIG_RT_MUTEX_TESTER is not set
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
CONFIG_LOCKDEP=y
# CONFIG_LOCK_STAT is not set
CONFIG_DEBUG_LOCKDEP=y
CONFIG_TRACE_IRQFLAGS=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_HIGHMEM=y
# CONFIG_DEBUG_BUGVERBOSE is not set
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_VM=y
CONFIG_DEBUG_LIST=y
CONFIG_FRAME_POINTER=y
# CONFIG_UNWIND_INFO is not set
# CONFIG_PROFILE_LIKELY is not set
CONFIG_FORCED_INLINING=y
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_DEBUG_SYNCHRO_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_LKDTM is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_WANT_EXTRA_DEBUG_INFORMATION is not set
# CONFIG_KGDB is not set
CONFIG_EARLY_PRINTK=y
# CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_PAGEALLOC is not set
CONFIG_DEBUG_RODATA=y
# CONFIG_4KSTACKS is not set
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y
CONFIG_DOUBLEFAULT=y

#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=m
CONFIG_CRYPTO_BLKCIPHER=m
CONFIG_CRYPTO_MANAGER=m
# CONFIG_CRYPTO_HMAC is not set
# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set
# CONFIG_CRYPTO_MD5 is not set
# CONFIG_CRYPTO_SHA1 is not set
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_GF128MUL is not set
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_CRYPTD is not set
# CONFIG_CRYPTO_DES is not set
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_TWOFISH_586 is not set
# CONFIG_CRYPTO_SERPENT is not set
CONFIG_CRYPTO_AES=m
# CONFIG_CRYPTO_AES_586 is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
CONFIG_CRYPTO_ARC4=m
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_ANUBIS is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_DEFLATE is not set
CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
CONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_PADLOCK is not set
CONFIG_CRYPTO_DEV_GEODE=m

#
# Library routines
#
CONFIG_BITREVERSE=y
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
CONFIG_LIBCRC32C=m
CONFIG_AUDIT_GENERIC=y
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_X86_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_X86_TRAMPOLINE=y
CONFIG_KTIME_SCALAR=y

--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68


2007-08-24 23:10:51

by Andrew Morton

[permalink] [raw]
Subject: Re: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

On Fri, 24 Aug 2007 18:47:07 -0400
Mathieu Desnoyers <[email protected]> wrote:

> Hi Andrew,
>
> I get the following BUG when booting 2.6.23-rc3-mm1 on i386. I wonder if
> you would have some ideas about what is causing this problem. I'll start
> bissecting it soon. I seems to be caused by an buggy skb_put call in
> kobject_uevent_env.
>
> Thanks,
>
> Mathieu
>
>
> Synthesizing the initial hotplug events...[ 13.738308] skb_over_panic: text:c0252ede len:97 put:11 head:c2237e00 data:c2237e00 tail:0xc2237e61 end:0xc2237e60 dev:<NULL>
> [ 13.772252] ------------[ cut here ]------------
> [ 13.786057] Kernel BUG at c039e27c [verbose debug info unavailable]
> [ 13.804788] invalid opcode: 0000 [#1] PREEMPT SMP
> [ 13.819195] Modules linked in:
> [ 13.828350]
> [ 13.832805] Pid: 1038, comm: udevtrigger Not tainted (2.6.23-rc3-mm1-testssmp #281)
> [ 13.855695] EIP: 0060:[<c039e27c>] EFLAGS: 00010286 CPU: 0
> [ 13.872090] EIP is at skb_over_panic+0x5c/0x60
> [ 13.885368] EAX: 00000084 EBX: c2237e00 ECX: 10000000 EDX: 00000000
> [ 13.904093] ESI: 00000000 EDI: c2237e56 EBP: c2243eb4 ESP: c2243e88
> [ 13.922820] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> [ 13.938951] Process udevtrigger (pid: 1038, ti=c2242000 task=c22a94f0 task.ti=c2242000)
> [ 13.962348] Stack: c05010ac c0252ede 00000061 0000000b c2237e00 c2237e00 c2237e61 c2237e60
> [ 13.987584] c04d2181 c2bc1e80 00000005 c2243efc c0252ee3 c2237e00 c04d2124 c04ce0b8
> [ 14.012823] c2b9ed20 00000000 c04ce0b8 c2b9ed20 c04e2e6b c05401a0 c2ac9000 c2243f04
> [ 14.038065] Call Trace:
> [ 14.045931] [<c010971a>] show_trace_log_lvl+0x1a/0x30
> [ 14.061321] [<c01097d8>] show_stack_log_lvl+0xa8/0xe0
> [ 14.076707] [<c01098da>] show_registers+0xca/0x250
> [ 14.091312] [<c0109b70>] die+0x110/0x280
> [ 14.103323] [<c04187c1>] do_trap+0x91/0xc0
> [ 14.115857] [<c0109fc9>] do_invalid_op+0x89/0xa0
> [ 14.129944] [<c041857a>] error_code+0x72/0x78
> [ 14.143252] [<c0252ee3>] kobject_uevent_env+0x353/0x380
> [ 14.159155] [<c0252f1a>] kobject_uevent+0xa/0x10
> [ 14.173244] [<c02c524b>] store_uevent+0x2b/0x70
> [ 14.187076] [<c02c4f6f>] dev_attr_store+0x2f/0x40
> [ 14.201425] [<c01cd0e0>] sysfs_write_file+0xa0/0x100
> [ 14.216553] [<c018cbf9>] vfs_write+0x99/0x130
> [ 14.229862] [<c018d2dd>] sys_write+0x3d/0x70
> [ 14.242911] [<c0108596>] syscall_call+0x7/0xb
> [ 14.256223] =======================
> [ 14.266906] INFO: lockdep is turned off.
> [ 14.278624] Code: 00 00 89 5c 24 14 8b 98 8c 00 00 00 89 54 24 0c 89 5c 24 10 8b 40 50 89 4c 24 04 c7 04 24 ac 10 50 c0 89 44 24 08 e8 64 1f d9 ff <0f> 0b eb fe 55 89 e5 56 89 d6 53 89 c3 83 ec
> [ 14.336986] EIP: [<c039e27c>] skb_over_panic+0x5c/0x60 SS:ESP 0068:c2243e88
>

hm, don't know, sorry. Kay fixed a few things in there, but iirc pretty
much all of the fixes were in rc3-mm1 anyway.

I doubt if bisection will tell us a lot: it'll probably point at
gregkh-driver-driver-core-change-add_uevent_var-to-use-a-struct.patch.

What we _would_ like to know is which sysfs file is being written to. We
used to have a debug patch to exactly address this problem but it got
transferred into Greg's tree from whence it mysteriously disappeared.


Here it is again:


Print the name of the last-accessed sysfs file when we oops, to help track
down oopses which occur in sysfs store/read handlers. Because these oopses
tend to not leave any trace of the offending code in the stack traces.

Cc: Greg KH <[email protected]>
Cc: Kay Sievers <[email protected]>
Cc: Mathieu Desnoyers <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

arch/i386/kernel/traps.c | 1 +
arch/x86_64/kernel/traps.c | 1 +
fs/sysfs/file.c | 14 ++++++++++++++
include/linux/sysfs.h | 5 +++++
4 files changed, 21 insertions(+)

diff -puN arch/i386/kernel/traps.c~sysfs-crash-debugging arch/i386/kernel/traps.c
--- a/arch/i386/kernel/traps.c~sysfs-crash-debugging
+++ a/arch/i386/kernel/traps.c
@@ -452,6 +452,7 @@ void die(const char * str, struct pt_reg
#endif
printk("\n");

+ sysfs_printk_last_file();
if (notify_die(DIE_OOPS, str, regs, err,
current->thread.trap_no, SIGSEGV) !=
NOTIFY_STOP) {
diff -puN arch/x86_64/kernel/traps.c~sysfs-crash-debugging arch/x86_64/kernel/traps.c
--- a/arch/x86_64/kernel/traps.c~sysfs-crash-debugging
+++ a/arch/x86_64/kernel/traps.c
@@ -588,6 +588,7 @@ void __kprobes __die(const char * str, s
printk("DEBUG_PAGEALLOC");
#endif
printk("\n");
+ sysfs_printk_last_file();
notify_die(DIE_OOPS, str, regs, err, current->thread.trap_no, SIGSEGV);
show_registers(regs);
add_taint(TAINT_DIE);
diff -puN fs/sysfs/file.c~sysfs-crash-debugging fs/sysfs/file.c
--- a/fs/sysfs/file.c~sysfs-crash-debugging
+++ a/fs/sysfs/file.c
@@ -9,12 +9,20 @@
#include <linux/poll.h>
#include <linux/list.h>
#include <linux/mutex.h>
+#include <linux/limits.h>
#include <asm/uaccess.h>

#include "sysfs.h"

#define to_sattr(a) container_of(a,struct subsys_attribute, attr)

+/* used in crash dumps to help with debugging */
+static char last_sysfs_file[PATH_MAX];
+void sysfs_printk_last_file(void)
+{
+ printk(KERN_EMERG "last sysfs file: %s\n", last_sysfs_file);
+}
+
/*
* Subsystem file operations.
* These operations allow subsystems to have files that can be
@@ -245,6 +253,12 @@ static int sysfs_open_file(struct inode
struct sysfs_buffer * buffer;
struct sysfs_ops * ops = NULL;
int error;
+ char *p;
+
+ p = d_path(file->f_dentry, sysfs_mount, last_sysfs_file,
+ sizeof(last_sysfs_file));
+ if (p)
+ memmove(last_sysfs_file, p, strlen(p) + 1);

/* need attr_sd for attr and ops, its parent for kobj */
if (!sysfs_get_active_two(attr_sd))
diff -puN include/linux/sysfs.h~sysfs-crash-debugging include/linux/sysfs.h
--- a/include/linux/sysfs.h~sysfs-crash-debugging
+++ a/include/linux/sysfs.h
@@ -133,6 +133,7 @@ void sysfs_remove_file_from_group(struct
const struct attribute *attr, const char *group);

void sysfs_notify(struct kobject * k, char *dir, char *attr);
+void sysfs_printk_last_file(void);

extern int __must_check sysfs_init(void);

@@ -234,6 +235,10 @@ static inline int __must_check sysfs_ini
return 0;
}

+static inline void sysfs_printk_last_file(void)
+{
+}
+
#endif /* CONFIG_SYSFS */

#endif /* _SYSFS_H_ */
_

2007-08-24 23:50:46

by Greg KH

[permalink] [raw]
Subject: Re: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

On Fri, Aug 24, 2007 at 04:10:29PM -0700, Andrew Morton wrote:
> On Fri, 24 Aug 2007 18:47:07 -0400
> Mathieu Desnoyers <[email protected]> wrote:
>
> > Hi Andrew,
> >
> > I get the following BUG when booting 2.6.23-rc3-mm1 on i386. I wonder if
> > you would have some ideas about what is causing this problem. I'll start
> > bissecting it soon. I seems to be caused by an buggy skb_put call in
> > kobject_uevent_env.
> >
> > Thanks,
> >
> > Mathieu
> >
> >
> > Synthesizing the initial hotplug events...[ 13.738308] skb_over_panic: text:c0252ede len:97 put:11 head:c2237e00 data:c2237e00 tail:0xc2237e61 end:0xc2237e60 dev:<NULL>
> > [ 13.772252] ------------[ cut here ]------------
> > [ 13.786057] Kernel BUG at c039e27c [verbose debug info unavailable]
> > [ 13.804788] invalid opcode: 0000 [#1] PREEMPT SMP
> > [ 13.819195] Modules linked in:
> > [ 13.828350]
> > [ 13.832805] Pid: 1038, comm: udevtrigger Not tainted (2.6.23-rc3-mm1-testssmp #281)
> > [ 13.855695] EIP: 0060:[<c039e27c>] EFLAGS: 00010286 CPU: 0
> > [ 13.872090] EIP is at skb_over_panic+0x5c/0x60
> > [ 13.885368] EAX: 00000084 EBX: c2237e00 ECX: 10000000 EDX: 00000000
> > [ 13.904093] ESI: 00000000 EDI: c2237e56 EBP: c2243eb4 ESP: c2243e88
> > [ 13.922820] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> > [ 13.938951] Process udevtrigger (pid: 1038, ti=c2242000 task=c22a94f0 task.ti=c2242000)
> > [ 13.962348] Stack: c05010ac c0252ede 00000061 0000000b c2237e00 c2237e00 c2237e61 c2237e60
> > [ 13.987584] c04d2181 c2bc1e80 00000005 c2243efc c0252ee3 c2237e00 c04d2124 c04ce0b8
> > [ 14.012823] c2b9ed20 00000000 c04ce0b8 c2b9ed20 c04e2e6b c05401a0 c2ac9000 c2243f04
> > [ 14.038065] Call Trace:
> > [ 14.045931] [<c010971a>] show_trace_log_lvl+0x1a/0x30
> > [ 14.061321] [<c01097d8>] show_stack_log_lvl+0xa8/0xe0
> > [ 14.076707] [<c01098da>] show_registers+0xca/0x250
> > [ 14.091312] [<c0109b70>] die+0x110/0x280
> > [ 14.103323] [<c04187c1>] do_trap+0x91/0xc0
> > [ 14.115857] [<c0109fc9>] do_invalid_op+0x89/0xa0
> > [ 14.129944] [<c041857a>] error_code+0x72/0x78
> > [ 14.143252] [<c0252ee3>] kobject_uevent_env+0x353/0x380
> > [ 14.159155] [<c0252f1a>] kobject_uevent+0xa/0x10
> > [ 14.173244] [<c02c524b>] store_uevent+0x2b/0x70
> > [ 14.187076] [<c02c4f6f>] dev_attr_store+0x2f/0x40
> > [ 14.201425] [<c01cd0e0>] sysfs_write_file+0xa0/0x100
> > [ 14.216553] [<c018cbf9>] vfs_write+0x99/0x130
> > [ 14.229862] [<c018d2dd>] sys_write+0x3d/0x70
> > [ 14.242911] [<c0108596>] syscall_call+0x7/0xb
> > [ 14.256223] =======================
> > [ 14.266906] INFO: lockdep is turned off.
> > [ 14.278624] Code: 00 00 89 5c 24 14 8b 98 8c 00 00 00 89 54 24 0c 89 5c 24 10 8b 40 50 89 4c 24 04 c7 04 24 ac 10 50 c0 89 44 24 08 e8 64 1f d9 ff <0f> 0b eb fe 55 89 e5 56 89 d6 53 89 c3 83 ec
> > [ 14.336986] EIP: [<c039e27c>] skb_over_panic+0x5c/0x60 SS:ESP 0068:c2243e88
> >
>
> hm, don't know, sorry. Kay fixed a few things in there, but iirc pretty
> much all of the fixes were in rc3-mm1 anyway.
>
> I doubt if bisection will tell us a lot: it'll probably point at
> gregkh-driver-driver-core-change-add_uevent_var-to-use-a-struct.patch.

I've now updated my copy of this with the "correct" one from Kay :)

> What we _would_ like to know is which sysfs file is being written to. We
> used to have a debug patch to exactly address this problem but it got
> transferred into Greg's tree from whence it mysteriously disappeared.

I think this patch got dropped a while ago when things were just
reworked too much in this area. If this patch now works properly, I
have no objection to taking it in my tree again.

thanks,

greg k-h

2007-08-25 00:16:50

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

* Andrew Morton ([email protected]) wrote:
> On Fri, 24 Aug 2007 18:47:07 -0400
> Mathieu Desnoyers <[email protected]> wrote:
>
> > Hi Andrew,
> >
> > I get the following BUG when booting 2.6.23-rc3-mm1 on i386. I wonder if
> > you would have some ideas about what is causing this problem. I'll start
> > bissecting it soon. I seems to be caused by an buggy skb_put call in
> > kobject_uevent_env.
> >
> > Thanks,
> >
> > Mathieu
> >
> >
>
> hm, don't know, sorry. Kay fixed a few things in there, but iirc pretty
> much all of the fixes were in rc3-mm1 anyway.
>
> I doubt if bisection will tell us a lot: it'll probably point at
> gregkh-driver-driver-core-change-add_uevent_var-to-use-a-struct.patch.
>
> What we _would_ like to know is which sysfs file is being written to. We
> used to have a debug patch to exactly address this problem but it got
> transferred into Greg's tree from whence it mysteriously disappeared.
>

Ok, here it is:

filename :

/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev

[ 13.737735] ------------[ cut here ]------------
[ 13.751544] Kernel BUG at c039e11c [verbose debug info unavailable]
[ 13.770287] invalid opcode: 0000 [#1] PREEMPT SMP
[ 13.784736] last sysfs file: /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev
[ 13.809714] Modules linked in:
[ 13.818873]
[ 13.823330] Pid: 1038, comm: udevtrigger Not tainted (2.6.23-rc3-mm1-testssmp #283)
[ 13.846218] EIP: 0060:[<c039e11c>] EFLAGS: 00010286 CPU: 1
[ 13.862616] EIP is at skb_over_panic+0x5c/0x60
[ 13.875894] EAX: 00000084 EBX: c2227e00 ECX: 10000000 EDX: 00000000
[ 13.894632] ESI: 00000000 EDI: c2227e56 EBP: c2ea9eb4 ESP: c2ea9e88
[ 13.913372] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[ 13.929516] Process udevtrigger (pid: 1038, ti=c2ea8000 task=c2baa070 task.ti=c2ea8000)
[ 13.952918] Stack: c05010f0 c0252e3e 00000061 0000000b c2227e00 c2227e00 c2227e61 c2227e60
[ 13.978200] c04d21c5 c2287c80 00000005 c2ea9efc c0252e43 c2227e00 c04d2168 c04ce0e4
[ 14.003471] c20fc2a0 00000000 c04ce0e4 c20fc2a0 c04e2eaf c05401e0 c225a000 c2ea9f04
[ 14.028749] Call Trace:
[ 14.036622] [<c010971a>] show_trace_log_lvl+0x1a/0x30
[ 14.052019] [<c01097d8>] show_stack_log_lvl+0xa8/0xe0
[ 14.067412] [<c01098da>] show_registers+0xca/0x250
[ 14.082028] [<c0109b75>] die+0x115/0x280
[ 14.094047] [<c04187c1>] do_trap+0x91/0xc0
[ 14.106586] [<c0109fc9>] do_invalid_op+0x89/0xa0
[ 14.120680] [<c041857a>] error_code+0x72/0x78
[ 14.134002] [<c0252e43>] kobject_uevent_env+0x353/0x380
[ 14.149915] [<c0252e7a>] kobject_uevent+0xa/0x10
[ 14.164012] [<c02c523b>] store_uevent+0x2b/0x70
[ 14.177851] [<c02c4f5f>] dev_attr_store+0x2f/0x40
[ 14.192207] [<c01cd080>] sysfs_write_file+0xa0/0x100
[ 14.207344] [<c018cb89>] vfs_write+0x99/0x130
[ 14.220661] [<c018d26d>] sys_write+0x3d/0x70
[ 14.233720] [<c0108596>] syscall_call+0x7/0xb
[ 14.247036] =======================
[ 14.257723] INFO: lockdep is turned off.
[ 14.269448] Code: 00 00 89 5c 24 14 8b 98 8c 00 00 00 89 54 24 0c 89 5c 24 10 8b 40 50 89 4c 24 04 c7 04 24 f0 10 50 c0 89 44 24 08 e8 94 20 d9 ff <0f> 0b eb fe 55 89 e5 56 89 d6 53 89 c3 83 ec 0c 8b 40 50 39
[ 14.328022] EIP: [<c039e11c>] skb_over_panic+0x5c/0x60 SS:ESP 0068:c2ea9e88
/etc/rcS.d/S03udev: line 253: 1038 Segmentation fault udevtrigger

>
> Here it is again:
>
>
> Print the name of the last-accessed sysfs file when we oops, to help track
> down oopses which occur in sysfs store/read handlers. Because these oopses
> tend to not leave any trace of the offending code in the stack traces.
>
> Cc: Greg KH <[email protected]>
> Cc: Kay Sievers <[email protected]>
> Cc: Mathieu Desnoyers <[email protected]>
> Signed-off-by: Andrew Morton <[email protected]>
> ---
>
> arch/i386/kernel/traps.c | 1 +
> arch/x86_64/kernel/traps.c | 1 +
> fs/sysfs/file.c | 14 ++++++++++++++
> include/linux/sysfs.h | 5 +++++
> 4 files changed, 21 insertions(+)
>
> diff -puN arch/i386/kernel/traps.c~sysfs-crash-debugging arch/i386/kernel/traps.c
> --- a/arch/i386/kernel/traps.c~sysfs-crash-debugging
> +++ a/arch/i386/kernel/traps.c
> @@ -452,6 +452,7 @@ void die(const char * str, struct pt_reg
> #endif
> printk("\n");
>
> + sysfs_printk_last_file();
> if (notify_die(DIE_OOPS, str, regs, err,
> current->thread.trap_no, SIGSEGV) !=
> NOTIFY_STOP) {
> diff -puN arch/x86_64/kernel/traps.c~sysfs-crash-debugging arch/x86_64/kernel/traps.c
> --- a/arch/x86_64/kernel/traps.c~sysfs-crash-debugging
> +++ a/arch/x86_64/kernel/traps.c
> @@ -588,6 +588,7 @@ void __kprobes __die(const char * str, s
> printk("DEBUG_PAGEALLOC");
> #endif
> printk("\n");
> + sysfs_printk_last_file();
> notify_die(DIE_OOPS, str, regs, err, current->thread.trap_no, SIGSEGV);
> show_registers(regs);
> add_taint(TAINT_DIE);
> diff -puN fs/sysfs/file.c~sysfs-crash-debugging fs/sysfs/file.c
> --- a/fs/sysfs/file.c~sysfs-crash-debugging
> +++ a/fs/sysfs/file.c
> @@ -9,12 +9,20 @@
> #include <linux/poll.h>
> #include <linux/list.h>
> #include <linux/mutex.h>
> +#include <linux/limits.h>
> #include <asm/uaccess.h>
>
> #include "sysfs.h"
>
> #define to_sattr(a) container_of(a,struct subsys_attribute, attr)
>
> +/* used in crash dumps to help with debugging */
> +static char last_sysfs_file[PATH_MAX];
> +void sysfs_printk_last_file(void)
> +{
> + printk(KERN_EMERG "last sysfs file: %s\n", last_sysfs_file);
> +}
> +
> /*
> * Subsystem file operations.
> * These operations allow subsystems to have files that can be
> @@ -245,6 +253,12 @@ static int sysfs_open_file(struct inode
> struct sysfs_buffer * buffer;
> struct sysfs_ops * ops = NULL;
> int error;
> + char *p;
> +
> + p = d_path(file->f_dentry, sysfs_mount, last_sysfs_file,
> + sizeof(last_sysfs_file));
> + if (p)
> + memmove(last_sysfs_file, p, strlen(p) + 1);
>
> /* need attr_sd for attr and ops, its parent for kobj */
> if (!sysfs_get_active_two(attr_sd))
> diff -puN include/linux/sysfs.h~sysfs-crash-debugging include/linux/sysfs.h
> --- a/include/linux/sysfs.h~sysfs-crash-debugging
> +++ a/include/linux/sysfs.h
> @@ -133,6 +133,7 @@ void sysfs_remove_file_from_group(struct
> const struct attribute *attr, const char *group);
>
> void sysfs_notify(struct kobject * k, char *dir, char *attr);
> +void sysfs_printk_last_file(void);
>
> extern int __must_check sysfs_init(void);
>
> @@ -234,6 +235,10 @@ static inline int __must_check sysfs_ini
> return 0;
> }
>
> +static inline void sysfs_printk_last_file(void)
> +{
> +}
> +
> #endif /* CONFIG_SYSFS */
>
> #endif /* _SYSFS_H_ */
> _
>

--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-08-25 00:45:18

by Andrew Morton

[permalink] [raw]
Subject: Re: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

On Fri, 24 Aug 2007 20:16:38 -0400
Mathieu Desnoyers <[email protected]> wrote:

> * Andrew Morton ([email protected]) wrote:
> > On Fri, 24 Aug 2007 18:47:07 -0400
> > Mathieu Desnoyers <[email protected]> wrote:
> >
> > > Hi Andrew,
> > >
> > > I get the following BUG when booting 2.6.23-rc3-mm1 on i386. I wonder if
> > > you would have some ideas about what is causing this problem. I'll start
> > > bissecting it soon. I seems to be caused by an buggy skb_put call in
> > > kobject_uevent_env.
> > >
> > > Thanks,
> > >
> > > Mathieu
> > >
> > >
> >
> > hm, don't know, sorry. Kay fixed a few things in there, but iirc pretty
> > much all of the fixes were in rc3-mm1 anyway.
> >
> > I doubt if bisection will tell us a lot: it'll probably point at
> > gregkh-driver-driver-core-change-add_uevent_var-to-use-a-struct.patch.
> >
> > What we _would_ like to know is which sysfs file is being written to. We
> > used to have a debug patch to exactly address this problem but it got
> > transferred into Greg's tree from whence it mysteriously disappeared.
> >
>
> Ok, here it is:
>
> filename :
>
> /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev

Bah. I've never found a sane way of going from a sysfs pathname back to the
code which implements that pathname :(

<greps the tree for '"rev"'>

<comes up with zilch>

> [ 13.737735] ------------[ cut here ]------------
> [ 13.751544] Kernel BUG at c039e11c [verbose debug info unavailable]
> [ 13.770287] invalid opcode: 0000 [#1] PREEMPT SMP
> [ 13.784736] last sysfs file: /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev
> [ 13.809714] Modules linked in:
> [ 13.818873]
> [ 13.823330] Pid: 1038, comm: udevtrigger Not tainted (2.6.23-rc3-mm1-testssmp #283)
> [ 13.846218] EIP: 0060:[<c039e11c>] EFLAGS: 00010286 CPU: 1
> [ 13.862616] EIP is at skb_over_panic+0x5c/0x60
> [ 13.875894] EAX: 00000084 EBX: c2227e00 ECX: 10000000 EDX: 00000000
> [ 13.894632] ESI: 00000000 EDI: c2227e56 EBP: c2ea9eb4 ESP: c2ea9e88
> [ 13.913372] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> [ 13.929516] Process udevtrigger (pid: 1038, ti=c2ea8000 task=c2baa070 task.ti=c2ea8000)
> [ 13.952918] Stack: c05010f0 c0252e3e 00000061 0000000b c2227e00 c2227e00 c2227e61 c2227e60
> [ 13.978200] c04d21c5 c2287c80 00000005 c2ea9efc c0252e43 c2227e00 c04d2168 c04ce0e4
> [ 14.003471] c20fc2a0 00000000 c04ce0e4 c20fc2a0 c04e2eaf c05401e0 c225a000 c2ea9f04
> [ 14.028749] Call Trace:
> [ 14.036622] [<c010971a>] show_trace_log_lvl+0x1a/0x30
> [ 14.052019] [<c01097d8>] show_stack_log_lvl+0xa8/0xe0
> [ 14.067412] [<c01098da>] show_registers+0xca/0x250
> [ 14.082028] [<c0109b75>] die+0x115/0x280
> [ 14.094047] [<c04187c1>] do_trap+0x91/0xc0
> [ 14.106586] [<c0109fc9>] do_invalid_op+0x89/0xa0
> [ 14.120680] [<c041857a>] error_code+0x72/0x78
> [ 14.134002] [<c0252e43>] kobject_uevent_env+0x353/0x380
> [ 14.149915] [<c0252e7a>] kobject_uevent+0xa/0x10
> [ 14.164012] [<c02c523b>] store_uevent+0x2b/0x70
> [ 14.177851] [<c02c4f5f>] dev_attr_store+0x2f/0x40
> [ 14.192207] [<c01cd080>] sysfs_write_file+0xa0/0x100
> [ 14.207344] [<c018cb89>] vfs_write+0x99/0x130
> [ 14.220661] [<c018d26d>] sys_write+0x3d/0x70
> [ 14.233720] [<c0108596>] syscall_call+0x7/0xb
> [ 14.247036] =======================
> [ 14.257723] INFO: lockdep is turned off.
> [ 14.269448] Code: 00 00 89 5c 24 14 8b 98 8c 00 00 00 89 54 24 0c 89 5c 24 10 8b 40 50 89 4c 24 04 c7 04 24 f0 10 50 c0 89 44 24 08 e8 94 20 d9 ff <0f> 0b eb fe 55 89 e5 56 89 d6 53 89 c3 83 ec 0c 8b 40 50 39
> [ 14.328022] EIP: [<c039e11c>] skb_over_panic+0x5c/0x60 SS:ESP 0068:c2ea9e88
> /etc/rcS.d/S03udev: line 253: 1038 Segmentation fault udevtrigger

I think I'll sit back and watch Greg and Kay solve this one ;)

Thanks.

2007-08-25 00:48:25

by Greg KH

[permalink] [raw]
Subject: Re: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

On Fri, Aug 24, 2007 at 05:44:50PM -0700, Andrew Morton wrote:
> On Fri, 24 Aug 2007 20:16:38 -0400
> Mathieu Desnoyers <[email protected]> wrote:
>
> > * Andrew Morton ([email protected]) wrote:
> > > On Fri, 24 Aug 2007 18:47:07 -0400
> > > Mathieu Desnoyers <[email protected]> wrote:
> > >
> > > > Hi Andrew,
> > > >
> > > > I get the following BUG when booting 2.6.23-rc3-mm1 on i386. I wonder if
> > > > you would have some ideas about what is causing this problem. I'll start
> > > > bissecting it soon. I seems to be caused by an buggy skb_put call in
> > > > kobject_uevent_env.
> > > >
> > > > Thanks,
> > > >
> > > > Mathieu
> > > >
> > > >
> > >
> > > hm, don't know, sorry. Kay fixed a few things in there, but iirc pretty
> > > much all of the fixes were in rc3-mm1 anyway.
> > >
> > > I doubt if bisection will tell us a lot: it'll probably point at
> > > gregkh-driver-driver-core-change-add_uevent_var-to-use-a-struct.patch.
> > >
> > > What we _would_ like to know is which sysfs file is being written to. We
> > > used to have a debug patch to exactly address this problem but it got
> > > transferred into Greg's tree from whence it mysteriously disappeared.
> > >
> >
> > Ok, here it is:
> >
> > filename :
> >
> > /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev
>
> Bah. I've never found a sane way of going from a sysfs pathname back to the
> code which implements that pathname :(
>
> <greps the tree for '"rev"'>
>
> <comes up with zilch>

It's a scsi file, as the above is a scsi device. It's created in the
drivers/scsi/scsi_sysfs.c file.

Kay, did you miss this set of attributes somehow?

thanks,

greg k-h

2007-08-25 01:22:20

by Kay Sievers

[permalink] [raw]
Subject: Re: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

On Fri, 2007-08-24 at 17:46 -0700, Greg KH wrote:
> On Fri, Aug 24, 2007 at 05:44:50PM -0700, Andrew Morton wrote:
> > On Fri, 24 Aug 2007 20:16:38 -0400
> > Mathieu Desnoyers <[email protected]> wrote:
> > > * Andrew Morton ([email protected]) wrote:
> > > > On Fri, 24 Aug 2007 18:47:07 -0400
> > > > Mathieu Desnoyers <[email protected]> wrote:

> > > > > I get the following BUG when booting 2.6.23-rc3-mm1 on i386. I wonder if
> > > > > you would have some ideas about what is causing this problem. I'll start
> > > > > bissecting it soon. I seems to be caused by an buggy skb_put call in
> > > > > kobject_uevent_env.
> > > >
> > > > hm, don't know, sorry. Kay fixed a few things in there, but iirc pretty
> > > > much all of the fixes were in rc3-mm1 anyway.
> > > >
> > > > I doubt if bisection will tell us a lot: it'll probably point at
> > > > gregkh-driver-driver-core-change-add_uevent_var-to-use-a-struct.patch.
> > > >
> > > > What we _would_ like to know is which sysfs file is being written to. We
> > > > used to have a debug patch to exactly address this problem but it got
> > > > transferred into Greg's tree from whence it mysteriously disappeared.
> > > >
> > >
> > > Ok, here it is:
> > >
> > > filename :
> > >
> > > /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev
> >
> > Bah. I've never found a sane way of going from a sysfs pathname back to the
> > code which implements that pathname :(
> >
> > <greps the tree for '"rev"'>
> >
> > <comes up with zilch>
>
> It's a scsi file, as the above is a scsi device. It's created in the
> drivers/scsi/scsi_sysfs.c file.
>
> Kay, did you miss this set of attributes somehow?

We didn't really touch anything in scsi. I expect it's something messing
around with the buffer values.

Mathieu,
does this fix it? If it does, we need to find what's going wrong, as it
probably just hides a bug somewhere.

Thanks,
Kay


--- a/lib/kobject_uevent.c
+++ b/lib/kobject_uevent.c
@@ -176,7 +176,7 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,

/* allocate message with the maximum possible size */
len = strlen(action_string) + strlen(devpath) + 2;
- skb = alloc_skb(len + env->buflen, GFP_KERNEL);
+ skb = alloc_skb(len + UEVENT_BUFFER_SIZE, GFP_KERNEL);
if (skb) {
char *scratch;


2007-08-25 02:02:20

by Randy Dunlap

[permalink] [raw]
Subject: Re: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

On Fri, 24 Aug 2007 17:44:50 -0700 Andrew Morton wrote:

> On Fri, 24 Aug 2007 20:16:38 -0400
> Mathieu Desnoyers <[email protected]> wrote:
>
> > * Andrew Morton ([email protected]) wrote:
> > > On Fri, 24 Aug 2007 18:47:07 -0400
> > > Mathieu Desnoyers <[email protected]> wrote:
> > >
> > > > Hi Andrew,
> > > >
> > > > I get the following BUG when booting 2.6.23-rc3-mm1 on i386. I wonder if
> > > > you would have some ideas about what is causing this problem. I'll start
> > > > bissecting it soon. I seems to be caused by an buggy skb_put call in
> > > > kobject_uevent_env.
> > > >
> > > > Thanks,
> > > >
> > > > Mathieu
> > > >
> > > >
> > >
> > > hm, don't know, sorry. Kay fixed a few things in there, but iirc pretty
> > > much all of the fixes were in rc3-mm1 anyway.
> > >
> > > I doubt if bisection will tell us a lot: it'll probably point at
> > > gregkh-driver-driver-core-change-add_uevent_var-to-use-a-struct.patch.
> > >
> > > What we _would_ like to know is which sysfs file is being written to. We
> > > used to have a debug patch to exactly address this problem but it got
> > > transferred into Greg's tree from whence it mysteriously disappeared.
> > >
> >
> > Ok, here it is:
> >
> > filename :
> >
> > /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev
>
> Bah. I've never found a sane way of going from a sysfs pathname back to the
> code which implements that pathname :(
>
> <greps the tree for '"rev"'>

Yeah, those sysfs attrib macros are not helpful when grepping.

drivers/scsi/scsi_sysfs.c, #444:

sdev_rd_attr (rev, "%.4s\n");

> <comes up with zilch>
>
> > [ 13.737735] ------------[ cut here ]------------
> > [ 13.751544] Kernel BUG at c039e11c [verbose debug info unavailable]
> > [ 13.770287] invalid opcode: 0000 [#1] PREEMPT SMP
> > [ 13.784736] last sysfs file: /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev
> > [ 13.809714] Modules linked in:
> > [ 13.818873]
> > [ 13.823330] Pid: 1038, comm: udevtrigger Not tainted (2.6.23-rc3-mm1-testssmp #283)
> > [ 13.846218] EIP: 0060:[<c039e11c>] EFLAGS: 00010286 CPU: 1
> > [ 13.862616] EIP is at skb_over_panic+0x5c/0x60
> > [ 13.875894] EAX: 00000084 EBX: c2227e00 ECX: 10000000 EDX: 00000000
> > [ 13.894632] ESI: 00000000 EDI: c2227e56 EBP: c2ea9eb4 ESP: c2ea9e88
> > [ 13.913372] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> > [ 13.929516] Process udevtrigger (pid: 1038, ti=c2ea8000 task=c2baa070 task.ti=c2ea8000)
> > [ 13.952918] Stack: c05010f0 c0252e3e 00000061 0000000b c2227e00 c2227e00 c2227e61 c2227e60
> > [ 13.978200] c04d21c5 c2287c80 00000005 c2ea9efc c0252e43 c2227e00 c04d2168 c04ce0e4
> > [ 14.003471] c20fc2a0 00000000 c04ce0e4 c20fc2a0 c04e2eaf c05401e0 c225a000 c2ea9f04
> > [ 14.028749] Call Trace:
> > [ 14.036622] [<c010971a>] show_trace_log_lvl+0x1a/0x30
> > [ 14.052019] [<c01097d8>] show_stack_log_lvl+0xa8/0xe0
> > [ 14.067412] [<c01098da>] show_registers+0xca/0x250
> > [ 14.082028] [<c0109b75>] die+0x115/0x280
> > [ 14.094047] [<c04187c1>] do_trap+0x91/0xc0
> > [ 14.106586] [<c0109fc9>] do_invalid_op+0x89/0xa0
> > [ 14.120680] [<c041857a>] error_code+0x72/0x78
> > [ 14.134002] [<c0252e43>] kobject_uevent_env+0x353/0x380
> > [ 14.149915] [<c0252e7a>] kobject_uevent+0xa/0x10
> > [ 14.164012] [<c02c523b>] store_uevent+0x2b/0x70
> > [ 14.177851] [<c02c4f5f>] dev_attr_store+0x2f/0x40
> > [ 14.192207] [<c01cd080>] sysfs_write_file+0xa0/0x100
> > [ 14.207344] [<c018cb89>] vfs_write+0x99/0x130
> > [ 14.220661] [<c018d26d>] sys_write+0x3d/0x70
> > [ 14.233720] [<c0108596>] syscall_call+0x7/0xb
> > [ 14.247036] =======================
> > [ 14.257723] INFO: lockdep is turned off.
> > [ 14.269448] Code: 00 00 89 5c 24 14 8b 98 8c 00 00 00 89 54 24 0c 89 5c 24 10 8b 40 50 89 4c 24 04 c7 04 24 f0 10 50 c0 89 44 24 08 e8 94 20 d9 ff <0f> 0b eb fe 55 89 e5 56 89 d6 53 89 c3 83 ec 0c 8b 40 50 39
> > [ 14.328022] EIP: [<c039e11c>] skb_over_panic+0x5c/0x60 SS:ESP 0068:c2ea9e88
> > /etc/rcS.d/S03udev: line 253: 1038 Segmentation fault udevtrigger
>
> I think I'll sit back and watch Greg and Kay solve this one ;)


---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

2007-08-25 03:03:04

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

* Greg KH ([email protected]) wrote:
> On Fri, Aug 24, 2007 at 05:44:50PM -0700, Andrew Morton wrote:
> > On Fri, 24 Aug 2007 20:16:38 -0400
> > Mathieu Desnoyers <[email protected]> wrote:
> >
> > > * Andrew Morton ([email protected]) wrote:
> > > > On Fri, 24 Aug 2007 18:47:07 -0400
> > > > Mathieu Desnoyers <[email protected]> wrote:
> > > >
> > > > > Hi Andrew,
> > > > >
> > > > > I get the following BUG when booting 2.6.23-rc3-mm1 on i386. I wonder if
> > > > > you would have some ideas about what is causing this problem. I'll start
> > > > > bissecting it soon. I seems to be caused by an buggy skb_put call in
> > > > > kobject_uevent_env.
> > > > >
> > > > > Thanks,
> > > > >
> > > > > Mathieu
> > > > >
> > > > >
> > > >
> > > > hm, don't know, sorry. Kay fixed a few things in there, but iirc pretty
> > > > much all of the fixes were in rc3-mm1 anyway.
> > > >
> > > > I doubt if bisection will tell us a lot: it'll probably point at
> > > > gregkh-driver-driver-core-change-add_uevent_var-to-use-a-struct.patch.
> > > >
> > > > What we _would_ like to know is which sysfs file is being written to. We
> > > > used to have a debug patch to exactly address this problem but it got
> > > > transferred into Greg's tree from whence it mysteriously disappeared.
> > > >
> > >
> > > Ok, here it is:
> > >
> > > filename :
> > >
> > > /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev
> >
> > Bah. I've never found a sane way of going from a sysfs pathname back to the
> > code which implements that pathname :(
> >
> > <greps the tree for '"rev"'>
> >
> > <comes up with zilch>
>
> It's a scsi file, as the above is a scsi device. It's created in the
> drivers/scsi/scsi_sysfs.c file.
>
> Kay, did you miss this set of attributes somehow?
>
> thanks,
>
> greg k-h

Hi Greg,

I think I am slowly getting there.. it looks like an off-by-one in
lib/kobject_uevent.c: add_uevent_var

when testing the return value of vsnprintf

if (len + 1 >= (sizeof(env->buf) - env->buflen))

should be

if (len >= (sizeof(env->buf) - env->buflen))

And then the problem underneath is that the array is too short for some
values. Since the return value of add_uevent_var is always ignored (why?)
from its callers, fixing the off-by-one will just fail silently, which is
almost worse.

I think we should find some better way of handling full static arrays.

And the bug is still there even if I fix these. So I'll continue my
investigation.

Mathieu

--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-08-25 03:40:56

by Kay Sievers

[permalink] [raw]
Subject: Re: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

On Fri, 2007-08-24 at 23:02 -0400, Mathieu Desnoyers wrote:
> * Greg KH ([email protected]) wrote:
> > On Fri, Aug 24, 2007 at 05:44:50PM -0700, Andrew Morton wrote:
> > > On Fri, 24 Aug 2007 20:16:38 -0400
> > > Mathieu Desnoyers <[email protected]> wrote:
> > >
> > > > * Andrew Morton ([email protected]) wrote:
> > > > > On Fri, 24 Aug 2007 18:47:07 -0400
> > > > > Mathieu Desnoyers <[email protected]> wrote:
> > > > >
> > > > > > Hi Andrew,
> > > > > >
> > > > > > I get the following BUG when booting 2.6.23-rc3-mm1 on i386. I wonder if
> > > > > > you would have some ideas about what is causing this problem. I'll start
> > > > > > bissecting it soon. I seems to be caused by an buggy skb_put call in
> > > > > > kobject_uevent_env.

> > > > > hm, don't know, sorry. Kay fixed a few things in there, but iirc pretty
> > > > > much all of the fixes were in rc3-mm1 anyway.
> > > > >
> > > > > I doubt if bisection will tell us a lot: it'll probably point at
> > > > > gregkh-driver-driver-core-change-add_uevent_var-to-use-a-struct.patch.
> > > > >
> > > > > What we _would_ like to know is which sysfs file is being written to. We
> > > > > used to have a debug patch to exactly address this problem but it got
> > > > > transferred into Greg's tree from whence it mysteriously disappeared.
> > > > >
> > > >
> > > > Ok, here it is:
> > > >
> > > > filename :
> > > >
> > > > /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev
> > >
> > > Bah. I've never found a sane way of going from a sysfs pathname back to the
> > > code which implements that pathname :(
> > >
> > > <greps the tree for '"rev"'>
> > >
> > > <comes up with zilch>
> >
> > It's a scsi file, as the above is a scsi device. It's created in the
> > drivers/scsi/scsi_sysfs.c file.

> I think I am slowly getting there.. it looks like an off-by-one in
> lib/kobject_uevent.c: add_uevent_var
>
> when testing the return value of vsnprintf
>
> if (len + 1 >= (sizeof(env->buf) - env->buflen))
>
> should be
>
> if (len >= (sizeof(env->buf) - env->buflen))
>
> And then the problem underneath is that the array is too short for some
> values.

That should be changed, yes. But we should not reach the end of the
buffer.

> Since the return value of add_uevent_var is always ignored (why?)

Because nobody added these checks, most of the callers check, some
don't. We should fix that step by step, sure.

> from its callers, fixing the off-by-one will just fail silently, which is
> almost worse.
>
> I think we should find some better way of handling full static arrays.
>
> And the bug is still there even if I fix these. So I'll continue my
> investigation.

Yeah, before these changes it was the environment buffer which got
corrupted, but seems nobody noticed it. Now it triggers BUG() if we run
into problems.

This needs a fix. It may be the reason for the too small buffer, you are
seeing.

Thanks,
Kay

--- a/drivers/firmware/dmi-id.c
+++ b/drivers/firmware/dmi-id.c
@@ -155,6 +155,7 @@ static int dmi_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
sizeof(env->buf) - env->buflen);
if (len >= (sizeof(env->buf) - env->buflen))
return -ENOMEM;
+ env->buflen += len;
return 0;
}


2007-08-25 03:52:19

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

* Kay Sievers ([email protected]) wrote:
> On Fri, 2007-08-24 at 23:02 -0400, Mathieu Desnoyers wrote:
> > * Greg KH ([email protected]) wrote:
> > > On Fri, Aug 24, 2007 at 05:44:50PM -0700, Andrew Morton wrote:
> > > > On Fri, 24 Aug 2007 20:16:38 -0400
> > > > Mathieu Desnoyers <[email protected]> wrote:
> > > >
> > > > > * Andrew Morton ([email protected]) wrote:
> > > > > > On Fri, 24 Aug 2007 18:47:07 -0400
> > > > > > Mathieu Desnoyers <[email protected]> wrote:
> > > > > >
> > > > > > > Hi Andrew,
> > > > > > >
> > > > > > > I get the following BUG when booting 2.6.23-rc3-mm1 on i386. I wonder if
> > > > > > > you would have some ideas about what is causing this problem. I'll start
> > > > > > > bissecting it soon. I seems to be caused by an buggy skb_put call in
> > > > > > > kobject_uevent_env.
>
> > > > > > hm, don't know, sorry. Kay fixed a few things in there, but iirc pretty
> > > > > > much all of the fixes were in rc3-mm1 anyway.
> > > > > >
> > > > > > I doubt if bisection will tell us a lot: it'll probably point at
> > > > > > gregkh-driver-driver-core-change-add_uevent_var-to-use-a-struct.patch.
> > > > > >
> > > > > > What we _would_ like to know is which sysfs file is being written to. We
> > > > > > used to have a debug patch to exactly address this problem but it got
> > > > > > transferred into Greg's tree from whence it mysteriously disappeared.
> > > > > >
> > > > >
> > > > > Ok, here it is:
> > > > >
> > > > > filename :
> > > > >
> > > > > /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev
> > > >
> > > > Bah. I've never found a sane way of going from a sysfs pathname back to the
> > > > code which implements that pathname :(
> > > >
> > > > <greps the tree for '"rev"'>
> > > >
> > > > <comes up with zilch>
> > >
> > > It's a scsi file, as the above is a scsi device. It's created in the
> > > drivers/scsi/scsi_sysfs.c file.
>
> > I think I am slowly getting there.. it looks like an off-by-one in
> > lib/kobject_uevent.c: add_uevent_var
> >
> > when testing the return value of vsnprintf
> >
> > if (len + 1 >= (sizeof(env->buf) - env->buflen))
> >
> > should be
> >
> > if (len >= (sizeof(env->buf) - env->buflen))
> >
> > And then the problem underneath is that the array is too short for some
> > values.
>
> That should be changed, yes. But we should not reach the end of the
> buffer.
>
> > Since the return value of add_uevent_var is always ignored (why?)
>
> Because nobody added these checks, most of the callers check, some
> don't. We should fix that step by step, sure.
>
> > from its callers, fixing the off-by-one will just fail silently, which is
> > almost worse.
> >
> > I think we should find some better way of handling full static arrays.
> >
> > And the bug is still there even if I fix these. So I'll continue my
> > investigation.
>
> Yeah, before these changes it was the environment buffer which got
> corrupted, but seems nobody noticed it. Now it triggers BUG() if we run
> into problems.
>
> This needs a fix. It may be the reason for the too small buffer, you are
> seeing.
>
> Thanks,
> Kay
>
> --- a/drivers/firmware/dmi-id.c
> +++ b/drivers/firmware/dmi-id.c
> @@ -155,6 +155,7 @@ static int dmi_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
> sizeof(env->buf) - env->buflen);
> if (len >= (sizeof(env->buf) - env->buflen))
> return -ENOMEM;
> + env->buflen += len;
> return 0;
> }
>
>

Yep, adding some printks, it points in that direction:

[ 179.898618] DBG string ACTION=add
[ 179.908565] put DBG 1 len 22 envlen 68
[ 179.919807] DBG string DEVPATH=/class/dmi/id
[ 179.921584] DBG req size 836
[ 179.921588] DBG ali size 864
[ 179.921632] DBG req size 836
[ 179.921634] DBG ali size 864
[ 179.966998] put DBG 2 len 14 envlen 68
[ 179.978208] DBG string SUBSYSTEM=dmi
[ 179.988901] put DBG 3 len 21 envlen 68
[ 180.000109] DBG string MODALIAS=dSEQNUM=971

as we can see, MODALIAS=d is clearly wrong there and should have a \0.
This is why the skb_put goes over the end of the allocated skb.

[ 180.012618] put DBG 4 len 11 envlen 68
[ 180.023829] DBG string SEQNUM=971
[ 180.033742] skb_over_panic: text:c0252ee8 len:97 put:11 head:c2afa200 data:c2afa200 tail:0xc2afa261 end:0xc2afa260 dev:<NULL>
[ 180.067545] ------------[ cut here ]------------
[ 180.081341] Kernel BUG at c039e1bc [verbose debug info unavailable]
[ 180.100069] invalid opcode: 0000 [#1] PREEMPT SMP


--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-08-25 03:56:57

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

* Kay Sievers ([email protected]) wrote:
> On Fri, 2007-08-24 at 23:02 -0400, Mathieu Desnoyers wrote:
> > * Greg KH ([email protected]) wrote:
> > > On Fri, Aug 24, 2007 at 05:44:50PM -0700, Andrew Morton wrote:
> > > > On Fri, 24 Aug 2007 20:16:38 -0400
> > > > Mathieu Desnoyers <[email protected]> wrote:
> > > >
> > > > > * Andrew Morton ([email protected]) wrote:
> > > > > > On Fri, 24 Aug 2007 18:47:07 -0400
> > > > > > Mathieu Desnoyers <[email protected]> wrote:
> > > > > >
> > > > > > > Hi Andrew,
> > > > > > >
> > > > > > > I get the following BUG when booting 2.6.23-rc3-mm1 on i386. I wonder if
> > > > > > > you would have some ideas about what is causing this problem. I'll start
> > > > > > > bissecting it soon. I seems to be caused by an buggy skb_put call in
> > > > > > > kobject_uevent_env.
>
> > > > > > hm, don't know, sorry. Kay fixed a few things in there, but iirc pretty
> > > > > > much all of the fixes were in rc3-mm1 anyway.
> > > > > >
> > > > > > I doubt if bisection will tell us a lot: it'll probably point at
> > > > > > gregkh-driver-driver-core-change-add_uevent_var-to-use-a-struct.patch.
> > > > > >
> > > > > > What we _would_ like to know is which sysfs file is being written to. We
> > > > > > used to have a debug patch to exactly address this problem but it got
> > > > > > transferred into Greg's tree from whence it mysteriously disappeared.
> > > > > >
> > > > >
> > > > > Ok, here it is:
> > > > >
> > > > > filename :
> > > > >
> > > > > /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/rev
> > > >
> > > > Bah. I've never found a sane way of going from a sysfs pathname back to the
> > > > code which implements that pathname :(
> > > >
> > > > <greps the tree for '"rev"'>
> > > >
> > > > <comes up with zilch>
> > >
> > > It's a scsi file, as the above is a scsi device. It's created in the
> > > drivers/scsi/scsi_sysfs.c file.
>
> > I think I am slowly getting there.. it looks like an off-by-one in
> > lib/kobject_uevent.c: add_uevent_var
> >
> > when testing the return value of vsnprintf
> >
> > if (len + 1 >= (sizeof(env->buf) - env->buflen))
> >
> > should be
> >
> > if (len >= (sizeof(env->buf) - env->buflen))
> >
> > And then the problem underneath is that the array is too short for some
> > values.
>
> That should be changed, yes. But we should not reach the end of the
> buffer.
>
> > Since the return value of add_uevent_var is always ignored (why?)
>
> Because nobody added these checks, most of the callers check, some
> don't. We should fix that step by step, sure.
>
> > from its callers, fixing the off-by-one will just fail silently, which is
> > almost worse.
> >
> > I think we should find some better way of handling full static arrays.
> >
> > And the bug is still there even if I fix these. So I'll continue my
> > investigation.
>
> Yeah, before these changes it was the environment buffer which got
> corrupted, but seems nobody noticed it. Now it triggers BUG() if we run
> into problems.
>
> This needs a fix. It may be the reason for the too small buffer, you are
> seeing.
>
> Thanks,
> Kay
>
> --- a/drivers/firmware/dmi-id.c
> +++ b/drivers/firmware/dmi-id.c
> @@ -155,6 +155,7 @@ static int dmi_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
> sizeof(env->buf) - env->buflen);
> if (len >= (sizeof(env->buf) - env->buflen))
> return -ENOMEM;
> + env->buflen += len;
> return 0;
> }
>
>

Here is a corrected version of the fix:


===================================================================
--- linux-2.6-lttng.orig/drivers/firmware/dmi-id.c 2007-08-24 23:51:25.000000000 -0400
+++ linux-2.6-lttng/drivers/firmware/dmi-id.c 2007-08-24 23:55:22.000000000 -0400
@@ -152,9 +152,10 @@ static int dmi_dev_uevent(struct device
if (add_uevent_var(env, "MODALIAS="))
return -ENOMEM;
len = get_modalias(&env->buf[env->buflen - 1],
- sizeof(env->buf) - env->buflen);
- if (len >= (sizeof(env->buf) - env->buflen))
+ sizeof(env->buf) - (env->buflen - 1));
+ if (len >= (sizeof(env->buf) - (env->buflen - 1)))
return -ENOMEM;
+ env->buflen += len + 1;
return 0;
}

Mathieu

--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-08-25 04:05:38

by Daniel Walker

[permalink] [raw]
Subject: Re: kernel BUG with 2.6.23-rc3-mm1: skb_over_panic

On Sat, 2007-08-25 at 05:44 +0200, Kay Sievers wrote:

> --- a/drivers/firmware/dmi-id.c
> +++ b/drivers/firmware/dmi-id.c
> @@ -155,6 +155,7 @@ static int dmi_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
> sizeof(env->buf) - env->buflen);
> if (len >= (sizeof(env->buf) - env->buflen))
> return -ENOMEM;
> + env->buflen += len;
> return 0;
> }
>

Works for me too ..

Daniel

2007-08-25 04:23:19

by Mathieu Desnoyers

[permalink] [raw]
Subject: [PATCH] Fix kobject uevent string handling errors

Fix kobject uevent string handling errors

- increment env->buflen in dmi-id.c
- fix off-by-one in add_uevent_var in error checking of vsnprintf
- add warnings when add_uevent_var. Proper handling of its return values should
really be done by the callers, but they aren't, so things currently
fail silently. This is why I add warnings.

Fixes the following BUG in 2.6.23-rc3-mm1:

[ 23.876358] skb_over_panic: text:c0252e5b len:97 put:11 head:c2b54400 data:c2b54400 tail:0xc2b54461 end:0xc2b54460 dev:<NULL>
[ 23.910278] ------------[ cut here ]------------
[ 23.924080] Kernel BUG at c039e12c [verbose debug info unavailable]
[ 23.942809] invalid opcode: 0000 [#1] PREEMPT SMP
[ 23.957213] last sysfs file: /devices/pci0000:00/0000:00:1f.1/ide0/0.0/media
[ 23.978275] Modules linked in:
[ 23.987429]
[ 23.991884] Pid: 1038, comm: udevtrigger Not tainted (2.6.23-rc3-mm1-testssmp #286)
[ 24.014773] EIP: 0060:[<c039e12c>] EFLAGS: 00010286 CPU: 0
[ 24.031168] EIP is at skb_over_panic+0x5c/0x60
[ 24.044444] EAX: 00000084 EBX: c2b54400 ECX: 00000001 EDX: 00000000
[ 24.063171] ESI: 00000000 EDI: c2b54456 EBP: c2b67eb4 ESP: c2b67e88
[ 24.081895] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[ 24.098027] Process udevtrigger (pid: 1038, ti=c2b66000 task=c2b08030 task.ti=c2b66000)
[ 24.121423] Stack: c050110c c0252e5b 00000061 0000000b c2b54400 c2b54400 c2b54461 c2b54460
[ 24.146658] c04d21e0 c2ad8e80 00000005 c2b67efc c0252e60 c2b54400 c04d2183 c04ce0e4
[ 24.171897] c2f60c40 00000000 c04ce0e4 c2f60c40 c04e2ecb c05401e0 c2f58000 c2b67f04
[ 24.197135] Call Trace:
[ 24.205001] [<c010971a>] show_trace_log_lvl+0x1a/0x30
[ 24.220388] [<c01097d8>] show_stack_log_lvl+0xa8/0xe0
[ 24.235772] [<c01098da>] show_registers+0xca/0x250
[ 24.250378] [<c0109b75>] die+0x115/0x280
[ 24.262389] [<c04187d1>] do_trap+0x91/0xc0
[ 24.274919] [<c0109fc9>] do_invalid_op+0x89/0xa0
[ 24.289004] [<c041858a>] error_code+0x72/0x78
[ 24.302313] [<c0252e60>] kobject_uevent_env+0x370/0x390
[ 24.318217] [<c0252e8a>] kobject_uevent+0xa/0x10
[ 24.332303] [<c02c524b>] store_uevent+0x2b/0x70
[ 24.346130] [<c02c4f6f>] dev_attr_store+0x2f/0x40
[ 24.360476] [<c01cd080>] sysfs_write_file+0xa0/0x100
[ 24.375602] [<c018cb89>] vfs_write+0x99/0x130
[ 24.388910] [<c018d26d>] sys_write+0x3d/0x70
[ 24.401958] [<c0108596>] syscall_call+0x7/0xb
[ 24.415265] =======================
[ 24.425947] INFO: lockdep is turned off.
[ 24.437665] Code: 00 00 89 5c 24 14 8b 98 8c 00 00 00 89 54 24 0c 89 5c 24 10 8b 40 50 89 4c 24 04 c7 04 24 0c 11 50 c0 89 44 24 08 e8 84 20 d9 ff <0f> 0b eb fe 55 89 e5 56 89 d6 53 89 c3 83 ec 0c 8b 40 50 39
[ 24.496006] EIP: [<c039e12c>] skb_over_panic+0x5c/0x60 SS:ESP 0068:c2b67e88

Signed-off-by: Mathieu Desnoyers <[email protected]>
---
drivers/firmware/dmi-id.c | 5 +++--
lib/kobject_uevent.c | 12 ++++++++++--
2 files changed, 13 insertions(+), 4 deletions(-)

Index: linux-2.6-lttng/lib/kobject_uevent.c
===================================================================
--- linux-2.6-lttng.orig/lib/kobject_uevent.c 2007-08-25 00:07:41.000000000 -0400
+++ linux-2.6-lttng/lib/kobject_uevent.c 2007-08-25 00:12:23.000000000 -0400
@@ -247,8 +247,12 @@ int add_uevent_var(struct kobj_uevent_en
va_list args;
int len;

- if (env->envp_idx >= ARRAY_SIZE(env->envp))
+ if (env->envp_idx >= ARRAY_SIZE(env->envp)) {
+ printk("add_uevent_var: too small array size %u %u\n",
+ env->envp_idx, ARRAY_SIZE(env->envp));
+ WARN_ON(1);
return -ENOMEM;
+ }

va_start(args, format);
len = vsnprintf(&env->buf[env->buflen],
@@ -256,8 +260,12 @@ int add_uevent_var(struct kobj_uevent_en
format, args);
va_end(args);

- if (len + 1 >= (sizeof(env->buf) - env->buflen))
+ if (len >= (sizeof(env->buf) - env->buflen)) {
+ printk("add_uevent_var: failed vsnprintf %d %u\n",
+ len, (sizeof(env->buf) - env->buflen));
+ WARN_ON(1);
return -ENOMEM;
+ }

env->envp[env->envp_idx++] = &env->buf[env->buflen];
env->buflen += len + 1;
Index: linux-2.6-lttng/drivers/firmware/dmi-id.c
===================================================================
--- linux-2.6-lttng.orig/drivers/firmware/dmi-id.c 2007-08-25 00:07:24.000000000 -0400
+++ linux-2.6-lttng/drivers/firmware/dmi-id.c 2007-08-25 00:07:58.000000000 -0400
@@ -152,9 +152,10 @@ static int dmi_dev_uevent(struct device
if (add_uevent_var(env, "MODALIAS="))
return -ENOMEM;
len = get_modalias(&env->buf[env->buflen - 1],
- sizeof(env->buf) - env->buflen);
- if (len >= (sizeof(env->buf) - env->buflen))
+ sizeof(env->buf) - (env->buflen - 1));
+ if (len >= (sizeof(env->buf) - (env->buflen - 1)))
return -ENOMEM;
+ env->buflen += len + 1;
return 0;
}

--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68

2007-08-25 04:51:56

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] Fix kobject uevent string handling errors

On Sat, Aug 25, 2007 at 12:17:54AM -0400, Mathieu Desnoyers wrote:
> Fix kobject uevent string handling errors
>
> - increment env->buflen in dmi-id.c
> - fix off-by-one in add_uevent_var in error checking of vsnprintf
> - add warnings when add_uevent_var. Proper handling of its return values should
> really be done by the callers, but they aren't, so things currently
> fail silently. This is why I add warnings.

Ah, thanks, but Kay just sent me an updated version with portions of
this fix in it already.

Thanks a lot for helping us track this all down, hopefully the scsi
layer isn't still overflowing the buffer :(

> - if (env->envp_idx >= ARRAY_SIZE(env->envp))
> + if (env->envp_idx >= ARRAY_SIZE(env->envp)) {
> + printk("add_uevent_var: too small array size %u %u\n",
> + env->envp_idx, ARRAY_SIZE(env->envp));
> + WARN_ON(1);

printk's always need a KERN_level.

thanks,

greg k-h

2007-08-25 14:21:41

by Kay Sievers

[permalink] [raw]
Subject: Re: [PATCH] Fix kobject uevent string handling errors

On Sat, 2007-08-25 at 00:17 -0400, Mathieu Desnoyers wrote:
> Fix kobject uevent string handling errors

> - add warnings when add_uevent_var. Proper handling of its return values should
> really be done by the callers, but they aren't, so things currently
> fail silently.

Right, I added the checks to kobject_uevent.c now. There are still
checks missing in:
arch/powerpc/kernel/vio.c
block/genhd.c
drivers/base/class.c
drivers/base/core.c
drivers/base/platform.c
drivers/eisa/eisa-bus.c
drivers/ide/ide.c
drivers/scsi/scsi_sysfs.c
drivers/spi/spi.c

We should fix them with a separate patch, and mark add_uevent_var() as
__must_check.

> --- linux-2.6-lttng.orig/lib/kobject_uevent.c 2007-08-25 00:07:41.000000000 -0400
> +++ linux-2.6-lttng/lib/kobject_uevent.c 2007-08-25 00:12:23.000000000 -0400
> @@ -247,8 +247,12 @@ int add_uevent_var(struct kobj_uevent_en
> va_list args;
> int len;
>
> - if (env->envp_idx >= ARRAY_SIZE(env->envp))
> + if (env->envp_idx >= ARRAY_SIZE(env->envp)) {
> + printk("add_uevent_var: too small array size %u %u\n",
> + env->envp_idx, ARRAY_SIZE(env->envp));
> + WARN_ON(1);
> return -ENOMEM;
> + }

I added a warning to the patch.

> va_start(args, format);
> len = vsnprintf(&env->buf[env->buflen],
> @@ -256,8 +260,12 @@ int add_uevent_var(struct kobj_uevent_en
> format, args);
> va_end(args);
>
> - if (len + 1 >= (sizeof(env->buf) - env->buflen))
> + if (len >= (sizeof(env->buf) - env->buflen)) {

This is already in Greg's tree.

> + printk("add_uevent_var: failed vsnprintf %d %u\n",
> + len, (sizeof(env->buf) - env->buflen));
> + WARN_ON(1);
> return -ENOMEM;
> + }

I added a warning to the patch.

> env->envp[env->envp_idx++] = &env->buf[env->buflen];
> env->buflen += len + 1;
> Index: linux-2.6-lttng/drivers/firmware/dmi-id.c
> ===================================================================
> --- linux-2.6-lttng.orig/drivers/firmware/dmi-id.c 2007-08-25 00:07:24.000000000 -0400
> +++ linux-2.6-lttng/drivers/firmware/dmi-id.c 2007-08-25 00:07:58.000000000 -0400
> @@ -152,9 +152,10 @@ static int dmi_dev_uevent(struct device
> if (add_uevent_var(env, "MODALIAS="))
> return -ENOMEM;
> len = get_modalias(&env->buf[env->buflen - 1],
> - sizeof(env->buf) - env->buflen);
> - if (len >= (sizeof(env->buf) - env->buflen))
> + sizeof(env->buf) - (env->buflen - 1));
> + if (len >= (sizeof(env->buf) - (env->buflen - 1)))
> return -ENOMEM;
> + env->buflen += len + 1;

The increment for the trailing '\0' is already done in add_uevent_var(),
so this change is not needed, I think.


Greg,
the attached file replaces the one in your patch tree. It contains the
printk warning and a few checks for return values.

Thanks,
Kay


Attachments:
driver-core-change-add_uevent_var-to-use-a-struct.patch (67.07 kB)

2007-08-25 18:38:47

by Mathieu Desnoyers

[permalink] [raw]
Subject: Re: [PATCH] Fix kobject uevent string handling errors

* Kay Sievers ([email protected]) wrote:
> env->envp[env->envp_idx++] = &env->buf[env->buflen];
> > env->buflen += len + 1;
> > Index: linux-2.6-lttng/drivers/firmware/dmi-id.c
> > ===================================================================
> > --- linux-2.6-lttng.orig/drivers/firmware/dmi-id.c 2007-08-25 00:07:24.000000000 -0400
> > +++ linux-2.6-lttng/drivers/firmware/dmi-id.c 2007-08-25 00:07:58.000000000 -0400
> > @@ -152,9 +152,10 @@ static int dmi_dev_uevent(struct device
> > if (add_uevent_var(env, "MODALIAS="))
> > return -ENOMEM;
> > len = get_modalias(&env->buf[env->buflen - 1],
> > - sizeof(env->buf) - env->buflen);
> > - if (len >= (sizeof(env->buf) - env->buflen))
> > + sizeof(env->buf) - (env->buflen - 1));
> > + if (len >= (sizeof(env->buf) - (env->buflen - 1)))
> > return -ENOMEM;
> > + env->buflen += len + 1;
>
> The increment for the trailing '\0' is already done in add_uevent_var(),
> so this change is not needed, I think.

Oh, you are right, since we replace the existing \0 which is already
accounted for, we don't have to do len +1 here.

Thanks,

Mathieu


--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68