* Re: 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong.
[not found] <20080904224004.d3dd3076.akpm@linux-foundation.org>
@ 2008-09-05 12:39 ` Mariusz Kozlowski
2008-09-05 13:28 ` Rafael J. Wysocki
0 siblings, 1 reply; 11+ messages in thread
From: Mariusz Kozlowski @ 2008-09-05 12:39 UTC (permalink / raw)
To: Andrew Morton, bzolnier; +Cc: linux-kernel, kernel-testers, linux-ide
[-- Attachment #1: Type: text/plain, Size: 2142 bytes --]
Hello,
Again 100% reproducible rmmod ide-cd_mod problem. Kernel is tainted because
of earlier sysfs acpi problems similar (probably identical) to those reported
by Li Zefan here http://marc.info/?l=linux-kernel&m=121921059026064&w=2
Steps to reproduce: unload ide-cd_mod
kobject (dd9e4a7c): tried to init an initialized object, something is seriously wrong.
Pid: 4734, comm: modprobe Tainted: G W 2.6.27-rc5-mm1 #1
[<c01ec982>] kobject_init+0xc4/0xc9
[<c02cb84a>] ? _spin_unlock+0x27/0x3f
[<c01aff2e>] ? sysfs_find_dirent+0x21/0x2b
[<c01aff7e>] ? __sysfs_add_one+0x46/0x6d
[<c01affb4>] ? sysfs_add_one+0xf/0x44
[<c01b0036>] ? sysfs_addrm_start+0x4d/0x90
[<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
[<c01ec9c5>] kobject_init_and_add+0x14/0x30
[<c01b1009>] ? sysfs_create_link+0x12/0x19
[<c01e8bad>] blk_register_filter+0x3b/0x46
[<ded9e40a>] ide_cd_probe+0x253/0x5a8 [ide_cd_mod]
[<c01b0000>] ? sysfs_addrm_start+0x17/0x90
[<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
[<c01b004e>] ? sysfs_addrm_start+0x65/0x90
[<c025145f>] generic_ide_probe+0x1f/0x21
[<c024c002>] driver_probe_device+0x77/0x15b
[<c02cb91b>] ? _spin_unlock_irqrestore+0x39/0x60
[<c024c146>] __driver_attach+0x60/0x62
[<c024b7bd>] bus_for_each_dev+0x44/0x62
[<c0251461>] ? generic_ide_remove+0x0/0x1e
[<c024bead>] driver_attach+0x19/0x1b
[<c024c0e6>] ? __driver_attach+0x0/0x62
[<c024bca8>] bus_add_driver+0x1ab/0x213
[<c0251461>] ? generic_ide_remove+0x0/0x1e
[<c024c291>] driver_register+0x4f/0x118
[<de7bf000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
[<de7bf00d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
[<c0101114>] do_one_initcall+0x24/0x12f
[<c02c9d8e>] ? mutex_unlock+0x8/0xa
[<c01455ca>] sys_init_module+0xa5/0x1c1
[<c0176a0a>] ? sys_read+0x3d/0x64
[<c01030f1>] sysenter_do_call+0x12/0x35
[<c012007b>] ? __set_special_pids+0x43/0x71
First time I modprobe/rmmod ide-cd_mod the system works but quickly gets unstable.
Second modprobe/rmmod is 100% fatal. Memory gets corruped seriously I guess.
pcspeaker beeps all the time, kernel throws dumps on the screen until
its really dead, sadly blinking 'leds of panic' ;)
Mariusz
[-- Attachment #2: .config --]
[-- Type: text/plain, Size: 43896 bytes --]
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.27-rc5-mm1
# Fri Sep 5 13:29:44 2008
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
# CONFIG_X86_64 is not set
CONFIG_X86=y
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
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_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_FAST_CMPXCHG_LOCAL=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=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_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
# CONFIG_GENERIC_TIME_VSYSCALL is not set
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
# CONFIG_ZONE_DMA32 is not set
CONFIG_ARCH_POPULATES_NODE_MAP=y
# CONFIG_AUDIT_ARCH is not set
CONFIG_ARCH_SUPPORTS_AOUT=y
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_KTIME_SCALAR=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=19
# CONFIG_CGROUPS is not set
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
# CONFIG_GROUP_SCHED is not set
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
# CONFIG_RELAY is not set
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_FASTBOOT=y
CONFIG_SYSCTL=y
# CONFIG_EMBEDDED is not set
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_PCSPKR_PLATFORM=y
# CONFIG_COMPAT_BRK is not set
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_IGMP=y
CONFIG_AIO=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_PCI_QUIRKS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
# CONFIG_PROFILING is not set
CONFIG_MARKERS=y
CONFIG_HAVE_OPROFILE=y
# CONFIG_KPROBES is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_HAVE_IOREMAP_PROT=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DYN_ARRAY=y
#
# GCOV profiling
#
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_LSF is not set
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_INTEGRITY is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_AS is not set
# CONFIG_IOSCHED_DEADLINE is not set
CONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
# CONFIG_CLASSIC_RCU is not set
CONFIG_FREEZER=y
#
# Processor type and features
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
# CONFIG_SMP is not set
CONFIG_HAVE_SPARSE_IRQ=y
# CONFIG_X86_MPPARSE is not set
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_VSMP is not set
# CONFIG_X86_RDC321X is not set
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
# CONFIG_PARAVIRT_GUEST is not set
# CONFIG_MEMTEST is not set
# 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 is not set
# CONFIG_MPENTIUMM is not set
CONFIG_MPENTIUM4=y
# 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_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_GENERIC_CPU is not set
# CONFIG_X86_GENERIC is not set
CONFIG_X86_CPU=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=7
CONFIG_X86_XADD=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_P6_NOP=y
CONFIG_X86_TSC=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=6
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_PROCESSOR_SELECT=y
CONFIG_CPU_SUP_INTEL_32=y
# CONFIG_CPU_SUP_CYRIX_32 is not set
# CONFIG_CPU_SUP_AMD_32 is not set
# CONFIG_CPU_SUP_CENTAUR_32 is not set
# CONFIG_CPU_SUP_TRANSMETA_32 is not set
# CONFIG_CPU_SUP_UMC_32 is not set
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_DMI=y
# CONFIG_IOMMU_HELPER is not set
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_RCU=y
# CONFIG_RCU_TRACE is not set
CONFIG_X86_UP_APIC=y
CONFIG_X86_UP_IOAPIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_NONFATAL=y
CONFIG_X86_MCE_P4THERMAL=y
CONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_X86_REBOOTFIXUPS is not set
CONFIG_MICROCODE=m
CONFIG_MICROCODE_INTEL=m
# CONFIG_MICROCODE_AMD is not set
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m
CONFIG_NOHIGHMEM=y
# CONFIG_HIGHMEM4G is not set
# CONFIG_HIGHMEM64G is not set
CONFIG_PAGE_OFFSET=0xC0000000
# CONFIG_X86_PAE is not set
# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
CONFIG_NEED_NODE_MEMMAP_SIZE=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ILLEGAL_POINTER_VALUE=0
CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y
CONFIG_HAVE_MEMORY_PRESENT=y
CONFIG_SPARSEMEM_STATIC=y
#
# Memory hotplug is currently incompatible with Software Suspend
#
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_MIGRATION=y
# CONFIG_RESOURCES_64BIT is not set
# CONFIG_PHYS_ADDR_T_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_UNEVICTABLE_LRU=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
CONFIG_MTRR_SANITIZER=y
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
CONFIG_X86_PAT=y
# CONFIG_EFI is not set
CONFIG_SECCOMP=y
CONFIG_HZ_100=y
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=100
CONFIG_SCHED_HRTICK=y
# CONFIG_KEXEC is not set
CONFIG_PHYSICAL_START=0x100000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x100000
CONFIG_COMPAT_VDSO=y
# CONFIG_CMDLINE_BOOL is not set
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
#
# Power management options
#
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION="/dev/sda2"
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
# CONFIG_ACPI_PROCFS is not set
CONFIG_ACPI_PROCFS_POWER=y
CONFIG_ACPI_SYSFS_POWER=y
# CONFIG_ACPI_PROC_EVENT is not set
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_THERMAL=y
# CONFIG_ACPI_WMI is not set
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_PANASONIC is not set
# CONFIG_ACPI_TOSHIBA is not set
# CONFIG_ACPI_CUSTOM_DSDT is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_EC=y
CONFIG_ACPI_PCI_SLOT=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
# CONFIG_ACPI_CONTAINER is not set
# CONFIG_ACPI_SBS is not set
# CONFIG_APM is not set
#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
# CONFIG_PCI_GOOLPC is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_DOMAINS=y
# CONFIG_PCIEPORTBUS is not set
CONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not set
# CONFIG_PCI_LEGACY is not set
# CONFIG_PCI_DEBUG is not set
CONFIG_HT_IRQ=y
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
CONFIG_EISA=y
# CONFIG_EISA_VLB_PRIMING is not set
CONFIG_EISA_PCI_EISA=y
CONFIG_EISA_VIRTUAL_ROOT=y
CONFIG_EISA_NAMES=y
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
# CONFIG_OLPC is not set
CONFIG_PCCARD=y
# CONFIG_PCMCIA_DEBUG is not set
CONFIG_PCMCIA=m
CONFIG_PCMCIA_LOAD_CIS=y
CONFIG_PCMCIA_IOCTL=y
CONFIG_CARDBUS=y
#
# PC-card bridges
#
CONFIG_YENTA=m
CONFIG_YENTA_O2=y
CONFIG_YENTA_RICOH=y
CONFIG_YENTA_TI=y
CONFIG_YENTA_ENE_TUNE=y
CONFIG_YENTA_TOSHIBA=y
# CONFIG_PD6729 is not set
# CONFIG_I82092 is not set
# CONFIG_I82365 is not set
# CONFIG_TCIC is not set
CONFIG_PCMCIA_PROBE=y
CONFIG_PCCARD_NONSTATIC=m
# CONFIG_HOTPLUG_PCI is not set
#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# 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_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 is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_LRO is not set
# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IPV6 is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER 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
# CONFIG_NET_SCHED is not set
#
# Network testing
#
CONFIG_NET_PKTGEN=m
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set
CONFIG_WIRELESS=y
CONFIG_CFG80211=y
CONFIG_NL80211=y
CONFIG_WIRELESS_EXT=y
# CONFIG_WIRELESS_EXT_SYSFS is not set
CONFIG_MAC80211=m
#
# Rate control algorithm selection
#
CONFIG_MAC80211_RC_PID=y
CONFIG_MAC80211_RC_DEFAULT_PID=y
CONFIG_MAC80211_RC_DEFAULT="pid"
# CONFIG_MAC80211_MESH is not set
# CONFIG_MAC80211_LEDS is not set
# CONFIG_MAC80211_DEBUG_MENU is not set
# CONFIG_IEEE80211 is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
# CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
# CONFIG_PARPORT_PC_FIFO is not set
# CONFIG_PARPORT_PC_SUPERIO is not set
# CONFIG_PARPORT_PC_PCMCIA 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_MESSAGES=y
#
# Protocols
#
# CONFIG_ISAPNP is not set
# CONFIG_PNPBIOS is not set
CONFIG_PNPACPI=y
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_FD=m
# 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 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_BLK_DEV_HD 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=m
CONFIG_TIFM_7XX1=m
# CONFIG_FUJITSU_LAPTOP is not set
# CONFIG_TC1100_WMI is not set
# CONFIG_COMPAL_LAPTOP is not set
CONFIG_SONY_LAPTOP=m
CONFIG_SONYPI_COMPAT=y
# CONFIG_THINKPAD_ACPI is not set
# CONFIG_INTEL_MENLOW is not set
# CONFIG_ENCLOSURE_SERVICES is not set
# CONFIG_HP_ILO is not set
CONFIG_HAVE_IDE=y
CONFIG_IDE=y
#
# Please see Documentation/ide/ide.txt for help/info on IDE drives
#
CONFIG_IDE_TIMINGS=y
# CONFIG_BLK_DEV_IDE_SATA is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_BLK_DEV_IDECS is not set
# CONFIG_BLK_DEV_DELKIN is not set
CONFIG_BLK_DEV_IDECD=m
CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDEACPI is not set
# CONFIG_IDE_TASK_IOCTL is not set
# CONFIG_IDE_PROC_FS is not set
#
# IDE chipset support/bugfixes
#
# CONFIG_IDE_GENERIC is not set
# CONFIG_BLK_DEV_PLATFORM is not set
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_IDEPNP is not set
CONFIG_BLK_DEV_IDEDMA_SFF=y
#
# PCI IDE chipsets support
#
CONFIG_BLK_DEV_IDEPCI=y
# CONFIG_IDEPCI_PCIBUS_ORDER is not set
# CONFIG_BLK_DEV_GENERIC is not set
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_RZ1000 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_AEC62XX is not set
CONFIG_BLK_DEV_ALI15X3=y
# 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_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_CS5535 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 is not set
# 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
#
# 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
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
#
#
# Enable only one of the two stacks, unless you know what you are doing
#
# CONFIG_FIREWIRE is not set
# CONFIG_IEEE1394 is not set
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
CONFIG_DUMMY=m
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_VETH is not set
# 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_IBM_NEW_EMAC_ZMII is not set
# CONFIG_IBM_NEW_EMAC_RGMII is not set
# CONFIG_IBM_NEW_EMAC_TAH is not set
# CONFIG_IBM_NEW_EMAC_EMAC4 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_E100 is not set
# CONFIG_LNE390 is not set
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_NE3210 is not set
# CONFIG_ES3210 is not set
# CONFIG_8139CP is not set
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
# CONFIG_8139_OLD_RX_RESET is not set
# CONFIG_R6040 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 is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_TR is not set
#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
CONFIG_WLAN_80211=y
# CONFIG_PCMCIA_RAYCS is not set
# CONFIG_IPW2100 is not set
# CONFIG_IPW2200 is not set
# CONFIG_LIBERTAS is not set
# CONFIG_LIBERTAS_THINFIRM is not set
# CONFIG_AIRO is not set
CONFIG_HERMES=m
# CONFIG_PLX_HERMES is not set
# CONFIG_TMD_HERMES is not set
# CONFIG_NORTEL_HERMES is not set
# CONFIG_PCI_HERMES is not set
CONFIG_PCMCIA_HERMES=m
# CONFIG_PCMCIA_SPECTRUM is not set
# CONFIG_ATMEL is not set
# CONFIG_AIRO_CS is not set
# CONFIG_PCMCIA_WL3501 is not set
# CONFIG_PRISM54 is not set
# CONFIG_USB_ZD1201 is not set
# CONFIG_USB_NET_RNDIS_WLAN is not set
# CONFIG_RTL8180 is not set
# CONFIG_RTL8187 is not set
# CONFIG_ADM8211 is not set
# CONFIG_MAC80211_HWSIM is not set
# CONFIG_P54_COMMON is not set
# CONFIG_ATH5K is not set
# CONFIG_ATH9K is not set
# CONFIG_IWLCORE is not set
# CONFIG_IWLWIFI_LEDS is not set
# CONFIG_IWLAGN is not set
# CONFIG_IWL3945 is not set
# CONFIG_HOSTAP is not set
# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
# CONFIG_ZD1211RW is not set
# CONFIG_RT2X00 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 is not set
# CONFIG_NET_PCMCIA is not set
# CONFIG_WAN is not set
# 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_NETCONSOLE=y
# CONFIG_NETCONSOLE_DYNAMIC is not set
CONFIG_NETPOLL=y
# CONFIG_NETPOLL_TRAP is not set
CONFIG_NET_POLL_CONTROLLER=y
# 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 is not set
#
# 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_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=m
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_PS2_ELANTECH is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 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=y
CONFIG_INPUT_PCSPKR=m
# CONFIG_INPUT_WISTRON_BTNS is not set
# CONFIG_INPUT_ATLAS_BTNS is not set
# CONFIG_INPUT_ATI_REMOTE is not set
# CONFIG_INPUT_ATI_REMOTE2 is not set
# CONFIG_INPUT_KEYSPAN_REMOTE is not set
# CONFIG_INPUT_POWERMATE is not set
# CONFIG_INPUT_YEALINK is not set
# CONFIG_INPUT_CM109 is not set
# CONFIG_INPUT_UINPUT 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_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
# CONFIG_DEVKMEM is not set
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_NOZOMI is not set
#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not set
CONFIG_FIX_EARLYCON_MEM=y
#
# Non-8250 serial port support
#
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_PRINTER is not set
# CONFIG_PPDEV is not set
# 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=m
#
# PCMCIA character devices
#
# CONFIG_SYNCLINK_CS is not set
# CONFIG_CARDMAN_4000 is not set
# CONFIG_CARDMAN_4040 is not set
# CONFIG_IPWIRELESS 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
# CONFIG_SPI is not set
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
# CONFIG_GPIOLIB is not set
# CONFIG_W1 is not set
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not set
# CONFIG_BATTERY_DS2760 is not set
# CONFIG_HWMON is not set
CONFIG_THERMAL=y
# CONFIG_WATCHDOG is not set
#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
# CONFIG_SSB is not set
#
# Multifunction device drivers
#
# CONFIG_MFD_CORE is not set
# CONFIG_MFD_SM501 is not set
# CONFIG_HTC_PASIC3 is not set
# CONFIG_MFD_TMIO is not set
#
# Multimedia devices
#
#
# Multimedia core support
#
# CONFIG_VIDEO_DEV is not set
# CONFIG_DVB_CORE is not set
# CONFIG_VIDEO_MEDIA is not set
#
# Multimedia drivers
#
# CONFIG_DAB is not set
#
# Graphics support
#
CONFIG_AGP=m
# CONFIG_AGP_ALI is not set
CONFIG_AGP_ATI=m
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD64 is not set
# CONFIG_AGP_INTEL is not set
# 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=m
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_R128 is not set
CONFIG_DRM_RADEON=m
# 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_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB_DDC is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
CONFIG_FB_FOREIGN_ENDIAN=y
CONFIG_FB_BOTH_ENDIAN=y
# CONFIG_FB_BIG_ENDIAN is not set
# CONFIG_FB_LITTLE_ENDIAN is not set
# CONFIG_FB_SYS_FOPS is not set
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set
#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ARC is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_VGA16 is not set
CONFIG_FB_VESA=y
# CONFIG_FB_N411 is not set
# CONFIG_FB_HGA is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_I810 is not set
# CONFIG_FB_LE80578 is not set
# CONFIG_FB_INTEL is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_S3 is not set
# CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_VIA is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_CYBLA is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_CARMINE is not set
# CONFIG_FB_GEODE is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=m
# CONFIG_BACKLIGHT_CORGI is not set
# CONFIG_BACKLIGHT_PROGEAR is not set
# CONFIG_BACKLIGHT_MBP_NVIDIA is not set
# CONFIG_BACKLIGHT_SAHARA is not set
#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set
#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
CONFIG_VIDEO_SELECT=y
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_LOGO_LINUX_CLUT224=y
CONFIG_SOUND=m
CONFIG_SOUND_OSS_CORE=y
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
# CONFIG_SND_SEQ_DUMMY is not set
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
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 is not set
# CONFIG_SND_VERBOSE_PROCFS is not set
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set
CONFIG_SND_VMASTER=y
CONFIG_SND_MPU401_UART=m
CONFIG_SND_AC97_CODEC=m
CONFIG_SND_DRIVERS=y
# CONFIG_SND_PCSP is not set
# 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
CONFIG_SND_AC97_POWER_SAVE=y
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
# CONFIG_SND_ISA is not set
CONFIG_SND_PCI=y
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ALS300 is not set
# CONFIG_SND_ALS4000 is not set
CONFIG_SND_ALI5451=m
# 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_AW2 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_OXYGEN 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 is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_HIFIER is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INTEL8X0 is not set
# 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_SIS7019 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_VIRTUOSO is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set
# CONFIG_SND_USB is not set
# CONFIG_SND_PCMCIA is not set
# CONFIG_SND_SOC is not set
# CONFIG_SOUND_PRIME is not set
CONFIG_AC97_BUS=m
CONFIG_HID_SUPPORT=y
CONFIG_HID=m
# CONFIG_HID_DEBUG is not set
# CONFIG_HIDRAW is not set
#
# USB Input Devices
#
CONFIG_USB_HID=m
# CONFIG_HID_FF is not set
# CONFIG_USB_HIDDEV is not set
#
# USB HID Boot Protocol drivers
#
# CONFIG_USB_KBD is not set
# CONFIG_USB_MOUSE is not set
#
# Special HID drivers
#
# CONFIG_HID_COMPAT is not set
CONFIG_HID_A4TECH=m
# CONFIG_HID_APPLE is not set
# CONFIG_HID_BELKIN is not set
# CONFIG_HID_CHERRY is not set
# CONFIG_HID_CHICONY is not set
# CONFIG_HID_CYPRESS is not set
# CONFIG_HID_DELL is not set
# CONFIG_HID_EZKEY is not set
# CONFIG_HID_GYRATION is not set
CONFIG_HID_LOGITECH=m
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
CONFIG_HID_MICROSOFT=m
# CONFIG_HID_MONTEREY is not set
# CONFIG_HID_PETALYNX is not set
# CONFIG_HID_SAMSUNG is not set
CONFIG_HID_SONY=m
# CONFIG_HID_SUNPLUS 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=m
# CONFIG_USB_DEBUG is not set
# CONFIG_USB_ANNOUNCE_NEW_DEVICES 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_OTG is not set
# CONFIG_USB_MON is not set
#
# USB Host Controller Drivers
#
# CONFIG_USB_C67X00_HCD is not set
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_ROOT_HUB_TT=y
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_ISP1760_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
CONFIG_USB_UHCI_HCD=m
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set
#
# Enable Host or Gadget support to see Inventra options
#
#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
CONFIG_USB_PRINTER=m
# CONFIG_USB_WDM is not set
# CONFIG_USB_TMC is not set
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#
#
# may also be needed; see USB_STORAGE Help for more information
#
CONFIG_USB_LIBUSUAL=y
#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
#
# USB port drivers
#
# CONFIG_USB_USS720 is not set
CONFIG_USB_SERIAL=m
CONFIG_USB_EZUSB=y
# CONFIG_USB_SERIAL_GENERIC is not set
CONFIG_USB_SERIAL_AIRCABLE=m
CONFIG_USB_SERIAL_ARK3116=m
CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not set
CONFIG_USB_SERIAL_WHITEHEAT=m
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
CONFIG_USB_SERIAL_FUNSOFT=m
CONFIG_USB_SERIAL_VISOR=m
CONFIG_USB_SERIAL_IPAQ=m
CONFIG_USB_SERIAL_IR=m
CONFIG_USB_SERIAL_EDGEPORT=m
CONFIG_USB_SERIAL_EDGEPORT_TI=m
CONFIG_USB_SERIAL_GARMIN=m
CONFIG_USB_SERIAL_IPW=m
# CONFIG_USB_SERIAL_IUU is not set
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
CONFIG_USB_SERIAL_KEYSPAN=m
CONFIG_USB_SERIAL_KLSI=m
CONFIG_USB_SERIAL_KOBIL_SCT=m
CONFIG_USB_SERIAL_MCT_U232=m
CONFIG_USB_SERIAL_MOS7720=m
CONFIG_USB_SERIAL_MOS7840=m
# CONFIG_USB_SERIAL_MOTOROLA is not set
CONFIG_USB_SERIAL_NAVMAN=m
CONFIG_USB_SERIAL_PL2303=m
# CONFIG_USB_SERIAL_OTI6858 is not set
# CONFIG_USB_SERIAL_SPCP8X5 is not set
CONFIG_USB_SERIAL_HP4X=m
CONFIG_USB_SERIAL_SAFE=m
# CONFIG_USB_SERIAL_SAFE_PADDED is not set
CONFIG_USB_SERIAL_SIERRAWIRELESS=m
CONFIG_USB_SERIAL_TI=m
CONFIG_USB_SERIAL_CYBERJACK=m
CONFIG_USB_SERIAL_XIRCOM=m
CONFIG_USB_SERIAL_OPTION=m
CONFIG_USB_SERIAL_OMNINET=m
CONFIG_USB_SERIAL_DEBUG=m
#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_SEVSEG 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 is not set
# 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_ISIGHTFW is not set
# CONFIG_USB_GOTEMP is not set
# CONFIG_USB_GADGET is not set
CONFIG_MMC=m
CONFIG_MMC_DEBUG=y
# CONFIG_MMC_UNSAFE_RESUME is not set
#
# MMC/SD Card Drivers
#
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_SDIO_UART=m
# CONFIG_MMC_TEST is not set
#
# MMC/SD Host Controller Drivers
#
CONFIG_MMC_SDHCI=m
# CONFIG_MMC_SDHCI_PCI is not set
CONFIG_MMC_WBSD=m
CONFIG_MMC_TIFM_SD=m
# CONFIG_MMC_SDRICOH_CS is not set
# CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_INFINIBAND is not set
# CONFIG_EDAC is not set
# CONFIG_RTC_CLASS is not set
# CONFIG_DMADEVICES is not set
# CONFIG_AUXDISPLAY is not set
# CONFIG_UIO is not set
#
# Firmware Drivers
#
# CONFIG_EDD is not set
CONFIG_FIRMWARE_MEMMAP=y
# CONFIG_DELL_RBU is not set
# CONFIG_DCDBAS is not set
# CONFIG_DMIID is not set
# CONFIG_ISCSI_IBFT_FIND 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 is not set
# CONFIG_EXT4DEV_FS is not set
CONFIG_JBD=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_FILE_LOCKING=y
# CONFIG_XFS_FS is not set
# CONFIG_OCFS2_FS is not set
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set
#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
# CONFIG_VFAT_FS is not set
CONFIG_FAT_DEFAULT_CODEPAGE=1250
# 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_CONFIGFS_FS=m
#
# 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_MINIX_FS is not set
# CONFIG_NILFS2_FS is not set
# CONFIG_OMFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
CONFIG_NFSD=m
CONFIG_NFSD_V3=y
# CONFIG_NFSD_V3_ACL is not set
# CONFIG_NFSD_V4 is not set
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
# CONFIG_SUNRPC_REGISTER_V4 is not set
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=m
CONFIG_SMB_NLS_DEFAULT=y
CONFIG_SMB_NLS_REMOTE="cp1250"
# 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
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-2"
CONFIG_NLS_CODEPAGE_437=m
# 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=m
# 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=m
# CONFIG_NLS_CODEPAGE_1251 is not set
# CONFIG_NLS_ASCII is not set
CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_ISO8859_2=m
# 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=m
# CONFIG_DLM is not set
#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_PAGE_OWNER is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_SHIRQ=y
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
CONFIG_SCHED_DEBUG=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
CONFIG_DEBUG_PREEMPT=y
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
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 is not set
CONFIG_TRACE_IRQFLAGS=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_WRITECOUNT is not set
CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
CONFIG_FRAME_POINTER=y
# CONFIG_DEBUG_SYNCHRO_TEST is not set
# CONFIG_PROFILE_LIKELY is not set
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
CONFIG_SYSCTL_SYSCALL_CHECK=y
CONFIG_HAVE_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
# CONFIG_FTRACE is not set
# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_PREEMPT_TRACER is not set
# CONFIG_SYSPROF_TRACER is not set
# CONFIG_SCHED_TRACER is not set
# CONFIG_CONTEXT_SWITCH_TRACER is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_KERNEL_TESTS is not set
# CONFIG_STRICT_DEVMEM is not set
CONFIG_X86_VERBOSE_BOOTUP=y
CONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set
# CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_X86_PTDUMP is not set
# CONFIG_DEBUG_RODATA is not set
# CONFIG_DEBUG_NX_TEST is not set
CONFIG_4KSTACKS=y
CONFIG_DOUBLEFAULT=y
# CONFIG_MMIOTRACE is not set
CONFIG_IO_DELAY_TYPE_0X80=0
CONFIG_IO_DELAY_TYPE_0XED=1
CONFIG_IO_DELAY_TYPE_UDELAY=2
CONFIG_IO_DELAY_TYPE_NONE=3
# CONFIG_IO_DELAY_0X80 is not set
CONFIG_IO_DELAY_0XED=y
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not set
CONFIG_DEFAULT_IO_DELAY_TYPE=1
# CONFIG_KMEMCHECK is not set
# CONFIG_CPA_DEBUG is not set
# CONFIG_OPTIMIZE_INLINING is not set
#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITYFS is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
CONFIG_CRYPTO=y
#
# Crypto core or helper
#
# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_MANAGER=y
# CONFIG_CRYPTO_GF128MUL is not set
# CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_CRYPTD is not set
# CONFIG_CRYPTO_AUTHENC is not set
# CONFIG_CRYPTO_TEST is not set
#
# Authenticated Encryption with Associated Data
#
# CONFIG_CRYPTO_CCM is not set
# CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_SEQIV is not set
#
# Block modes
#
# CONFIG_CRYPTO_CBC is not set
# CONFIG_CRYPTO_CTR is not set
# CONFIG_CRYPTO_CTS is not set
CONFIG_CRYPTO_ECB=y
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_PCBC is not set
# CONFIG_CRYPTO_XTS is not set
#
# Hash modes
#
# CONFIG_CRYPTO_HMAC is not set
# CONFIG_CRYPTO_XCBC is not set
#
# Digest
#
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CRC32C_INTEL is not set
# CONFIG_CRYPTO_MD4 is not set
# CONFIG_CRYPTO_MD5 is not set
CONFIG_CRYPTO_MICHAEL_MIC=m
# CONFIG_CRYPTO_RMD128 is not set
# CONFIG_CRYPTO_RMD160 is not set
# CONFIG_CRYPTO_RMD256 is not set
# CONFIG_CRYPTO_RMD320 is not set
# CONFIG_CRYPTO_SHA1 is not set
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_WP512 is not set
#
# Ciphers
#
CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_AES_586 is not set
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_ARC4=y
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_DES is not set
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_SALSA20 is not set
# CONFIG_CRYPTO_SALSA20_586 is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_TWOFISH_586 is not set
#
# Compression
#
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_LZO is not set
#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
# CONFIG_CRYPTO_HW is not set
CONFIG_HAVE_KVM=y
# CONFIG_VIRTUALIZATION is not set
#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_GENERIC_FIND_FIRST_BIT=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
# CONFIG_CRC_T10DIF is not set
# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong.
2008-09-05 12:39 ` 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong Mariusz Kozlowski
@ 2008-09-05 13:28 ` Rafael J. Wysocki
[not found] ` <200809051528.54213.rjw-KKrjLPT3xs0@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: Rafael J. Wysocki @ 2008-09-05 13:28 UTC (permalink / raw)
To: Mariusz Kozlowski
Cc: Andrew Morton, bzolnier, linux-kernel, kernel-testers, linux-ide
On Friday, 5 of September 2008, Mariusz Kozlowski wrote:
> Hello,
>
> Again 100% reproducible rmmod ide-cd_mod problem. Kernel is tainted because
> of earlier sysfs acpi problems similar (probably identical) to those reported
> by Li Zefan here http://marc.info/?l=linux-kernel&m=121921059026064&w=2
>
> Steps to reproduce: unload ide-cd_mod
>
> kobject (dd9e4a7c): tried to init an initialized object, something is seriously wrong.
> Pid: 4734, comm: modprobe Tainted: G W 2.6.27-rc5-mm1 #1
> [<c01ec982>] kobject_init+0xc4/0xc9
> [<c02cb84a>] ? _spin_unlock+0x27/0x3f
> [<c01aff2e>] ? sysfs_find_dirent+0x21/0x2b
> [<c01aff7e>] ? __sysfs_add_one+0x46/0x6d
> [<c01affb4>] ? sysfs_add_one+0xf/0x44
> [<c01b0036>] ? sysfs_addrm_start+0x4d/0x90
> [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> [<c01ec9c5>] kobject_init_and_add+0x14/0x30
> [<c01b1009>] ? sysfs_create_link+0x12/0x19
> [<c01e8bad>] blk_register_filter+0x3b/0x46
> [<ded9e40a>] ide_cd_probe+0x253/0x5a8 [ide_cd_mod]
> [<c01b0000>] ? sysfs_addrm_start+0x17/0x90
> [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> [<c01b004e>] ? sysfs_addrm_start+0x65/0x90
> [<c025145f>] generic_ide_probe+0x1f/0x21
> [<c024c002>] driver_probe_device+0x77/0x15b
> [<c02cb91b>] ? _spin_unlock_irqrestore+0x39/0x60
> [<c024c146>] __driver_attach+0x60/0x62
> [<c024b7bd>] bus_for_each_dev+0x44/0x62
> [<c0251461>] ? generic_ide_remove+0x0/0x1e
> [<c024bead>] driver_attach+0x19/0x1b
> [<c024c0e6>] ? __driver_attach+0x0/0x62
> [<c024bca8>] bus_add_driver+0x1ab/0x213
> [<c0251461>] ? generic_ide_remove+0x0/0x1e
> [<c024c291>] driver_register+0x4f/0x118
> [<de7bf000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> [<de7bf00d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> [<c0101114>] do_one_initcall+0x24/0x12f
> [<c02c9d8e>] ? mutex_unlock+0x8/0xa
> [<c01455ca>] sys_init_module+0xa5/0x1c1
> [<c0176a0a>] ? sys_read+0x3d/0x64
> [<c01030f1>] sysenter_do_call+0x12/0x35
> [<c012007b>] ? __set_special_pids+0x43/0x71
>
> First time I modprobe/rmmod ide-cd_mod the system works but quickly gets unstable.
> Second modprobe/rmmod is 100% fatal. Memory gets corruped seriously I guess.
> pcspeaker beeps all the time, kernel throws dumps on the screen until
> its really dead, sadly blinking 'leds of panic' ;)
Can you please verify if that happens with the current mainline?
Thanks,
Rafael
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong.
[not found] ` <200809051528.54213.rjw-KKrjLPT3xs0@public.gmane.org>
@ 2008-09-05 13:44 ` Mariusz Kozlowski
2008-09-05 16:25 ` Mariusz Kozlowski
0 siblings, 1 reply; 11+ messages in thread
From: Mariusz Kozlowski @ 2008-09-05 13:44 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Andrew Morton, bzolnier-Re5JQEeQqe8AvxtiuMwx3w,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
kernel-testers-u79uwXL29TY76Z2rM5mHXA,
linux-ide-u79uwXL29TY76Z2rM5mHXA
Witam,
> > Again 100% reproducible rmmod ide-cd_mod problem. Kernel is tainted because
> > of earlier sysfs acpi problems similar (probably identical) to those reported
> > by Li Zefan here http://marc.info/?l=linux-kernel&m=121921059026064&w=2
> >
> > Steps to reproduce: unload ide-cd_mod
> >
> > kobject (dd9e4a7c): tried to init an initialized object, something is seriously wrong.
> > Pid: 4734, comm: modprobe Tainted: G W 2.6.27-rc5-mm1 #1
> > [<c01ec982>] kobject_init+0xc4/0xc9
> > [<c02cb84a>] ? _spin_unlock+0x27/0x3f
> > [<c01aff2e>] ? sysfs_find_dirent+0x21/0x2b
> > [<c01aff7e>] ? __sysfs_add_one+0x46/0x6d
> > [<c01affb4>] ? sysfs_add_one+0xf/0x44
> > [<c01b0036>] ? sysfs_addrm_start+0x4d/0x90
> > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > [<c01ec9c5>] kobject_init_and_add+0x14/0x30
> > [<c01b1009>] ? sysfs_create_link+0x12/0x19
> > [<c01e8bad>] blk_register_filter+0x3b/0x46
> > [<ded9e40a>] ide_cd_probe+0x253/0x5a8 [ide_cd_mod]
> > [<c01b0000>] ? sysfs_addrm_start+0x17/0x90
> > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > [<c01b004e>] ? sysfs_addrm_start+0x65/0x90
> > [<c025145f>] generic_ide_probe+0x1f/0x21
> > [<c024c002>] driver_probe_device+0x77/0x15b
> > [<c02cb91b>] ? _spin_unlock_irqrestore+0x39/0x60
> > [<c024c146>] __driver_attach+0x60/0x62
> > [<c024b7bd>] bus_for_each_dev+0x44/0x62
> > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > [<c024bead>] driver_attach+0x19/0x1b
> > [<c024c0e6>] ? __driver_attach+0x0/0x62
> > [<c024bca8>] bus_add_driver+0x1ab/0x213
> > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > [<c024c291>] driver_register+0x4f/0x118
> > [<de7bf000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > [<de7bf00d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > [<c0101114>] do_one_initcall+0x24/0x12f
> > [<c02c9d8e>] ? mutex_unlock+0x8/0xa
> > [<c01455ca>] sys_init_module+0xa5/0x1c1
> > [<c0176a0a>] ? sys_read+0x3d/0x64
> > [<c01030f1>] sysenter_do_call+0x12/0x35
> > [<c012007b>] ? __set_special_pids+0x43/0x71
> >
> > First time I modprobe/rmmod ide-cd_mod the system works but quickly gets unstable.
> > Second modprobe/rmmod is 100% fatal. Memory gets corruped seriously I guess.
> > pcspeaker beeps all the time, kernel throws dumps on the screen until
> > its really dead, sadly blinking 'leds of panic' ;)
>
> Can you please verify if that happens with the current mainline?
Oops. How come I didn't find it earlier? hmm...
This is current mainline:
kobject (ddb049fc): tried to init an initialized object, something is seriously wrong.
Pid: 4650, comm: modprobe Not tainted 2.6.27-rc5-00132-gb380b0d #8
[<c01e3196>] kobject_init+0x6a/0x6c
[<c01e35cb>] kobject_init_and_add+0x14/0x30
[<c01e32f7>] ? kobject_get+0x12/0x17
[<c01df89c>] blk_register_filter+0x4b/0x5a
[<de839310>] ide_cd_probe+0x289/0x5ae [ide_cd_mod]
[<c01aad99>] ? sysfs_addrm_start+0x65/0x90
[<c01aba69>] ? sysfs_do_create_link+0x9a/0x11c
[<c024f7a0>] generic_ide_probe+0x1f/0x21
[<c024a672>] driver_probe_device+0x77/0x15b
[<c02c8bdb>] ? _spin_unlock_irqrestore+0x39/0x60
[<c024a7b6>] __driver_attach+0x60/0x62
[<c0249e2a>] bus_for_each_dev+0x44/0x62
[<c024f7a2>] ? generic_ide_remove+0x0/0x1e
[<c024a51d>] driver_attach+0x19/0x1b
[<c024a756>] ? __driver_attach+0x0/0x62
[<c024a318>] bus_add_driver+0x1ae/0x216
[<c024f7a2>] ? generic_ide_remove+0x0/0x1e
[<c024a901>] driver_register+0x4f/0x118
[<dee3500d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
[<c010111a>] do_one_initcall+0x2a/0x14c
[<c0108560>] ? native_sched_clock+0x58/0xa1
[<dee35000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
[<c013d042>] ? trace_hardirqs_on+0xb/0xd
[<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
[<c0147083>] sys_init_module+0x7e/0x19f
[<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
[<c01e8144>] ? trace_hardirqs_on_thunk+0xc/0x10
[<c0103035>] sysenter_do_call+0x12/0x35
[<c012007b>] ? put_fs_struct+0x5/0x2e
=======================
=============================================================================
BUG kmalloc-16: Object already free
-----------------------------------------------------------------------------
INFO: Allocated in kvasprintf+0x2d/0x4c age=23609 cpu=0 pid=743
INFO: Freed in kobject_release+0x3a/0x56 age=45 cpu=0 pid=4645
INFO: Slab 0xc13b74e0 objects=64 used=45 fp=0xddba70c0 flags=0x40000083
INFO: Object 0xddba7400 @offset=1024 fp=0xddba7440
Bytes b4 0xddba73f0: 25 12 00 00 b4 43 ff ff 5a 5a 5a 5a 5a 5a 5a 5a %...´CÿÿZZZZZZZZ
Object 0xddba7400: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkkkkkkkkkk¥
Redzone 0xddba7410: bb bb bb bb »»»»
Padding 0xddba7438: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ
Pid: 4650, comm: modprobe Not tainted 2.6.27-rc5-00132-gb380b0d #8
[<c016cf7e>] print_trailer+0xca/0x105
[<c016d09e>] object_err+0x31/0x39
[<c016db93>] __slab_free+0x1aa/0x320
[<c016e74d>] kfree+0x85/0xee
[<c01e3562>] ? kobject_set_name_vargs+0x3a/0x42
[<c01e3562>] ? kobject_set_name_vargs+0x3a/0x42
[<c01e3562>] kobject_set_name_vargs+0x3a/0x42
[<c01e3585>] kobject_add_varg+0x1b/0x4d
[<c01e35e1>] kobject_init_and_add+0x2a/0x30
[<c01df89c>] blk_register_filter+0x4b/0x5a
[<de839310>] ide_cd_probe+0x289/0x5ae [ide_cd_mod]
[<c01aad99>] ? sysfs_addrm_start+0x65/0x90
[<c01aba69>] ? sysfs_do_create_link+0x9a/0x11c
[<c024f7a0>] generic_ide_probe+0x1f/0x21
[<c024a672>] driver_probe_device+0x77/0x15b
[<c02c8bdb>] ? _spin_unlock_irqrestore+0x39/0x60
[<c024a7b6>] __driver_attach+0x60/0x62
[<c0249e2a>] bus_for_each_dev+0x44/0x62
[<c024f7a2>] ? generic_ide_remove+0x0/0x1e
[<c024a51d>] driver_attach+0x19/0x1b
[<c024a756>] ? __driver_attach+0x0/0x62
[<c024a318>] bus_add_driver+0x1ae/0x216
[<c024f7a2>] ? generic_ide_remove+0x0/0x1e
[<c024a901>] driver_register+0x4f/0x118
[<dee3500d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
[<c010111a>] do_one_initcall+0x2a/0x14c
[<c0108560>] ? native_sched_clock+0x58/0xa1
[<dee35000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
[<c013d042>] ? trace_hardirqs_on+0xb/0xd
[<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
[<c0147083>] sys_init_module+0x7e/0x19f
[<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
[<c01e8144>] ? trace_hardirqs_on_thunk+0xc/0x10
[<c0103035>] sysenter_do_call+0x12/0x35
[<c012007b>] ? put_fs_struct+0x5/0x2e
=======================
FIX kmalloc-16: Object at 0xddba7400 not freed
Mariusz
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong.
2008-09-05 13:44 ` Mariusz Kozlowski
@ 2008-09-05 16:25 ` Mariusz Kozlowski
[not found] ` <200809051825.04829.m.kozlowski-NWF1p15JEu3VItvQsEIGlw@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: Mariusz Kozlowski @ 2008-09-05 16:25 UTC (permalink / raw)
To: Rafael J. Wysocki, FUJITA Tomonori, Jens Axboe
Cc: Andrew Morton, bzolnier, linux-kernel, kernel-testers, linux-ide
Hello,
> > > Again 100% reproducible rmmod ide-cd_mod problem. Kernel is tainted because
> > > of earlier sysfs acpi problems similar (probably identical) to those reported
> > > by Li Zefan here http://marc.info/?l=linux-kernel&m=121921059026064&w=2
> > >
> > > Steps to reproduce: unload ide-cd_mod
> > >
> > > kobject (dd9e4a7c): tried to init an initialized object, something is seriously wrong.
> > > Pid: 4734, comm: modprobe Tainted: G W 2.6.27-rc5-mm1 #1
> > > [<c01ec982>] kobject_init+0xc4/0xc9
> > > [<c02cb84a>] ? _spin_unlock+0x27/0x3f
> > > [<c01aff2e>] ? sysfs_find_dirent+0x21/0x2b
> > > [<c01aff7e>] ? __sysfs_add_one+0x46/0x6d
> > > [<c01affb4>] ? sysfs_add_one+0xf/0x44
> > > [<c01b0036>] ? sysfs_addrm_start+0x4d/0x90
> > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > [<c01ec9c5>] kobject_init_and_add+0x14/0x30
> > > [<c01b1009>] ? sysfs_create_link+0x12/0x19
> > > [<c01e8bad>] blk_register_filter+0x3b/0x46
> > > [<ded9e40a>] ide_cd_probe+0x253/0x5a8 [ide_cd_mod]
> > > [<c01b0000>] ? sysfs_addrm_start+0x17/0x90
> > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > [<c01b004e>] ? sysfs_addrm_start+0x65/0x90
> > > [<c025145f>] generic_ide_probe+0x1f/0x21
> > > [<c024c002>] driver_probe_device+0x77/0x15b
> > > [<c02cb91b>] ? _spin_unlock_irqrestore+0x39/0x60
> > > [<c024c146>] __driver_attach+0x60/0x62
> > > [<c024b7bd>] bus_for_each_dev+0x44/0x62
> > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > [<c024bead>] driver_attach+0x19/0x1b
> > > [<c024c0e6>] ? __driver_attach+0x0/0x62
> > > [<c024bca8>] bus_add_driver+0x1ab/0x213
> > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > [<c024c291>] driver_register+0x4f/0x118
> > > [<de7bf000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > > [<de7bf00d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > > [<c0101114>] do_one_initcall+0x24/0x12f
> > > [<c02c9d8e>] ? mutex_unlock+0x8/0xa
> > > [<c01455ca>] sys_init_module+0xa5/0x1c1
> > > [<c0176a0a>] ? sys_read+0x3d/0x64
> > > [<c01030f1>] sysenter_do_call+0x12/0x35
> > > [<c012007b>] ? __set_special_pids+0x43/0x71
> > >
> > > First time I modprobe/rmmod ide-cd_mod the system works but quickly gets unstable.
> > > Second modprobe/rmmod is 100% fatal. Memory gets corruped seriously I guess.
> > > pcspeaker beeps all the time, kernel throws dumps on the screen until
> > > its really dead, sadly blinking 'leds of panic' ;)
> >
> > Can you please verify if that happens with the current mainline?
>
> Oops. How come I didn't find it earlier? hmm...
It's relatively new, that's why :) And this is the culprit:
abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 is first bad commit
commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4
Author: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Date: Sat Aug 16 14:10:05 2008 +0900
block: move cmdfilter from gendisk to request_queue
cmd_filter works only for the block layer SG_IO with SCSI block
devices. It breaks scsi/sg.c, bsg, and the block layer SG_IO with SCSI
character devices (such as st). We hit a kernel crash with them.
The problem is that cmd_filter code accesses to gendisk (having struct
blk_scsi_cmd_filter) via inode->i_bdev->bd_disk. It works for only
SCSI block device files. With character device files, inode->i_bdev
leads you to struct cdev. inode->i_bdev->bd_disk->blk_scsi_cmd_filter
isn't safe.
SCSI ULDs don't expose gendisk; they keep it private. bsg needs to be
independent on any protocols. We shouldn't change ULDs to expose their
gendisk.
This patch moves struct blk_scsi_cmd_filter from gendisk to
request_queue, a common object, which eveyone can access to.
The user interface doesn't change; users can change the filters via
/sys/block/. gendisk has a pointer to request_queue so the cmd_filter
code accesses to struct blk_scsi_cmd_filter.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
> This is current mainline:
>
> kobject (ddb049fc): tried to init an initialized object, something is seriously wrong.
> Pid: 4650, comm: modprobe Not tainted 2.6.27-rc5-00132-gb380b0d #8
> [<c01e3196>] kobject_init+0x6a/0x6c
> [<c01e35cb>] kobject_init_and_add+0x14/0x30
> [<c01e32f7>] ? kobject_get+0x12/0x17
> [<c01df89c>] blk_register_filter+0x4b/0x5a
> [<de839310>] ide_cd_probe+0x289/0x5ae [ide_cd_mod]
> [<c01aad99>] ? sysfs_addrm_start+0x65/0x90
> [<c01aba69>] ? sysfs_do_create_link+0x9a/0x11c
> [<c024f7a0>] generic_ide_probe+0x1f/0x21
> [<c024a672>] driver_probe_device+0x77/0x15b
> [<c02c8bdb>] ? _spin_unlock_irqrestore+0x39/0x60
> [<c024a7b6>] __driver_attach+0x60/0x62
> [<c0249e2a>] bus_for_each_dev+0x44/0x62
> [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> [<c024a51d>] driver_attach+0x19/0x1b
> [<c024a756>] ? __driver_attach+0x0/0x62
> [<c024a318>] bus_add_driver+0x1ae/0x216
> [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> [<c024a901>] driver_register+0x4f/0x118
> [<dee3500d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> [<c010111a>] do_one_initcall+0x2a/0x14c
> [<c0108560>] ? native_sched_clock+0x58/0xa1
> [<dee35000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> [<c013d042>] ? trace_hardirqs_on+0xb/0xd
> [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> [<c0147083>] sys_init_module+0x7e/0x19f
> [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> [<c01e8144>] ? trace_hardirqs_on_thunk+0xc/0x10
> [<c0103035>] sysenter_do_call+0x12/0x35
> [<c012007b>] ? put_fs_struct+0x5/0x2e
> =======================
> =============================================================================
> BUG kmalloc-16: Object already free
> -----------------------------------------------------------------------------
>
> INFO: Allocated in kvasprintf+0x2d/0x4c age=23609 cpu=0 pid=743
> INFO: Freed in kobject_release+0x3a/0x56 age=45 cpu=0 pid=4645
> INFO: Slab 0xc13b74e0 objects=64 used=45 fp=0xddba70c0 flags=0x40000083
> INFO: Object 0xddba7400 @offset=1024 fp=0xddba7440
>
> Bytes b4 0xddba73f0: 25 12 00 00 b4 43 ff ff 5a 5a 5a 5a 5a 5a 5a 5a %...´CÿÿZZZZZZZZ
> Object 0xddba7400: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkkkkkkkkkk¥
> Redzone 0xddba7410: bb bb bb bb »»»»
> Padding 0xddba7438: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ
> Pid: 4650, comm: modprobe Not tainted 2.6.27-rc5-00132-gb380b0d #8
> [<c016cf7e>] print_trailer+0xca/0x105
> [<c016d09e>] object_err+0x31/0x39
> [<c016db93>] __slab_free+0x1aa/0x320
> [<c016e74d>] kfree+0x85/0xee
> [<c01e3562>] ? kobject_set_name_vargs+0x3a/0x42
> [<c01e3562>] ? kobject_set_name_vargs+0x3a/0x42
> [<c01e3562>] kobject_set_name_vargs+0x3a/0x42
> [<c01e3585>] kobject_add_varg+0x1b/0x4d
> [<c01e35e1>] kobject_init_and_add+0x2a/0x30
> [<c01df89c>] blk_register_filter+0x4b/0x5a
> [<de839310>] ide_cd_probe+0x289/0x5ae [ide_cd_mod]
> [<c01aad99>] ? sysfs_addrm_start+0x65/0x90
> [<c01aba69>] ? sysfs_do_create_link+0x9a/0x11c
> [<c024f7a0>] generic_ide_probe+0x1f/0x21
> [<c024a672>] driver_probe_device+0x77/0x15b
> [<c02c8bdb>] ? _spin_unlock_irqrestore+0x39/0x60
> [<c024a7b6>] __driver_attach+0x60/0x62
> [<c0249e2a>] bus_for_each_dev+0x44/0x62
> [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> [<c024a51d>] driver_attach+0x19/0x1b
> [<c024a756>] ? __driver_attach+0x0/0x62
> [<c024a318>] bus_add_driver+0x1ae/0x216
> [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> [<c024a901>] driver_register+0x4f/0x118
> [<dee3500d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> [<c010111a>] do_one_initcall+0x2a/0x14c
> [<c0108560>] ? native_sched_clock+0x58/0xa1
> [<dee35000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> [<c013d042>] ? trace_hardirqs_on+0xb/0xd
> [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> [<c0147083>] sys_init_module+0x7e/0x19f
> [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> [<c01e8144>] ? trace_hardirqs_on_thunk+0xc/0x10
> [<c0103035>] sysenter_do_call+0x12/0x35
> [<c012007b>] ? put_fs_struct+0x5/0x2e
> =======================
> FIX kmalloc-16: Object at 0xddba7400 not freed
And this is another one, this time from sparc64 on 2.6.27-rc5-mm1.
To reproduce just rmmod sr_mod.
sr0: scsi3-mmc drive: 24x/24x writer cd/rw xa/form2 cdda tray
kobject (fffff800bf669068): tried to init an initialized object, something is seriously wrong.
Call Trace:
[0000000000559770] kobject_init_and_add+0x10/0x40
[0000000000552764] blk_register_filter+0x24/0x40
[00000000100dc8ec] sr_probe+0x56c/0x620 [sr_mod]
[00000000005b0d4c] driver_probe_device+0x8c/0x1c0
[00000000005b0ed4] __driver_attach+0x54/0x80
[00000000005b0304] bus_for_each_dev+0x44/0x80
[00000000005b07c0] bus_add_driver+0xa0/0x240
[00000000005b10c4] driver_register+0x44/0x140
[00000000100e6028] init_sr+0x28/0x60 [sr_mod]
[0000000000426a5c] do_one_initcall+0x1c/0x140
[00000000004890ac] sys_init_module+0xac/0x1c0
[0000000000406254] linux_sparc_syscall32+0x34/0x40
=============================================================================
BUG kmalloc-16: Object already free
-----------------------------------------------------------------------------
INFO: Allocated in kvasprintf+0x2c/0x60 age=6962 cpu=0 pid=520
INFO: Freed in kref_put+0x3c/0x80 age=10 cpu=0 pid=3212
INFO: Slab 0x00000002014eba10 objects=93 used=81 fp=0xfffff800bf45d3f0 flags=0x0083
INFO: Object 0xfffff800bf45d6b0 @offset=5808 fp=0xfffff800bf45d708
Bytes b4 0xfffff800bf45d6a0: 00 00 00 00 ff ff ad 53 5a 5a 5a 5a 5a 5a 5a 5a ....ÿÿSZZZZZZZZ
Object 0xfffff800bf45d6b0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkkkkkkkkkk¥
Redzone 0xfffff800bf45d6c0: bb bb bb bb bb bb bb bb »»»»»»»»
Padding 0xfffff800bf45d700: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ
Call Trace:
[00000000004bdbd8] kfree+0x98/0x140
[0000000000559704] kobject_set_name_vargs+0x44/0x60
[000000000055972c] kobject_add_varg+0xc/0x40
[0000000000559788] kobject_init_and_add+0x28/0x40
[0000000000552764] blk_register_filter+0x24/0x40
[00000000100dc8ec] sr_probe+0x56c/0x620 [sr_mod]
[00000000005b0d4c] driver_probe_device+0x8c/0x1c0
[00000000005b0ed4] __driver_attach+0x54/0x80
[00000000005b0304] bus_for_each_dev+0x44/0x80
[00000000005b07c0] bus_add_driver+0xa0/0x240
[00000000005b10c4] driver_register+0x44/0x140
[00000000100e6028] init_sr+0x28/0x60 [sr_mod]
[0000000000426a5c] do_one_initcall+0x1c/0x140
[00000000004890ac] sys_init_module+0xac/0x1c0
[0000000000406254] linux_sparc_syscall32+0x34/0x40
FIX kmalloc-16: Object at 0xfffff800bf45d6b0 not freed
sr 0:0:6:0: Attached scsi CD-ROM sr0
Mariusz
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong.
[not found] ` <200809051825.04829.m.kozlowski-NWF1p15JEu3VItvQsEIGlw@public.gmane.org>
@ 2008-09-06 12:35 ` FUJITA Tomonori
[not found] ` <20080906213525V.fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: FUJITA Tomonori @ 2008-09-06 12:35 UTC (permalink / raw)
To: m.kozlowski-NWF1p15JEu3VItvQsEIGlw
Cc: rjw-KKrjLPT3xs0, fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg,
jens.axboe-QHcLZuEGTsvQT0dZR+AlfA,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b,
bzolnier-Re5JQEeQqe8AvxtiuMwx3w,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
kernel-testers-u79uwXL29TY76Z2rM5mHXA,
linux-ide-u79uwXL29TY76Z2rM5mHXA
On Fri, 5 Sep 2008 18:25:04 +0200
Mariusz Kozlowski <m.kozlowski-NWF1p15JEu3VItvQsEIGlw@public.gmane.org> wrote:
> Hello,
>
> > > > Again 100% reproducible rmmod ide-cd_mod problem. Kernel is tainted because
> > > > of earlier sysfs acpi problems similar (probably identical) to those reported
> > > > by Li Zefan here http://marc.info/?l=linux-kernel&m=121921059026064&w=2
> > > >
> > > > Steps to reproduce: unload ide-cd_mod
> > > >
> > > > kobject (dd9e4a7c): tried to init an initialized object, something is seriously wrong.
> > > > Pid: 4734, comm: modprobe Tainted: G W 2.6.27-rc5-mm1 #1
> > > > [<c01ec982>] kobject_init+0xc4/0xc9
> > > > [<c02cb84a>] ? _spin_unlock+0x27/0x3f
> > > > [<c01aff2e>] ? sysfs_find_dirent+0x21/0x2b
> > > > [<c01aff7e>] ? __sysfs_add_one+0x46/0x6d
> > > > [<c01affb4>] ? sysfs_add_one+0xf/0x44
> > > > [<c01b0036>] ? sysfs_addrm_start+0x4d/0x90
> > > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > > [<c01ec9c5>] kobject_init_and_add+0x14/0x30
> > > > [<c01b1009>] ? sysfs_create_link+0x12/0x19
> > > > [<c01e8bad>] blk_register_filter+0x3b/0x46
> > > > [<ded9e40a>] ide_cd_probe+0x253/0x5a8 [ide_cd_mod]
> > > > [<c01b0000>] ? sysfs_addrm_start+0x17/0x90
> > > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > > [<c01b004e>] ? sysfs_addrm_start+0x65/0x90
> > > > [<c025145f>] generic_ide_probe+0x1f/0x21
> > > > [<c024c002>] driver_probe_device+0x77/0x15b
> > > > [<c02cb91b>] ? _spin_unlock_irqrestore+0x39/0x60
> > > > [<c024c146>] __driver_attach+0x60/0x62
> > > > [<c024b7bd>] bus_for_each_dev+0x44/0x62
> > > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > > [<c024bead>] driver_attach+0x19/0x1b
> > > > [<c024c0e6>] ? __driver_attach+0x0/0x62
> > > > [<c024bca8>] bus_add_driver+0x1ab/0x213
> > > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > > [<c024c291>] driver_register+0x4f/0x118
> > > > [<de7bf000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > > > [<de7bf00d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > > > [<c0101114>] do_one_initcall+0x24/0x12f
> > > > [<c02c9d8e>] ? mutex_unlock+0x8/0xa
> > > > [<c01455ca>] sys_init_module+0xa5/0x1c1
> > > > [<c0176a0a>] ? sys_read+0x3d/0x64
> > > > [<c01030f1>] sysenter_do_call+0x12/0x35
> > > > [<c012007b>] ? __set_special_pids+0x43/0x71
> > > >
> > > > First time I modprobe/rmmod ide-cd_mod the system works but quickly gets unstable.
> > > > Second modprobe/rmmod is 100% fatal. Memory gets corruped seriously I guess.
> > > > pcspeaker beeps all the time, kernel throws dumps on the screen until
> > > > its really dead, sadly blinking 'leds of panic' ;)
> > >
> > > Can you please verify if that happens with the current mainline?
> >
> > Oops. How come I didn't find it earlier? hmm...
>
> It's relatively new, that's why :) And this is the culprit:
>
> abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 is first bad commit
> commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4
> Author: FUJITA Tomonori <fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
> Date: Sat Aug 16 14:10:05 2008 +0900
>
> block: move cmdfilter from gendisk to request_queue
>
> cmd_filter works only for the block layer SG_IO with SCSI block
> devices. It breaks scsi/sg.c, bsg, and the block layer SG_IO with SCSI
> character devices (such as st). We hit a kernel crash with them.
>
> The problem is that cmd_filter code accesses to gendisk (having struct
> blk_scsi_cmd_filter) via inode->i_bdev->bd_disk. It works for only
> SCSI block device files. With character device files, inode->i_bdev
> leads you to struct cdev. inode->i_bdev->bd_disk->blk_scsi_cmd_filter
> isn't safe.
>
> SCSI ULDs don't expose gendisk; they keep it private. bsg needs to be
> independent on any protocols. We shouldn't change ULDs to expose their
> gendisk.
>
> This patch moves struct blk_scsi_cmd_filter from gendisk to
> request_queue, a common object, which eveyone can access to.
>
> The user interface doesn't change; users can change the filters via
> /sys/block/. gendisk has a pointer to request_queue so the cmd_filter
> code accesses to struct blk_scsi_cmd_filter.
>
> Signed-off-by: FUJITA Tomonori <fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
> Signed-off-by: Jens Axboe <jens.axboe-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
>
> > This is current mainline:
> >
> > kobject (ddb049fc): tried to init an initialized object, something is seriously wrong.
> > Pid: 4650, comm: modprobe Not tainted 2.6.27-rc5-00132-gb380b0d #8
> > [<c01e3196>] kobject_init+0x6a/0x6c
> > [<c01e35cb>] kobject_init_and_add+0x14/0x30
> > [<c01e32f7>] ? kobject_get+0x12/0x17
> > [<c01df89c>] blk_register_filter+0x4b/0x5a
> > [<de839310>] ide_cd_probe+0x289/0x5ae [ide_cd_mod]
> > [<c01aad99>] ? sysfs_addrm_start+0x65/0x90
> > [<c01aba69>] ? sysfs_do_create_link+0x9a/0x11c
> > [<c024f7a0>] generic_ide_probe+0x1f/0x21
> > [<c024a672>] driver_probe_device+0x77/0x15b
> > [<c02c8bdb>] ? _spin_unlock_irqrestore+0x39/0x60
> > [<c024a7b6>] __driver_attach+0x60/0x62
> > [<c0249e2a>] bus_for_each_dev+0x44/0x62
> > [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> > [<c024a51d>] driver_attach+0x19/0x1b
> > [<c024a756>] ? __driver_attach+0x0/0x62
> > [<c024a318>] bus_add_driver+0x1ae/0x216
> > [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> > [<c024a901>] driver_register+0x4f/0x118
> > [<dee3500d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > [<c010111a>] do_one_initcall+0x2a/0x14c
> > [<c0108560>] ? native_sched_clock+0x58/0xa1
> > [<dee35000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > [<c013d042>] ? trace_hardirqs_on+0xb/0xd
> > [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> > [<c0147083>] sys_init_module+0x7e/0x19f
> > [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> > [<c01e8144>] ? trace_hardirqs_on_thunk+0xc/0x10
> > [<c0103035>] sysenter_do_call+0x12/0x35
> > [<c012007b>] ? put_fs_struct+0x5/0x2e
ide-cd uses multiple gendisks share one request_queue?
Here's a patch for mainline.
=
From: FUJITA Tomonori <fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
Subject: [PATCH] ide: remove cmd filter support in ide-cd
Signed-off-by: FUJITA Tomonori <fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
---
drivers/ide/ide-cd.c | 2 --
1 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index f148999..49a8c58 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -1933,7 +1933,6 @@ static void ide_cd_remove(ide_drive_t *drive)
ide_proc_unregister_driver(drive, info->driver);
- blk_unregister_filter(info->disk);
del_gendisk(info->disk);
ide_cd_put(info);
@@ -2159,7 +2158,6 @@ static int ide_cd_probe(ide_drive_t *drive)
g->fops = &idecd_ops;
g->flags |= GENHD_FL_REMOVABLE;
add_disk(g);
- blk_register_filter(g);
return 0;
out_free_cd:
--
1.5.4.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong.
[not found] ` <20080906213525V.fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
@ 2008-09-08 8:43 ` Jens Axboe
[not found] ` <20080908084312.GF20055-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: Jens Axboe @ 2008-09-08 8:43 UTC (permalink / raw)
To: FUJITA Tomonori
Cc: m.kozlowski-NWF1p15JEu3VItvQsEIGlw, rjw-KKrjLPT3xs0,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b,
bzolnier-Re5JQEeQqe8AvxtiuMwx3w,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
kernel-testers-u79uwXL29TY76Z2rM5mHXA,
linux-ide-u79uwXL29TY76Z2rM5mHXA
On Sat, Sep 06 2008, FUJITA Tomonori wrote:
> On Fri, 5 Sep 2008 18:25:04 +0200
> Mariusz Kozlowski <m.kozlowski-NWF1p15JEu3VItvQsEIGlw@public.gmane.org> wrote:
>
> > Hello,
> >
> > > > > Again 100% reproducible rmmod ide-cd_mod problem. Kernel is tainted because
> > > > > of earlier sysfs acpi problems similar (probably identical) to those reported
> > > > > by Li Zefan here http://marc.info/?l=linux-kernel&m=121921059026064&w=2
> > > > >
> > > > > Steps to reproduce: unload ide-cd_mod
> > > > >
> > > > > kobject (dd9e4a7c): tried to init an initialized object, something is seriously wrong.
> > > > > Pid: 4734, comm: modprobe Tainted: G W 2.6.27-rc5-mm1 #1
> > > > > [<c01ec982>] kobject_init+0xc4/0xc9
> > > > > [<c02cb84a>] ? _spin_unlock+0x27/0x3f
> > > > > [<c01aff2e>] ? sysfs_find_dirent+0x21/0x2b
> > > > > [<c01aff7e>] ? __sysfs_add_one+0x46/0x6d
> > > > > [<c01affb4>] ? sysfs_add_one+0xf/0x44
> > > > > [<c01b0036>] ? sysfs_addrm_start+0x4d/0x90
> > > > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > > > [<c01ec9c5>] kobject_init_and_add+0x14/0x30
> > > > > [<c01b1009>] ? sysfs_create_link+0x12/0x19
> > > > > [<c01e8bad>] blk_register_filter+0x3b/0x46
> > > > > [<ded9e40a>] ide_cd_probe+0x253/0x5a8 [ide_cd_mod]
> > > > > [<c01b0000>] ? sysfs_addrm_start+0x17/0x90
> > > > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > > > [<c01b004e>] ? sysfs_addrm_start+0x65/0x90
> > > > > [<c025145f>] generic_ide_probe+0x1f/0x21
> > > > > [<c024c002>] driver_probe_device+0x77/0x15b
> > > > > [<c02cb91b>] ? _spin_unlock_irqrestore+0x39/0x60
> > > > > [<c024c146>] __driver_attach+0x60/0x62
> > > > > [<c024b7bd>] bus_for_each_dev+0x44/0x62
> > > > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > > > [<c024bead>] driver_attach+0x19/0x1b
> > > > > [<c024c0e6>] ? __driver_attach+0x0/0x62
> > > > > [<c024bca8>] bus_add_driver+0x1ab/0x213
> > > > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > > > [<c024c291>] driver_register+0x4f/0x118
> > > > > [<de7bf000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > > > > [<de7bf00d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > > > > [<c0101114>] do_one_initcall+0x24/0x12f
> > > > > [<c02c9d8e>] ? mutex_unlock+0x8/0xa
> > > > > [<c01455ca>] sys_init_module+0xa5/0x1c1
> > > > > [<c0176a0a>] ? sys_read+0x3d/0x64
> > > > > [<c01030f1>] sysenter_do_call+0x12/0x35
> > > > > [<c012007b>] ? __set_special_pids+0x43/0x71
> > > > >
> > > > > First time I modprobe/rmmod ide-cd_mod the system works but quickly gets unstable.
> > > > > Second modprobe/rmmod is 100% fatal. Memory gets corruped seriously I guess.
> > > > > pcspeaker beeps all the time, kernel throws dumps on the screen until
> > > > > its really dead, sadly blinking 'leds of panic' ;)
> > > >
> > > > Can you please verify if that happens with the current mainline?
> > >
> > > Oops. How come I didn't find it earlier? hmm...
> >
> > It's relatively new, that's why :) And this is the culprit:
> >
> > abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 is first bad commit
> > commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4
> > Author: FUJITA Tomonori <fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
> > Date: Sat Aug 16 14:10:05 2008 +0900
> >
> > block: move cmdfilter from gendisk to request_queue
> >
> > cmd_filter works only for the block layer SG_IO with SCSI block
> > devices. It breaks scsi/sg.c, bsg, and the block layer SG_IO with SCSI
> > character devices (such as st). We hit a kernel crash with them.
> >
> > The problem is that cmd_filter code accesses to gendisk (having struct
> > blk_scsi_cmd_filter) via inode->i_bdev->bd_disk. It works for only
> > SCSI block device files. With character device files, inode->i_bdev
> > leads you to struct cdev. inode->i_bdev->bd_disk->blk_scsi_cmd_filter
> > isn't safe.
> >
> > SCSI ULDs don't expose gendisk; they keep it private. bsg needs to be
> > independent on any protocols. We shouldn't change ULDs to expose their
> > gendisk.
> >
> > This patch moves struct blk_scsi_cmd_filter from gendisk to
> > request_queue, a common object, which eveyone can access to.
> >
> > The user interface doesn't change; users can change the filters via
> > /sys/block/. gendisk has a pointer to request_queue so the cmd_filter
> > code accesses to struct blk_scsi_cmd_filter.
> >
> > Signed-off-by: FUJITA Tomonori <fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
> > Signed-off-by: Jens Axboe <jens.axboe-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
> >
> > > This is current mainline:
> > >
> > > kobject (ddb049fc): tried to init an initialized object, something is seriously wrong.
> > > Pid: 4650, comm: modprobe Not tainted 2.6.27-rc5-00132-gb380b0d #8
> > > [<c01e3196>] kobject_init+0x6a/0x6c
> > > [<c01e35cb>] kobject_init_and_add+0x14/0x30
> > > [<c01e32f7>] ? kobject_get+0x12/0x17
> > > [<c01df89c>] blk_register_filter+0x4b/0x5a
> > > [<de839310>] ide_cd_probe+0x289/0x5ae [ide_cd_mod]
> > > [<c01aad99>] ? sysfs_addrm_start+0x65/0x90
> > > [<c01aba69>] ? sysfs_do_create_link+0x9a/0x11c
> > > [<c024f7a0>] generic_ide_probe+0x1f/0x21
> > > [<c024a672>] driver_probe_device+0x77/0x15b
> > > [<c02c8bdb>] ? _spin_unlock_irqrestore+0x39/0x60
> > > [<c024a7b6>] __driver_attach+0x60/0x62
> > > [<c0249e2a>] bus_for_each_dev+0x44/0x62
> > > [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> > > [<c024a51d>] driver_attach+0x19/0x1b
> > > [<c024a756>] ? __driver_attach+0x0/0x62
> > > [<c024a318>] bus_add_driver+0x1ae/0x216
> > > [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> > > [<c024a901>] driver_register+0x4f/0x118
> > > [<dee3500d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > > [<c010111a>] do_one_initcall+0x2a/0x14c
> > > [<c0108560>] ? native_sched_clock+0x58/0xa1
> > > [<dee35000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > > [<c013d042>] ? trace_hardirqs_on+0xb/0xd
> > > [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> > > [<c0147083>] sys_init_module+0x7e/0x19f
> > > [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> > > [<c01e8144>] ? trace_hardirqs_on_thunk+0xc/0x10
> > > [<c0103035>] sysenter_do_call+0x12/0x35
> > > [<c012007b>] ? put_fs_struct+0x5/0x2e
>
> ide-cd uses multiple gendisks share one request_queue?
>
> Here's a patch for mainline.
Hmm, I don't think that it does. There's a queue per drive in the old
IDE driver, so there should be a 1:1 relation between queues and gendisk
there.
>
> =
> From: FUJITA Tomonori <fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
> Subject: [PATCH] ide: remove cmd filter support in ide-cd
>
> Signed-off-by: FUJITA Tomonori <fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
> ---
> drivers/ide/ide-cd.c | 2 --
> 1 files changed, 0 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
> index f148999..49a8c58 100644
> --- a/drivers/ide/ide-cd.c
> +++ b/drivers/ide/ide-cd.c
> @@ -1933,7 +1933,6 @@ static void ide_cd_remove(ide_drive_t *drive)
>
> ide_proc_unregister_driver(drive, info->driver);
>
> - blk_unregister_filter(info->disk);
> del_gendisk(info->disk);
>
> ide_cd_put(info);
> @@ -2159,7 +2158,6 @@ static int ide_cd_probe(ide_drive_t *drive)
> g->fops = &idecd_ops;
> g->flags |= GENHD_FL_REMOVABLE;
> add_disk(g);
> - blk_register_filter(g);
> return 0;
>
> out_free_cd:
> --
> 1.5.4.2
>
--
Jens Axboe
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong.
[not found] ` <20080908084312.GF20055-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
@ 2008-09-08 9:27 ` Jens Axboe
2008-09-09 9:07 ` Mariusz Kozlowski
0 siblings, 1 reply; 11+ messages in thread
From: Jens Axboe @ 2008-09-08 9:27 UTC (permalink / raw)
To: FUJITA Tomonori
Cc: m.kozlowski-NWF1p15JEu3VItvQsEIGlw, rjw-KKrjLPT3xs0,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b,
bzolnier-Re5JQEeQqe8AvxtiuMwx3w,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
kernel-testers-u79uwXL29TY76Z2rM5mHXA,
linux-ide-u79uwXL29TY76Z2rM5mHXA
On Mon, Sep 08 2008, Jens Axboe wrote:
> On Sat, Sep 06 2008, FUJITA Tomonori wrote:
> > On Fri, 5 Sep 2008 18:25:04 +0200
> > Mariusz Kozlowski <m.kozlowski-NWF1p15JEu3VItvQsEIGlw@public.gmane.org> wrote:
> >
> > > Hello,
> > >
> > > > > > Again 100% reproducible rmmod ide-cd_mod problem. Kernel is tainted because
> > > > > > of earlier sysfs acpi problems similar (probably identical) to those reported
> > > > > > by Li Zefan here http://marc.info/?l=linux-kernel&m=121921059026064&w=2
> > > > > >
> > > > > > Steps to reproduce: unload ide-cd_mod
> > > > > >
> > > > > > kobject (dd9e4a7c): tried to init an initialized object, something is seriously wrong.
> > > > > > Pid: 4734, comm: modprobe Tainted: G W 2.6.27-rc5-mm1 #1
> > > > > > [<c01ec982>] kobject_init+0xc4/0xc9
> > > > > > [<c02cb84a>] ? _spin_unlock+0x27/0x3f
> > > > > > [<c01aff2e>] ? sysfs_find_dirent+0x21/0x2b
> > > > > > [<c01aff7e>] ? __sysfs_add_one+0x46/0x6d
> > > > > > [<c01affb4>] ? sysfs_add_one+0xf/0x44
> > > > > > [<c01b0036>] ? sysfs_addrm_start+0x4d/0x90
> > > > > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > > > > [<c01ec9c5>] kobject_init_and_add+0x14/0x30
> > > > > > [<c01b1009>] ? sysfs_create_link+0x12/0x19
> > > > > > [<c01e8bad>] blk_register_filter+0x3b/0x46
> > > > > > [<ded9e40a>] ide_cd_probe+0x253/0x5a8 [ide_cd_mod]
> > > > > > [<c01b0000>] ? sysfs_addrm_start+0x17/0x90
> > > > > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > > > > [<c01b004e>] ? sysfs_addrm_start+0x65/0x90
> > > > > > [<c025145f>] generic_ide_probe+0x1f/0x21
> > > > > > [<c024c002>] driver_probe_device+0x77/0x15b
> > > > > > [<c02cb91b>] ? _spin_unlock_irqrestore+0x39/0x60
> > > > > > [<c024c146>] __driver_attach+0x60/0x62
> > > > > > [<c024b7bd>] bus_for_each_dev+0x44/0x62
> > > > > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > > > > [<c024bead>] driver_attach+0x19/0x1b
> > > > > > [<c024c0e6>] ? __driver_attach+0x0/0x62
> > > > > > [<c024bca8>] bus_add_driver+0x1ab/0x213
> > > > > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > > > > [<c024c291>] driver_register+0x4f/0x118
> > > > > > [<de7bf000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > > > > > [<de7bf00d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > > > > > [<c0101114>] do_one_initcall+0x24/0x12f
> > > > > > [<c02c9d8e>] ? mutex_unlock+0x8/0xa
> > > > > > [<c01455ca>] sys_init_module+0xa5/0x1c1
> > > > > > [<c0176a0a>] ? sys_read+0x3d/0x64
> > > > > > [<c01030f1>] sysenter_do_call+0x12/0x35
> > > > > > [<c012007b>] ? __set_special_pids+0x43/0x71
> > > > > >
> > > > > > First time I modprobe/rmmod ide-cd_mod the system works but quickly gets unstable.
> > > > > > Second modprobe/rmmod is 100% fatal. Memory gets corruped seriously I guess.
> > > > > > pcspeaker beeps all the time, kernel throws dumps on the screen until
> > > > > > its really dead, sadly blinking 'leds of panic' ;)
> > > > >
> > > > > Can you please verify if that happens with the current mainline?
> > > >
> > > > Oops. How come I didn't find it earlier? hmm...
> > >
> > > It's relatively new, that's why :) And this is the culprit:
> > >
> > > abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 is first bad commit
> > > commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4
> > > Author: FUJITA Tomonori <fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
> > > Date: Sat Aug 16 14:10:05 2008 +0900
> > >
> > > block: move cmdfilter from gendisk to request_queue
> > >
> > > cmd_filter works only for the block layer SG_IO with SCSI block
> > > devices. It breaks scsi/sg.c, bsg, and the block layer SG_IO with SCSI
> > > character devices (such as st). We hit a kernel crash with them.
> > >
> > > The problem is that cmd_filter code accesses to gendisk (having struct
> > > blk_scsi_cmd_filter) via inode->i_bdev->bd_disk. It works for only
> > > SCSI block device files. With character device files, inode->i_bdev
> > > leads you to struct cdev. inode->i_bdev->bd_disk->blk_scsi_cmd_filter
> > > isn't safe.
> > >
> > > SCSI ULDs don't expose gendisk; they keep it private. bsg needs to be
> > > independent on any protocols. We shouldn't change ULDs to expose their
> > > gendisk.
> > >
> > > This patch moves struct blk_scsi_cmd_filter from gendisk to
> > > request_queue, a common object, which eveyone can access to.
> > >
> > > The user interface doesn't change; users can change the filters via
> > > /sys/block/. gendisk has a pointer to request_queue so the cmd_filter
> > > code accesses to struct blk_scsi_cmd_filter.
> > >
> > > Signed-off-by: FUJITA Tomonori <fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
> > > Signed-off-by: Jens Axboe <jens.axboe-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
> > >
> > > > This is current mainline:
> > > >
> > > > kobject (ddb049fc): tried to init an initialized object, something is seriously wrong.
> > > > Pid: 4650, comm: modprobe Not tainted 2.6.27-rc5-00132-gb380b0d #8
> > > > [<c01e3196>] kobject_init+0x6a/0x6c
> > > > [<c01e35cb>] kobject_init_and_add+0x14/0x30
> > > > [<c01e32f7>] ? kobject_get+0x12/0x17
> > > > [<c01df89c>] blk_register_filter+0x4b/0x5a
> > > > [<de839310>] ide_cd_probe+0x289/0x5ae [ide_cd_mod]
> > > > [<c01aad99>] ? sysfs_addrm_start+0x65/0x90
> > > > [<c01aba69>] ? sysfs_do_create_link+0x9a/0x11c
> > > > [<c024f7a0>] generic_ide_probe+0x1f/0x21
> > > > [<c024a672>] driver_probe_device+0x77/0x15b
> > > > [<c02c8bdb>] ? _spin_unlock_irqrestore+0x39/0x60
> > > > [<c024a7b6>] __driver_attach+0x60/0x62
> > > > [<c0249e2a>] bus_for_each_dev+0x44/0x62
> > > > [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> > > > [<c024a51d>] driver_attach+0x19/0x1b
> > > > [<c024a756>] ? __driver_attach+0x0/0x62
> > > > [<c024a318>] bus_add_driver+0x1ae/0x216
> > > > [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> > > > [<c024a901>] driver_register+0x4f/0x118
> > > > [<dee3500d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > > > [<c010111a>] do_one_initcall+0x2a/0x14c
> > > > [<c0108560>] ? native_sched_clock+0x58/0xa1
> > > > [<dee35000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > > > [<c013d042>] ? trace_hardirqs_on+0xb/0xd
> > > > [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> > > > [<c0147083>] sys_init_module+0x7e/0x19f
> > > > [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> > > > [<c01e8144>] ? trace_hardirqs_on_thunk+0xc/0x10
> > > > [<c0103035>] sysenter_do_call+0x12/0x35
> > > > [<c012007b>] ? put_fs_struct+0x5/0x2e
> >
> > ide-cd uses multiple gendisks share one request_queue?
> >
> > Here's a patch for mainline.
>
> Hmm, I don't think that it does. There's a queue per drive in the old
> IDE driver, so there should be a 1:1 relation between queues and gendisk
> there.
I think the problem here is due to the usage of kobject_init_and_add().
When we hit the add the second time, the ->state_initalised in the kojb
is still 1. The below should fix it.
The ->state_initalised stuff is a disaster imho, it should be shot and
killed.
diff --git a/block/blk-core.c b/block/blk-core.c
index 6cb3c6d..820132b 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -495,6 +495,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
INIT_LIST_HEAD(&q->timeout_list);
kobject_init(&q->kobj, &blk_queue_ktype);
+ kobject_init(&q->cmd_filter.kobj, &rcf_ktype);
mutex_init(&q->sysfs_lock);
spin_lock_init(&q->__queue_lock);
diff --git a/block/blk.h b/block/blk.h
index eb13740..47d6b22 100644
--- a/block/blk.h
+++ b/block/blk.h
@@ -9,6 +9,7 @@
extern struct kmem_cache *blk_requestq_cachep;
extern struct kobj_type blk_queue_ktype;
+extern struct kobj_type rcf_ktype;
void init_request_from_bio(struct request *req, struct bio *bio);
void blk_rq_bio_prep(struct request_queue *q, struct request *rq,
diff --git a/block/cmd-filter.c b/block/cmd-filter.c
index da7f7a4..9556e85 100644
--- a/block/cmd-filter.c
+++ b/block/cmd-filter.c
@@ -201,7 +201,7 @@ static struct sysfs_ops rcf_sysfs_ops = {
.store = rcf_attr_store,
};
-static struct kobj_type rcf_ktype = {
+struct kobj_type rcf_ktype = {
.sysfs_ops = &rcf_sysfs_ops,
.default_attrs = default_attrs,
};
@@ -211,8 +211,7 @@ int blk_register_filter(struct gendisk *disk)
int ret;
struct blk_cmd_filter *filter = &disk->queue->cmd_filter;
- ret = kobject_init_and_add(&filter->kobj, &rcf_ktype,
- &disk_to_dev(disk)->kobj,
+ ret = kobject_add(&filter->kobj, &disk_to_dev(disk)->kobj,
"%s", "cmd_filter");
if (ret < 0)
return ret;
--
Jens Axboe
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong.
2008-09-08 9:27 ` Jens Axboe
@ 2008-09-09 9:07 ` Mariusz Kozlowski
[not found] ` <200809091107.04629.m.kozlowski-NWF1p15JEu3VItvQsEIGlw@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: Mariusz Kozlowski @ 2008-09-09 9:07 UTC (permalink / raw)
To: Jens Axboe
Cc: FUJITA Tomonori, rjw, akpm, bzolnier, linux-kernel,
kernel-testers, linux-ide
Witam,
> On Mon, Sep 08 2008, Jens Axboe wrote:
> > On Sat, Sep 06 2008, FUJITA Tomonori wrote:
> > > On Fri, 5 Sep 2008 18:25:04 +0200
> > > Mariusz Kozlowski <m.kozlowski@tuxland.pl> wrote:
> > >
> > > > Hello,
> > > >
> > > > > > > Again 100% reproducible rmmod ide-cd_mod problem. Kernel is tainted because
> > > > > > > of earlier sysfs acpi problems similar (probably identical) to those reported
> > > > > > > by Li Zefan here http://marc.info/?l=linux-kernel&m=121921059026064&w=2
> > > > > > >
> > > > > > > Steps to reproduce: unload ide-cd_mod
> > > > > > >
> > > > > > > kobject (dd9e4a7c): tried to init an initialized object, something is seriously wrong.
> > > > > > > Pid: 4734, comm: modprobe Tainted: G W 2.6.27-rc5-mm1 #1
> > > > > > > [<c01ec982>] kobject_init+0xc4/0xc9
> > > > > > > [<c02cb84a>] ? _spin_unlock+0x27/0x3f
> > > > > > > [<c01aff2e>] ? sysfs_find_dirent+0x21/0x2b
> > > > > > > [<c01aff7e>] ? __sysfs_add_one+0x46/0x6d
> > > > > > > [<c01affb4>] ? sysfs_add_one+0xf/0x44
> > > > > > > [<c01b0036>] ? sysfs_addrm_start+0x4d/0x90
> > > > > > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > > > > > [<c01ec9c5>] kobject_init_and_add+0x14/0x30
> > > > > > > [<c01b1009>] ? sysfs_create_link+0x12/0x19
> > > > > > > [<c01e8bad>] blk_register_filter+0x3b/0x46
> > > > > > > [<ded9e40a>] ide_cd_probe+0x253/0x5a8 [ide_cd_mod]
> > > > > > > [<c01b0000>] ? sysfs_addrm_start+0x17/0x90
> > > > > > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > > > > > [<c01b004e>] ? sysfs_addrm_start+0x65/0x90
> > > > > > > [<c025145f>] generic_ide_probe+0x1f/0x21
> > > > > > > [<c024c002>] driver_probe_device+0x77/0x15b
> > > > > > > [<c02cb91b>] ? _spin_unlock_irqrestore+0x39/0x60
> > > > > > > [<c024c146>] __driver_attach+0x60/0x62
> > > > > > > [<c024b7bd>] bus_for_each_dev+0x44/0x62
> > > > > > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > > > > > [<c024bead>] driver_attach+0x19/0x1b
> > > > > > > [<c024c0e6>] ? __driver_attach+0x0/0x62
> > > > > > > [<c024bca8>] bus_add_driver+0x1ab/0x213
> > > > > > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > > > > > [<c024c291>] driver_register+0x4f/0x118
> > > > > > > [<de7bf000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > > > > > > [<de7bf00d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > > > > > > [<c0101114>] do_one_initcall+0x24/0x12f
> > > > > > > [<c02c9d8e>] ? mutex_unlock+0x8/0xa
> > > > > > > [<c01455ca>] sys_init_module+0xa5/0x1c1
> > > > > > > [<c0176a0a>] ? sys_read+0x3d/0x64
> > > > > > > [<c01030f1>] sysenter_do_call+0x12/0x35
> > > > > > > [<c012007b>] ? __set_special_pids+0x43/0x71
> > > > > > >
> > > > > > > First time I modprobe/rmmod ide-cd_mod the system works but quickly gets unstable.
> > > > > > > Second modprobe/rmmod is 100% fatal. Memory gets corruped seriously I guess.
> > > > > > > pcspeaker beeps all the time, kernel throws dumps on the screen until
> > > > > > > its really dead, sadly blinking 'leds of panic' ;)
> > > > > >
> > > > > > Can you please verify if that happens with the current mainline?
> > > > >
> > > > > Oops. How come I didn't find it earlier? hmm...
> > > >
> > > > It's relatively new, that's why :) And this is the culprit:
> > > >
> > > > abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 is first bad commit
> > > > commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4
> > > > Author: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> > > > Date: Sat Aug 16 14:10:05 2008 +0900
> > > >
> > > > block: move cmdfilter from gendisk to request_queue
> > > >
> > > > cmd_filter works only for the block layer SG_IO with SCSI block
> > > > devices. It breaks scsi/sg.c, bsg, and the block layer SG_IO with SCSI
> > > > character devices (such as st). We hit a kernel crash with them.
> > > >
> > > > The problem is that cmd_filter code accesses to gendisk (having struct
> > > > blk_scsi_cmd_filter) via inode->i_bdev->bd_disk. It works for only
> > > > SCSI block device files. With character device files, inode->i_bdev
> > > > leads you to struct cdev. inode->i_bdev->bd_disk->blk_scsi_cmd_filter
> > > > isn't safe.
> > > >
> > > > SCSI ULDs don't expose gendisk; they keep it private. bsg needs to be
> > > > independent on any protocols. We shouldn't change ULDs to expose their
> > > > gendisk.
> > > >
> > > > This patch moves struct blk_scsi_cmd_filter from gendisk to
> > > > request_queue, a common object, which eveyone can access to.
> > > >
> > > > The user interface doesn't change; users can change the filters via
> > > > /sys/block/. gendisk has a pointer to request_queue so the cmd_filter
> > > > code accesses to struct blk_scsi_cmd_filter.
> > > >
> > > > Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> > > > Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
> > > >
> > > > > This is current mainline:
> > > > >
> > > > > kobject (ddb049fc): tried to init an initialized object, something is seriously wrong.
> > > > > Pid: 4650, comm: modprobe Not tainted 2.6.27-rc5-00132-gb380b0d #8
> > > > > [<c01e3196>] kobject_init+0x6a/0x6c
> > > > > [<c01e35cb>] kobject_init_and_add+0x14/0x30
> > > > > [<c01e32f7>] ? kobject_get+0x12/0x17
> > > > > [<c01df89c>] blk_register_filter+0x4b/0x5a
> > > > > [<de839310>] ide_cd_probe+0x289/0x5ae [ide_cd_mod]
> > > > > [<c01aad99>] ? sysfs_addrm_start+0x65/0x90
> > > > > [<c01aba69>] ? sysfs_do_create_link+0x9a/0x11c
> > > > > [<c024f7a0>] generic_ide_probe+0x1f/0x21
> > > > > [<c024a672>] driver_probe_device+0x77/0x15b
> > > > > [<c02c8bdb>] ? _spin_unlock_irqrestore+0x39/0x60
> > > > > [<c024a7b6>] __driver_attach+0x60/0x62
> > > > > [<c0249e2a>] bus_for_each_dev+0x44/0x62
> > > > > [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> > > > > [<c024a51d>] driver_attach+0x19/0x1b
> > > > > [<c024a756>] ? __driver_attach+0x0/0x62
> > > > > [<c024a318>] bus_add_driver+0x1ae/0x216
> > > > > [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> > > > > [<c024a901>] driver_register+0x4f/0x118
> > > > > [<dee3500d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > > > > [<c010111a>] do_one_initcall+0x2a/0x14c
> > > > > [<c0108560>] ? native_sched_clock+0x58/0xa1
> > > > > [<dee35000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > > > > [<c013d042>] ? trace_hardirqs_on+0xb/0xd
> > > > > [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> > > > > [<c0147083>] sys_init_module+0x7e/0x19f
> > > > > [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> > > > > [<c01e8144>] ? trace_hardirqs_on_thunk+0xc/0x10
> > > > > [<c0103035>] sysenter_do_call+0x12/0x35
> > > > > [<c012007b>] ? put_fs_struct+0x5/0x2e
> > >
> > > ide-cd uses multiple gendisks share one request_queue?
> > >
> > > Here's a patch for mainline.
> >
> > Hmm, I don't think that it does. There's a queue per drive in the old
> > IDE driver, so there should be a 1:1 relation between queues and gendisk
> > there.
>
> I think the problem here is due to the usage of kobject_init_and_add().
> When we hit the add the second time, the ->state_initalised in the kojb
> is still 1. The below should fix it.
>
> The ->state_initalised stuff is a disaster imho, it should be shot and
> killed.
>
> diff --git a/block/blk-core.c b/block/blk-core.c
> index 6cb3c6d..820132b 100644
> --- a/block/blk-core.c
> +++ b/block/blk-core.c
> @@ -495,6 +495,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
> INIT_LIST_HEAD(&q->timeout_list);
>
> kobject_init(&q->kobj, &blk_queue_ktype);
> + kobject_init(&q->cmd_filter.kobj, &rcf_ktype);
>
> mutex_init(&q->sysfs_lock);
> spin_lock_init(&q->__queue_lock);
> diff --git a/block/blk.h b/block/blk.h
> index eb13740..47d6b22 100644
> --- a/block/blk.h
> +++ b/block/blk.h
> @@ -9,6 +9,7 @@
>
> extern struct kmem_cache *blk_requestq_cachep;
> extern struct kobj_type blk_queue_ktype;
> +extern struct kobj_type rcf_ktype;
>
> void init_request_from_bio(struct request *req, struct bio *bio);
> void blk_rq_bio_prep(struct request_queue *q, struct request *rq,
> diff --git a/block/cmd-filter.c b/block/cmd-filter.c
> index da7f7a4..9556e85 100644
> --- a/block/cmd-filter.c
> +++ b/block/cmd-filter.c
> @@ -201,7 +201,7 @@ static struct sysfs_ops rcf_sysfs_ops = {
> .store = rcf_attr_store,
> };
>
> -static struct kobj_type rcf_ktype = {
> +struct kobj_type rcf_ktype = {
> .sysfs_ops = &rcf_sysfs_ops,
> .default_attrs = default_attrs,
> };
> @@ -211,8 +211,7 @@ int blk_register_filter(struct gendisk *disk)
> int ret;
> struct blk_cmd_filter *filter = &disk->queue->cmd_filter;
>
> - ret = kobject_init_and_add(&filter->kobj, &rcf_ktype,
> - &disk_to_dev(disk)->kobj,
> + ret = kobject_add(&filter->kobj, &disk_to_dev(disk)->kobj,
> "%s", "cmd_filter");
> if (ret < 0)
> return ret;
>
I applied your fix to 2.6.27-rc5-mm1 (it doesn't apply to mainline) and the result
is that when I first rmmod ide-cd_mod it's ok, but it seems that the module is not
unregistered because when you rmmod ide-cd_mod again immediately you will see this:
BUG: atomic counter underflow at:
Pid: 4920, comm: rmmod Tainted: G W 2.6.27-rc5-mm1 #4
[<c01ec579>] ? kobject_release+0x0/0x59
[<c01ed300>] kref_put+0x4c/0x7c
[<c01ec4cc>] kobject_put+0x20/0x4e
[<c01aed10>] ? sysfs_hash_and_remove+0x50/0x57
[<c01e8d4b>] blk_unregister_filter+0x13/0x15
[<dedd822b>] ide_cd_remove+0xf/0x21 [ide_cd_mod]
[<c025147b>] generic_ide_remove+0x1a/0x1e
[<c024bdaf>] __device_release_driver+0x59/0x7f
[<c024be6c>] driver_detach+0x97/0x99
[<c024b26e>] bus_remove_driver+0x6f/0x8b
[<c024c231>] driver_unregister+0x2f/0x33
[<deddb341>] ide_cdrom_exit+0xd/0xf [ide_cd_mod]
[<c0143da5>] sys_delete_module+0x10d/0x1e2
[<c0162cbc>] ? do_munmap+0x1d7/0x234
[<c0163d13>] ? sys_munmap+0x30/0x36
[<c01030f1>] sysenter_do_call+0x12/0x35
=======================
hdc: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache
Btw I found something interesting. On earlier kernels - 2.6.25 I can not remove ide-cd_mod
at all - it's still there when I lsmod modules:
# modprobe ide-cd_mod
# rmmod ide-cd_mod
# rmmod ide-cd_mod
# rmmod ide-cd_mod
# rmmod ide-cd_mod
# rmmod ide-cd_mod
# rmmod ide-cd_mod
# rmmod ide-cd_mod
# lsmod | grep ide_cd
ide_cd_mod 29600 0
cdrom 32160 1 ide_cd_mod
On the other hand on newer kernels (post 2.6.26 - these which did not blow up) right
after boot I have to run rmmod ide-cd_mod exactly three times to have ide-cd_mod
unloaded. If I modprobe and rmmod again it works as expected. Why is this?
laptop mako # modprobe ide-cd_mod
laptop mako # rmmod ide-cd_mod
laptop mako # rmmod ide-cd_mod
laptop mako # rmmod ide-cd_mod
laptop mako # rmmod ide-cd_mod
ERROR: Module ide_cd_mod does not exist in /proc/modules
laptop mako # modprobe ide-cd_mod
laptop mako # rmmod ide-cd_mod
laptop mako # rmmod ide-cd_mod
ERROR: Module ide_cd_mod does not exist in /proc/modules
Mariusz
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong.
[not found] ` <200809091107.04629.m.kozlowski-NWF1p15JEu3VItvQsEIGlw@public.gmane.org>
@ 2008-09-09 10:29 ` Jens Axboe
2008-09-09 12:14 ` Mariusz Kozlowski
0 siblings, 1 reply; 11+ messages in thread
From: Jens Axboe @ 2008-09-09 10:29 UTC (permalink / raw)
To: Mariusz Kozlowski
Cc: FUJITA Tomonori, rjw-KKrjLPT3xs0,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b,
bzolnier-Re5JQEeQqe8AvxtiuMwx3w,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
kernel-testers-u79uwXL29TY76Z2rM5mHXA,
linux-ide-u79uwXL29TY76Z2rM5mHXA
On Tue, Sep 09 2008, Mariusz Kozlowski wrote:
> Witam,
>
> > On Mon, Sep 08 2008, Jens Axboe wrote:
> > > On Sat, Sep 06 2008, FUJITA Tomonori wrote:
> > > > On Fri, 5 Sep 2008 18:25:04 +0200
> > > > Mariusz Kozlowski <m.kozlowski-NWF1p15JEu3VItvQsEIGlw@public.gmane.org> wrote:
> > > >
> > > > > Hello,
> > > > >
> > > > > > > > Again 100% reproducible rmmod ide-cd_mod problem. Kernel is tainted because
> > > > > > > > of earlier sysfs acpi problems similar (probably identical) to those reported
> > > > > > > > by Li Zefan here http://marc.info/?l=linux-kernel&m=121921059026064&w=2
> > > > > > > >
> > > > > > > > Steps to reproduce: unload ide-cd_mod
> > > > > > > >
> > > > > > > > kobject (dd9e4a7c): tried to init an initialized object, something is seriously wrong.
> > > > > > > > Pid: 4734, comm: modprobe Tainted: G W 2.6.27-rc5-mm1 #1
> > > > > > > > [<c01ec982>] kobject_init+0xc4/0xc9
> > > > > > > > [<c02cb84a>] ? _spin_unlock+0x27/0x3f
> > > > > > > > [<c01aff2e>] ? sysfs_find_dirent+0x21/0x2b
> > > > > > > > [<c01aff7e>] ? __sysfs_add_one+0x46/0x6d
> > > > > > > > [<c01affb4>] ? sysfs_add_one+0xf/0x44
> > > > > > > > [<c01b0036>] ? sysfs_addrm_start+0x4d/0x90
> > > > > > > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > > > > > > [<c01ec9c5>] kobject_init_and_add+0x14/0x30
> > > > > > > > [<c01b1009>] ? sysfs_create_link+0x12/0x19
> > > > > > > > [<c01e8bad>] blk_register_filter+0x3b/0x46
> > > > > > > > [<ded9e40a>] ide_cd_probe+0x253/0x5a8 [ide_cd_mod]
> > > > > > > > [<c01b0000>] ? sysfs_addrm_start+0x17/0x90
> > > > > > > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > > > > > > [<c01b004e>] ? sysfs_addrm_start+0x65/0x90
> > > > > > > > [<c025145f>] generic_ide_probe+0x1f/0x21
> > > > > > > > [<c024c002>] driver_probe_device+0x77/0x15b
> > > > > > > > [<c02cb91b>] ? _spin_unlock_irqrestore+0x39/0x60
> > > > > > > > [<c024c146>] __driver_attach+0x60/0x62
> > > > > > > > [<c024b7bd>] bus_for_each_dev+0x44/0x62
> > > > > > > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > > > > > > [<c024bead>] driver_attach+0x19/0x1b
> > > > > > > > [<c024c0e6>] ? __driver_attach+0x0/0x62
> > > > > > > > [<c024bca8>] bus_add_driver+0x1ab/0x213
> > > > > > > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > > > > > > [<c024c291>] driver_register+0x4f/0x118
> > > > > > > > [<de7bf000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > > > > > > > [<de7bf00d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > > > > > > > [<c0101114>] do_one_initcall+0x24/0x12f
> > > > > > > > [<c02c9d8e>] ? mutex_unlock+0x8/0xa
> > > > > > > > [<c01455ca>] sys_init_module+0xa5/0x1c1
> > > > > > > > [<c0176a0a>] ? sys_read+0x3d/0x64
> > > > > > > > [<c01030f1>] sysenter_do_call+0x12/0x35
> > > > > > > > [<c012007b>] ? __set_special_pids+0x43/0x71
> > > > > > > >
> > > > > > > > First time I modprobe/rmmod ide-cd_mod the system works but quickly gets unstable.
> > > > > > > > Second modprobe/rmmod is 100% fatal. Memory gets corruped seriously I guess.
> > > > > > > > pcspeaker beeps all the time, kernel throws dumps on the screen until
> > > > > > > > its really dead, sadly blinking 'leds of panic' ;)
> > > > > > >
> > > > > > > Can you please verify if that happens with the current mainline?
> > > > > >
> > > > > > Oops. How come I didn't find it earlier? hmm...
> > > > >
> > > > > It's relatively new, that's why :) And this is the culprit:
> > > > >
> > > > > abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 is first bad commit
> > > > > commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4
> > > > > Author: FUJITA Tomonori <fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
> > > > > Date: Sat Aug 16 14:10:05 2008 +0900
> > > > >
> > > > > block: move cmdfilter from gendisk to request_queue
> > > > >
> > > > > cmd_filter works only for the block layer SG_IO with SCSI block
> > > > > devices. It breaks scsi/sg.c, bsg, and the block layer SG_IO with SCSI
> > > > > character devices (such as st). We hit a kernel crash with them.
> > > > >
> > > > > The problem is that cmd_filter code accesses to gendisk (having struct
> > > > > blk_scsi_cmd_filter) via inode->i_bdev->bd_disk. It works for only
> > > > > SCSI block device files. With character device files, inode->i_bdev
> > > > > leads you to struct cdev. inode->i_bdev->bd_disk->blk_scsi_cmd_filter
> > > > > isn't safe.
> > > > >
> > > > > SCSI ULDs don't expose gendisk; they keep it private. bsg needs to be
> > > > > independent on any protocols. We shouldn't change ULDs to expose their
> > > > > gendisk.
> > > > >
> > > > > This patch moves struct blk_scsi_cmd_filter from gendisk to
> > > > > request_queue, a common object, which eveyone can access to.
> > > > >
> > > > > The user interface doesn't change; users can change the filters via
> > > > > /sys/block/. gendisk has a pointer to request_queue so the cmd_filter
> > > > > code accesses to struct blk_scsi_cmd_filter.
> > > > >
> > > > > Signed-off-by: FUJITA Tomonori <fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
> > > > > Signed-off-by: Jens Axboe <jens.axboe-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
> > > > >
> > > > > > This is current mainline:
> > > > > >
> > > > > > kobject (ddb049fc): tried to init an initialized object, something is seriously wrong.
> > > > > > Pid: 4650, comm: modprobe Not tainted 2.6.27-rc5-00132-gb380b0d #8
> > > > > > [<c01e3196>] kobject_init+0x6a/0x6c
> > > > > > [<c01e35cb>] kobject_init_and_add+0x14/0x30
> > > > > > [<c01e32f7>] ? kobject_get+0x12/0x17
> > > > > > [<c01df89c>] blk_register_filter+0x4b/0x5a
> > > > > > [<de839310>] ide_cd_probe+0x289/0x5ae [ide_cd_mod]
> > > > > > [<c01aad99>] ? sysfs_addrm_start+0x65/0x90
> > > > > > [<c01aba69>] ? sysfs_do_create_link+0x9a/0x11c
> > > > > > [<c024f7a0>] generic_ide_probe+0x1f/0x21
> > > > > > [<c024a672>] driver_probe_device+0x77/0x15b
> > > > > > [<c02c8bdb>] ? _spin_unlock_irqrestore+0x39/0x60
> > > > > > [<c024a7b6>] __driver_attach+0x60/0x62
> > > > > > [<c0249e2a>] bus_for_each_dev+0x44/0x62
> > > > > > [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> > > > > > [<c024a51d>] driver_attach+0x19/0x1b
> > > > > > [<c024a756>] ? __driver_attach+0x0/0x62
> > > > > > [<c024a318>] bus_add_driver+0x1ae/0x216
> > > > > > [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> > > > > > [<c024a901>] driver_register+0x4f/0x118
> > > > > > [<dee3500d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > > > > > [<c010111a>] do_one_initcall+0x2a/0x14c
> > > > > > [<c0108560>] ? native_sched_clock+0x58/0xa1
> > > > > > [<dee35000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > > > > > [<c013d042>] ? trace_hardirqs_on+0xb/0xd
> > > > > > [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> > > > > > [<c0147083>] sys_init_module+0x7e/0x19f
> > > > > > [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> > > > > > [<c01e8144>] ? trace_hardirqs_on_thunk+0xc/0x10
> > > > > > [<c0103035>] sysenter_do_call+0x12/0x35
> > > > > > [<c012007b>] ? put_fs_struct+0x5/0x2e
> > > >
> > > > ide-cd uses multiple gendisks share one request_queue?
> > > >
> > > > Here's a patch for mainline.
> > >
> > > Hmm, I don't think that it does. There's a queue per drive in the old
> > > IDE driver, so there should be a 1:1 relation between queues and gendisk
> > > there.
> >
> > I think the problem here is due to the usage of kobject_init_and_add().
> > When we hit the add the second time, the ->state_initalised in the kojb
> > is still 1. The below should fix it.
> >
> > The ->state_initalised stuff is a disaster imho, it should be shot and
> > killed.
> >
> > diff --git a/block/blk-core.c b/block/blk-core.c
> > index 6cb3c6d..820132b 100644
> > --- a/block/blk-core.c
> > +++ b/block/blk-core.c
> > @@ -495,6 +495,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
> > INIT_LIST_HEAD(&q->timeout_list);
> >
> > kobject_init(&q->kobj, &blk_queue_ktype);
> > + kobject_init(&q->cmd_filter.kobj, &rcf_ktype);
> >
> > mutex_init(&q->sysfs_lock);
> > spin_lock_init(&q->__queue_lock);
> > diff --git a/block/blk.h b/block/blk.h
> > index eb13740..47d6b22 100644
> > --- a/block/blk.h
> > +++ b/block/blk.h
> > @@ -9,6 +9,7 @@
> >
> > extern struct kmem_cache *blk_requestq_cachep;
> > extern struct kobj_type blk_queue_ktype;
> > +extern struct kobj_type rcf_ktype;
> >
> > void init_request_from_bio(struct request *req, struct bio *bio);
> > void blk_rq_bio_prep(struct request_queue *q, struct request *rq,
> > diff --git a/block/cmd-filter.c b/block/cmd-filter.c
> > index da7f7a4..9556e85 100644
> > --- a/block/cmd-filter.c
> > +++ b/block/cmd-filter.c
> > @@ -201,7 +201,7 @@ static struct sysfs_ops rcf_sysfs_ops = {
> > .store = rcf_attr_store,
> > };
> >
> > -static struct kobj_type rcf_ktype = {
> > +struct kobj_type rcf_ktype = {
> > .sysfs_ops = &rcf_sysfs_ops,
> > .default_attrs = default_attrs,
> > };
> > @@ -211,8 +211,7 @@ int blk_register_filter(struct gendisk *disk)
> > int ret;
> > struct blk_cmd_filter *filter = &disk->queue->cmd_filter;
> >
> > - ret = kobject_init_and_add(&filter->kobj, &rcf_ktype,
> > - &disk_to_dev(disk)->kobj,
> > + ret = kobject_add(&filter->kobj, &disk_to_dev(disk)->kobj,
> > "%s", "cmd_filter");
> > if (ret < 0)
> > return ret;
> >
>
> I applied your fix to 2.6.27-rc5-mm1 (it doesn't apply to mainline) and the result
> is that when I first rmmod ide-cd_mod it's ok, but it seems that the module is not
> unregistered because when you rmmod ide-cd_mod again immediately you will see this:
>
> BUG: atomic counter underflow at:
> Pid: 4920, comm: rmmod Tainted: G W 2.6.27-rc5-mm1 #4
> [<c01ec579>] ? kobject_release+0x0/0x59
> [<c01ed300>] kref_put+0x4c/0x7c
> [<c01ec4cc>] kobject_put+0x20/0x4e
> [<c01aed10>] ? sysfs_hash_and_remove+0x50/0x57
> [<c01e8d4b>] blk_unregister_filter+0x13/0x15
> [<dedd822b>] ide_cd_remove+0xf/0x21 [ide_cd_mod]
> [<c025147b>] generic_ide_remove+0x1a/0x1e
> [<c024bdaf>] __device_release_driver+0x59/0x7f
> [<c024be6c>] driver_detach+0x97/0x99
> [<c024b26e>] bus_remove_driver+0x6f/0x8b
> [<c024c231>] driver_unregister+0x2f/0x33
> [<deddb341>] ide_cdrom_exit+0xd/0xf [ide_cd_mod]
> [<c0143da5>] sys_delete_module+0x10d/0x1e2
> [<c0162cbc>] ? do_munmap+0x1d7/0x234
> [<c0163d13>] ? sys_munmap+0x30/0x36
> [<c01030f1>] sysenter_do_call+0x12/0x35
> =======================
> hdc: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache
>
> Btw I found something interesting. On earlier kernels - 2.6.25 I can not remove ide-cd_mod
> at all - it's still there when I lsmod modules:
>
> # modprobe ide-cd_mod
> # rmmod ide-cd_mod
> # rmmod ide-cd_mod
> # rmmod ide-cd_mod
> # rmmod ide-cd_mod
> # rmmod ide-cd_mod
> # rmmod ide-cd_mod
> # rmmod ide-cd_mod
> # lsmod | grep ide_cd
> ide_cd_mod 29600 0
> cdrom 32160 1 ide_cd_mod
>
> On the other hand on newer kernels (post 2.6.26 - these which did not blow up) right
> after boot I have to run rmmod ide-cd_mod exactly three times to have ide-cd_mod
> unloaded. If I modprobe and rmmod again it works as expected. Why is this?
>
> laptop mako # modprobe ide-cd_mod
> laptop mako # rmmod ide-cd_mod
> laptop mako # rmmod ide-cd_mod
> laptop mako # rmmod ide-cd_mod
> laptop mako # rmmod ide-cd_mod
> ERROR: Module ide_cd_mod does not exist in /proc/modules
> laptop mako # modprobe ide-cd_mod
> laptop mako # rmmod ide-cd_mod
> laptop mako # rmmod ide-cd_mod
> ERROR: Module ide_cd_mod does not exist in /proc/modules
Can you try the below patch from Elias?
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index 304ec73..0120c8e 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -9,12 +9,6 @@
#include "blk.h"
-struct queue_sysfs_entry {
- struct attribute attr;
- ssize_t (*show)(struct request_queue *, char *);
- ssize_t (*store)(struct request_queue *, const char *, size_t);
-};
-
static ssize_t
queue_var_show(unsigned int var, char *page)
{
diff --git a/block/blk.h b/block/blk.h
index c79f30e..9ab0d6a 100644
--- a/block/blk.h
+++ b/block/blk.h
@@ -10,6 +10,12 @@
extern struct kmem_cache *blk_requestq_cachep;
extern struct kobj_type blk_queue_ktype;
+struct queue_sysfs_entry {
+ struct attribute attr;
+ ssize_t (*show)(struct request_queue *, char *);
+ ssize_t (*store)(struct request_queue *, const char *, size_t);
+};
+
void init_request_from_bio(struct request *req, struct bio *bio);
void blk_rq_bio_prep(struct request_queue *q, struct request *rq,
struct bio *bio);
diff --git a/block/cmd-filter.c b/block/cmd-filter.c
index 228b644..fc0f0b2 100644
--- a/block/cmd-filter.c
+++ b/block/cmd-filter.c
@@ -26,6 +26,8 @@
#include <scsi/scsi.h>
#include <linux/cdrom.h>
+#include "blk.h"
+
int blk_verify_command(struct blk_cmd_filter *filter,
unsigned char *cmd, int has_write_perm)
{
@@ -50,9 +52,9 @@ int blk_verify_command(struct blk_cmd_filter *filter,
EXPORT_SYMBOL(blk_verify_command);
/* and now, the sysfs stuff */
-static ssize_t rcf_cmds_show(struct blk_cmd_filter *filter, char *page,
- int rw)
+static ssize_t rcf_cmds_show(struct request_queue *q, char *page, int rw)
{
+ struct blk_cmd_filter *filter = &q->cmd_filter;
char *npage = page;
unsigned long *okbits;
int i;
@@ -76,24 +78,27 @@ static ssize_t rcf_cmds_show(struct blk_cmd_filter *filter, char *page,
return npage - page;
}
-static ssize_t rcf_readcmds_show(struct blk_cmd_filter *filter, char *page)
+static ssize_t rcf_readcmds_show(struct request_queue *q, char *page)
{
- return rcf_cmds_show(filter, page, READ);
+ return rcf_cmds_show(q, page, READ);
}
-static ssize_t rcf_writecmds_show(struct blk_cmd_filter *filter,
- char *page)
+static ssize_t rcf_writecmds_show(struct request_queue *q, char *page)
{
- return rcf_cmds_show(filter, page, WRITE);
+ return rcf_cmds_show(q, page, WRITE);
}
-static ssize_t rcf_cmds_store(struct blk_cmd_filter *filter,
- const char *page, size_t count, int rw)
+static ssize_t rcf_cmds_store(struct request_queue *q, const char *page,
+ size_t count, int rw)
{
+ struct blk_cmd_filter *filter = &q->cmd_filter;
unsigned long okbits[BLK_SCSI_CMD_PER_LONG], *target_okbits;
int cmd, set;
char *p, *status;
+ if (!capable(CAP_SYS_RAWIO))
+ return -EPERM;
+
if (rw == READ) {
memcpy(&okbits, filter->read_ok, sizeof(okbits));
target_okbits = filter->read_ok;
@@ -128,31 +133,25 @@ static ssize_t rcf_cmds_store(struct blk_cmd_filter *filter,
return count;
}
-static ssize_t rcf_readcmds_store(struct blk_cmd_filter *filter,
- const char *page, size_t count)
+static ssize_t rcf_readcmds_store(struct request_queue *q, const char *page,
+ size_t count)
{
- return rcf_cmds_store(filter, page, count, READ);
+ return rcf_cmds_store(q, page, count, READ);
}
-static ssize_t rcf_writecmds_store(struct blk_cmd_filter *filter,
- const char *page, size_t count)
+static ssize_t rcf_writecmds_store(struct request_queue *q, const char *page,
+ size_t count)
{
- return rcf_cmds_store(filter, page, count, WRITE);
+ return rcf_cmds_store(q, page, count, WRITE);
}
-struct rcf_sysfs_entry {
- struct attribute attr;
- ssize_t (*show)(struct blk_cmd_filter *, char *);
- ssize_t (*store)(struct blk_cmd_filter *, const char *, size_t);
-};
-
-static struct rcf_sysfs_entry rcf_readcmds_entry = {
+static struct queue_sysfs_entry rcf_readcmds_entry = {
.attr = { .name = "read_table", .mode = S_IRUGO | S_IWUSR },
.show = rcf_readcmds_show,
.store = rcf_readcmds_store,
};
-static struct rcf_sysfs_entry rcf_writecmds_entry = {
+static struct queue_sysfs_entry rcf_writecmds_entry = {
.attr = {.name = "write_table", .mode = S_IRUGO | S_IWUSR },
.show = rcf_writecmds_show,
.store = rcf_writecmds_store,
@@ -164,72 +163,30 @@ static struct attribute *default_attrs[] = {
NULL,
};
-#define to_rcf(atr) container_of((atr), struct rcf_sysfs_entry, attr)
-
-static ssize_t
-rcf_attr_show(struct kobject *kobj, struct attribute *attr, char *page)
-{
- struct rcf_sysfs_entry *entry = to_rcf(attr);
- struct blk_cmd_filter *filter;
-
- filter = container_of(kobj, struct blk_cmd_filter, kobj);
- if (entry->show)
- return entry->show(filter, page);
-
- return 0;
-}
-
-static ssize_t
-rcf_attr_store(struct kobject *kobj, struct attribute *attr,
- const char *page, size_t length)
-{
- struct rcf_sysfs_entry *entry = to_rcf(attr);
- struct blk_cmd_filter *filter;
-
- if (!capable(CAP_SYS_RAWIO))
- return -EPERM;
-
- if (!entry->store)
- return -EINVAL;
-
- filter = container_of(kobj, struct blk_cmd_filter, kobj);
- return entry->store(filter, page, length);
-}
-
-static struct sysfs_ops rcf_sysfs_ops = {
- .show = rcf_attr_show,
- .store = rcf_attr_store,
-};
-
-static struct kobj_type rcf_ktype = {
- .sysfs_ops = &rcf_sysfs_ops,
- .default_attrs = default_attrs,
+static struct attribute_group rcf_attr_group = {
+ .name = "cmd_filter",
+ .attrs = default_attrs,
};
int blk_register_filter(struct gendisk *disk)
{
+ struct kobject *kobj = &disk->queue->kobj;
int ret;
- struct blk_cmd_filter *filter = &disk->queue->cmd_filter;
- struct kobject *parent = kobject_get(disk->holder_dir->parent);
- if (!parent)
- return -ENODEV;
+ ret = sysfs_create_group(kobj, &rcf_attr_group);
+ if (!ret)
+ ret = sysfs_create_link_to_group(disk->holder_dir->parent,
+ kobj, rcf_attr_group.name,
+ rcf_attr_group.name);
+ WARN_ON(ret);
- ret = kobject_init_and_add(&filter->kobj, &rcf_ktype, parent,
- "%s", "cmd_filter");
-
- if (ret < 0)
- return ret;
-
- return 0;
+ return ret;
}
EXPORT_SYMBOL(blk_register_filter);
void blk_unregister_filter(struct gendisk *disk)
{
- struct blk_cmd_filter *filter = &disk->queue->cmd_filter;
-
- kobject_put(&filter->kobj);
- kobject_put(disk->holder_dir->parent);
+ sysfs_remove_link(disk->holder_dir->parent, rcf_attr_group.name);
+ sysfs_remove_group(&disk->queue->kobj, &rcf_attr_group);
}
EXPORT_SYMBOL(blk_unregister_filter);
diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c
index a3ba217..d2813a1 100644
--- a/fs/sysfs/symlink.c
+++ b/fs/sysfs/symlink.c
@@ -19,22 +19,16 @@
#include "sysfs.h"
-static int sysfs_do_create_link(struct kobject *kobj, struct kobject *target,
+static int sysfs_sd_create_link(struct sysfs_dirent *parent_sd,
+ struct sysfs_dirent *target_sd,
const char *name, int warn)
{
- struct sysfs_dirent *parent_sd = NULL;
- struct sysfs_dirent *target_sd = NULL;
struct sysfs_dirent *sd = NULL;
struct sysfs_addrm_cxt acxt;
int error;
BUG_ON(!name);
- if (!kobj)
- parent_sd = &sysfs_root;
- else
- parent_sd = kobj->sd;
-
error = -EFAULT;
if (!parent_sd)
goto out_put;
@@ -43,8 +37,8 @@ static int sysfs_do_create_link(struct kobject *kobj, struct kobject *target,
* sysfs_assoc_lock. Fetch target_sd from it.
*/
spin_lock(&sysfs_assoc_lock);
- if (target->sd)
- target_sd = sysfs_get(target->sd);
+ if (target_sd)
+ target_sd = sysfs_get(target_sd);
spin_unlock(&sysfs_assoc_lock);
error = -ENOENT;
@@ -77,6 +71,19 @@ static int sysfs_do_create_link(struct kobject *kobj, struct kobject *target,
return error;
}
+static int sysfs_do_create_link(struct kobject *kobj, struct kobject *target,
+ const char *name, int warn)
+{
+ struct sysfs_dirent *parent_sd;
+
+ if (!kobj)
+ parent_sd = &sysfs_root;
+ else
+ parent_sd = kobj->sd;
+
+ return sysfs_sd_create_link(parent_sd, target->sd, name, warn);
+}
+
/**
* sysfs_create_link - create symlink between two objects.
* @kobj: object whose directory we're creating the link in.
@@ -104,6 +111,26 @@ int sysfs_create_link_nowarn(struct kobject *kobj, struct kobject *target,
return sysfs_do_create_link(kobj, target, name, 0);
}
+int sysfs_create_link_to_group(struct kobject *kobj, struct kobject *target,
+ const char *group, const char *linkname)
+{
+ struct sysfs_dirent *sd;
+ int ret;
+
+ BUG_ON(!kobj || !target);
+
+ sd = sysfs_get_dirent(target->sd, group);
+ if (!sd) {
+ WARN(!sd, KERN_WARNING "sysfs group %p not found for "
+ "kobject '%s'\n", group, kobject_name(target));
+ return -ENOENT;
+ }
+
+ ret = sysfs_sd_create_link(kobj->sd, sd, linkname, 1);
+ sysfs_put(sd);
+ return ret;
+}
+
/**
* sysfs_remove_link - remove symlink in object's directory.
* @kobj: object we're acting for.
@@ -213,4 +240,5 @@ const struct inode_operations sysfs_symlink_inode_operations = {
EXPORT_SYMBOL_GPL(sysfs_create_link);
+EXPORT_SYMBOL_GPL(sysfs_create_link_to_group);
EXPORT_SYMBOL_GPL(sysfs_remove_link);
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 44710d7..ca616b7 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -286,7 +286,6 @@ struct blk_queue_tag {
struct blk_cmd_filter {
unsigned long read_ok[BLK_SCSI_CMD_PER_LONG];
unsigned long write_ok[BLK_SCSI_CMD_PER_LONG];
- struct kobject kobj;
};
struct request_queue
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
index 37fa241..e9e0971 100644
--- a/include/linux/sysfs.h
+++ b/include/linux/sysfs.h
@@ -116,6 +116,8 @@ int sysfs_add_file_to_group(struct kobject *kobj,
const struct attribute *attr, const char *group);
void sysfs_remove_file_from_group(struct kobject *kobj,
const struct attribute *attr, const char *group);
+int sysfs_create_link_to_group(struct kobject *kobj, struct kobject *target,
+ const char *grpname, const char *linkname);
void sysfs_notify(struct kobject *kobj, char *dir, char *attr);
--
Jens Axboe
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong.
2008-09-09 10:29 ` Jens Axboe
@ 2008-09-09 12:14 ` Mariusz Kozlowski
2008-09-09 13:21 ` Jens Axboe
0 siblings, 1 reply; 11+ messages in thread
From: Mariusz Kozlowski @ 2008-09-09 12:14 UTC (permalink / raw)
To: Jens Axboe
Cc: FUJITA Tomonori, rjw, akpm, bzolnier, linux-kernel,
kernel-testers, linux-ide
Hi,
> > > > > > > > > Again 100% reproducible rmmod ide-cd_mod problem. Kernel is tainted because
> > > > > > > > > of earlier sysfs acpi problems similar (probably identical) to those reported
> > > > > > > > > by Li Zefan here http://marc.info/?l=linux-kernel&m=121921059026064&w=2
> > > > > > > > >
> > > > > > > > > Steps to reproduce: unload ide-cd_mod
> > > > > > > > >
> > > > > > > > > kobject (dd9e4a7c): tried to init an initialized object, something is seriously wrong.
> > > > > > > > > Pid: 4734, comm: modprobe Tainted: G W 2.6.27-rc5-mm1 #1
> > > > > > > > > [<c01ec982>] kobject_init+0xc4/0xc9
> > > > > > > > > [<c02cb84a>] ? _spin_unlock+0x27/0x3f
> > > > > > > > > [<c01aff2e>] ? sysfs_find_dirent+0x21/0x2b
> > > > > > > > > [<c01aff7e>] ? __sysfs_add_one+0x46/0x6d
> > > > > > > > > [<c01affb4>] ? sysfs_add_one+0xf/0x44
> > > > > > > > > [<c01b0036>] ? sysfs_addrm_start+0x4d/0x90
> > > > > > > > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > > > > > > > [<c01ec9c5>] kobject_init_and_add+0x14/0x30
> > > > > > > > > [<c01b1009>] ? sysfs_create_link+0x12/0x19
> > > > > > > > > [<c01e8bad>] blk_register_filter+0x3b/0x46
> > > > > > > > > [<ded9e40a>] ide_cd_probe+0x253/0x5a8 [ide_cd_mod]
> > > > > > > > > [<c01b0000>] ? sysfs_addrm_start+0x17/0x90
> > > > > > > > > [<c01b0f31>] ? sysfs_do_create_link+0x9a/0x14c
> > > > > > > > > [<c01b004e>] ? sysfs_addrm_start+0x65/0x90
> > > > > > > > > [<c025145f>] generic_ide_probe+0x1f/0x21
> > > > > > > > > [<c024c002>] driver_probe_device+0x77/0x15b
> > > > > > > > > [<c02cb91b>] ? _spin_unlock_irqrestore+0x39/0x60
> > > > > > > > > [<c024c146>] __driver_attach+0x60/0x62
> > > > > > > > > [<c024b7bd>] bus_for_each_dev+0x44/0x62
> > > > > > > > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > > > > > > > [<c024bead>] driver_attach+0x19/0x1b
> > > > > > > > > [<c024c0e6>] ? __driver_attach+0x0/0x62
> > > > > > > > > [<c024bca8>] bus_add_driver+0x1ab/0x213
> > > > > > > > > [<c0251461>] ? generic_ide_remove+0x0/0x1e
> > > > > > > > > [<c024c291>] driver_register+0x4f/0x118
> > > > > > > > > [<de7bf000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > > > > > > > > [<de7bf00d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > > > > > > > > [<c0101114>] do_one_initcall+0x24/0x12f
> > > > > > > > > [<c02c9d8e>] ? mutex_unlock+0x8/0xa
> > > > > > > > > [<c01455ca>] sys_init_module+0xa5/0x1c1
> > > > > > > > > [<c0176a0a>] ? sys_read+0x3d/0x64
> > > > > > > > > [<c01030f1>] sysenter_do_call+0x12/0x35
> > > > > > > > > [<c012007b>] ? __set_special_pids+0x43/0x71
> > > > > > > > >
> > > > > > > > > First time I modprobe/rmmod ide-cd_mod the system works but quickly gets unstable.
> > > > > > > > > Second modprobe/rmmod is 100% fatal. Memory gets corruped seriously I guess.
> > > > > > > > > pcspeaker beeps all the time, kernel throws dumps on the screen until
> > > > > > > > > its really dead, sadly blinking 'leds of panic' ;)
> > > > > > > >
> > > > > > > > Can you please verify if that happens with the current mainline?
> > > > > > >
> > > > > > > Oops. How come I didn't find it earlier? hmm...
> > > > > >
> > > > > > It's relatively new, that's why :) And this is the culprit:
> > > > > >
> > > > > > abf5439370491dd6fbb4fe1a7939680d2a9bc9d4 is first bad commit
> > > > > > commit abf5439370491dd6fbb4fe1a7939680d2a9bc9d4
> > > > > > Author: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> > > > > > Date: Sat Aug 16 14:10:05 2008 +0900
> > > > > >
> > > > > > block: move cmdfilter from gendisk to request_queue
> > > > > >
> > > > > > cmd_filter works only for the block layer SG_IO with SCSI block
> > > > > > devices. It breaks scsi/sg.c, bsg, and the block layer SG_IO with SCSI
> > > > > > character devices (such as st). We hit a kernel crash with them.
> > > > > >
> > > > > > The problem is that cmd_filter code accesses to gendisk (having struct
> > > > > > blk_scsi_cmd_filter) via inode->i_bdev->bd_disk. It works for only
> > > > > > SCSI block device files. With character device files, inode->i_bdev
> > > > > > leads you to struct cdev. inode->i_bdev->bd_disk->blk_scsi_cmd_filter
> > > > > > isn't safe.
> > > > > >
> > > > > > SCSI ULDs don't expose gendisk; they keep it private. bsg needs to be
> > > > > > independent on any protocols. We shouldn't change ULDs to expose their
> > > > > > gendisk.
> > > > > >
> > > > > > This patch moves struct blk_scsi_cmd_filter from gendisk to
> > > > > > request_queue, a common object, which eveyone can access to.
> > > > > >
> > > > > > The user interface doesn't change; users can change the filters via
> > > > > > /sys/block/. gendisk has a pointer to request_queue so the cmd_filter
> > > > > > code accesses to struct blk_scsi_cmd_filter.
> > > > > >
> > > > > > Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> > > > > > Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
> > > > > >
> > > > > > > This is current mainline:
> > > > > > >
> > > > > > > kobject (ddb049fc): tried to init an initialized object, something is seriously wrong.
> > > > > > > Pid: 4650, comm: modprobe Not tainted 2.6.27-rc5-00132-gb380b0d #8
> > > > > > > [<c01e3196>] kobject_init+0x6a/0x6c
> > > > > > > [<c01e35cb>] kobject_init_and_add+0x14/0x30
> > > > > > > [<c01e32f7>] ? kobject_get+0x12/0x17
> > > > > > > [<c01df89c>] blk_register_filter+0x4b/0x5a
> > > > > > > [<de839310>] ide_cd_probe+0x289/0x5ae [ide_cd_mod]
> > > > > > > [<c01aad99>] ? sysfs_addrm_start+0x65/0x90
> > > > > > > [<c01aba69>] ? sysfs_do_create_link+0x9a/0x11c
> > > > > > > [<c024f7a0>] generic_ide_probe+0x1f/0x21
> > > > > > > [<c024a672>] driver_probe_device+0x77/0x15b
> > > > > > > [<c02c8bdb>] ? _spin_unlock_irqrestore+0x39/0x60
> > > > > > > [<c024a7b6>] __driver_attach+0x60/0x62
> > > > > > > [<c0249e2a>] bus_for_each_dev+0x44/0x62
> > > > > > > [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> > > > > > > [<c024a51d>] driver_attach+0x19/0x1b
> > > > > > > [<c024a756>] ? __driver_attach+0x0/0x62
> > > > > > > [<c024a318>] bus_add_driver+0x1ae/0x216
> > > > > > > [<c024f7a2>] ? generic_ide_remove+0x0/0x1e
> > > > > > > [<c024a901>] driver_register+0x4f/0x118
> > > > > > > [<dee3500d>] ide_cdrom_init+0xd/0xf [ide_cd_mod]
> > > > > > > [<c010111a>] do_one_initcall+0x2a/0x14c
> > > > > > > [<c0108560>] ? native_sched_clock+0x58/0xa1
> > > > > > > [<dee35000>] ? ide_cdrom_init+0x0/0xf [ide_cd_mod]
> > > > > > > [<c013d042>] ? trace_hardirqs_on+0xb/0xd
> > > > > > > [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> > > > > > > [<c0147083>] sys_init_module+0x7e/0x19f
> > > > > > > [<c013cfaf>] ? trace_hardirqs_on_caller+0xac/0x134
> > > > > > > [<c01e8144>] ? trace_hardirqs_on_thunk+0xc/0x10
> > > > > > > [<c0103035>] sysenter_do_call+0x12/0x35
> > > > > > > [<c012007b>] ? put_fs_struct+0x5/0x2e
> > > > >
> > > > > ide-cd uses multiple gendisks share one request_queue?
> > > > >
> > > > > Here's a patch for mainline.
> > > >
> > > > Hmm, I don't think that it does. There's a queue per drive in the old
> > > > IDE driver, so there should be a 1:1 relation between queues and gendisk
> > > > there.
> > >
> > > I think the problem here is due to the usage of kobject_init_and_add().
> > > When we hit the add the second time, the ->state_initalised in the kojb
> > > is still 1. The below should fix it.
> > >
> > > The ->state_initalised stuff is a disaster imho, it should be shot and
> > > killed.
> > >
> > > diff --git a/block/blk-core.c b/block/blk-core.c
> > > index 6cb3c6d..820132b 100644
> > > --- a/block/blk-core.c
> > > +++ b/block/blk-core.c
> > > @@ -495,6 +495,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
> > > INIT_LIST_HEAD(&q->timeout_list);
> > >
> > > kobject_init(&q->kobj, &blk_queue_ktype);
> > > + kobject_init(&q->cmd_filter.kobj, &rcf_ktype);
> > >
> > > mutex_init(&q->sysfs_lock);
> > > spin_lock_init(&q->__queue_lock);
> > > diff --git a/block/blk.h b/block/blk.h
> > > index eb13740..47d6b22 100644
> > > --- a/block/blk.h
> > > +++ b/block/blk.h
> > > @@ -9,6 +9,7 @@
> > >
> > > extern struct kmem_cache *blk_requestq_cachep;
> > > extern struct kobj_type blk_queue_ktype;
> > > +extern struct kobj_type rcf_ktype;
> > >
> > > void init_request_from_bio(struct request *req, struct bio *bio);
> > > void blk_rq_bio_prep(struct request_queue *q, struct request *rq,
> > > diff --git a/block/cmd-filter.c b/block/cmd-filter.c
> > > index da7f7a4..9556e85 100644
> > > --- a/block/cmd-filter.c
> > > +++ b/block/cmd-filter.c
> > > @@ -201,7 +201,7 @@ static struct sysfs_ops rcf_sysfs_ops = {
> > > .store = rcf_attr_store,
> > > };
> > >
> > > -static struct kobj_type rcf_ktype = {
> > > +struct kobj_type rcf_ktype = {
> > > .sysfs_ops = &rcf_sysfs_ops,
> > > .default_attrs = default_attrs,
> > > };
> > > @@ -211,8 +211,7 @@ int blk_register_filter(struct gendisk *disk)
> > > int ret;
> > > struct blk_cmd_filter *filter = &disk->queue->cmd_filter;
> > >
> > > - ret = kobject_init_and_add(&filter->kobj, &rcf_ktype,
> > > - &disk_to_dev(disk)->kobj,
> > > + ret = kobject_add(&filter->kobj, &disk_to_dev(disk)->kobj,
> > > "%s", "cmd_filter");
> > > if (ret < 0)
> > > return ret;
> > >
> >
> > I applied your fix to 2.6.27-rc5-mm1 (it doesn't apply to mainline) and the result
> > is that when I first rmmod ide-cd_mod it's ok, but it seems that the module is not
> > unregistered because when you rmmod ide-cd_mod again immediately you will see this:
> >
> > BUG: atomic counter underflow at:
> > Pid: 4920, comm: rmmod Tainted: G W 2.6.27-rc5-mm1 #4
> > [<c01ec579>] ? kobject_release+0x0/0x59
> > [<c01ed300>] kref_put+0x4c/0x7c
> > [<c01ec4cc>] kobject_put+0x20/0x4e
> > [<c01aed10>] ? sysfs_hash_and_remove+0x50/0x57
> > [<c01e8d4b>] blk_unregister_filter+0x13/0x15
> > [<dedd822b>] ide_cd_remove+0xf/0x21 [ide_cd_mod]
> > [<c025147b>] generic_ide_remove+0x1a/0x1e
> > [<c024bdaf>] __device_release_driver+0x59/0x7f
> > [<c024be6c>] driver_detach+0x97/0x99
> > [<c024b26e>] bus_remove_driver+0x6f/0x8b
> > [<c024c231>] driver_unregister+0x2f/0x33
> > [<deddb341>] ide_cdrom_exit+0xd/0xf [ide_cd_mod]
> > [<c0143da5>] sys_delete_module+0x10d/0x1e2
> > [<c0162cbc>] ? do_munmap+0x1d7/0x234
> > [<c0163d13>] ? sys_munmap+0x30/0x36
> > [<c01030f1>] sysenter_do_call+0x12/0x35
> > =======================
> > hdc: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache
> >
> > Btw I found something interesting. On earlier kernels - 2.6.25 I can not remove ide-cd_mod
> > at all - it's still there when I lsmod modules:
> >
> > # modprobe ide-cd_mod
> > # rmmod ide-cd_mod
> > # rmmod ide-cd_mod
> > # rmmod ide-cd_mod
> > # rmmod ide-cd_mod
> > # rmmod ide-cd_mod
> > # rmmod ide-cd_mod
> > # rmmod ide-cd_mod
> > # lsmod | grep ide_cd
> > ide_cd_mod 29600 0
> > cdrom 32160 1 ide_cd_mod
> >
> > On the other hand on newer kernels (post 2.6.26 - these which did not blow up) right
> > after boot I have to run rmmod ide-cd_mod exactly three times to have ide-cd_mod
> > unloaded. If I modprobe and rmmod again it works as expected. Why is this?
> >
> > laptop mako # modprobe ide-cd_mod
> > laptop mako # rmmod ide-cd_mod
> > laptop mako # rmmod ide-cd_mod
> > laptop mako # rmmod ide-cd_mod
> > laptop mako # rmmod ide-cd_mod
> > ERROR: Module ide_cd_mod does not exist in /proc/modules
> > laptop mako # modprobe ide-cd_mod
> > laptop mako # rmmod ide-cd_mod
> > laptop mako # rmmod ide-cd_mod
> > ERROR: Module ide_cd_mod does not exist in /proc/modules
>
> Can you try the below patch from Elias?
Sure. It applied fine to clean current mainline. It looks ok now. No oopses and no BUGs.
But still after a fresh boot I see
# modprobe ide-cd_mod
# rmmod ide-cd_mod
# rmmod ide-cd_mod
# rmmod ide-cd_mod
ERROR: Module ide_cd_mod does not exist in /proc/modules
# modprobe ide-cd_mod
# rmmod ide-cd_mod
# rmmod ide-cd_mod
ERROR: Module ide_cd_mod does not exist in /proc/modules
You need to rmmod ide-cd_mod twice to get it unloaded. After another
modprobe/rmmod it works as expected.
Mariusz
Tested-by: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
> diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
> index 304ec73..0120c8e 100644
> --- a/block/blk-sysfs.c
> +++ b/block/blk-sysfs.c
> @@ -9,12 +9,6 @@
>
> #include "blk.h"
>
> -struct queue_sysfs_entry {
> - struct attribute attr;
> - ssize_t (*show)(struct request_queue *, char *);
> - ssize_t (*store)(struct request_queue *, const char *, size_t);
> -};
> -
> static ssize_t
> queue_var_show(unsigned int var, char *page)
> {
> diff --git a/block/blk.h b/block/blk.h
> index c79f30e..9ab0d6a 100644
> --- a/block/blk.h
> +++ b/block/blk.h
> @@ -10,6 +10,12 @@
> extern struct kmem_cache *blk_requestq_cachep;
> extern struct kobj_type blk_queue_ktype;
>
> +struct queue_sysfs_entry {
> + struct attribute attr;
> + ssize_t (*show)(struct request_queue *, char *);
> + ssize_t (*store)(struct request_queue *, const char *, size_t);
> +};
> +
> void init_request_from_bio(struct request *req, struct bio *bio);
> void blk_rq_bio_prep(struct request_queue *q, struct request *rq,
> struct bio *bio);
> diff --git a/block/cmd-filter.c b/block/cmd-filter.c
> index 228b644..fc0f0b2 100644
> --- a/block/cmd-filter.c
> +++ b/block/cmd-filter.c
> @@ -26,6 +26,8 @@
> #include <scsi/scsi.h>
> #include <linux/cdrom.h>
>
> +#include "blk.h"
> +
> int blk_verify_command(struct blk_cmd_filter *filter,
> unsigned char *cmd, int has_write_perm)
> {
> @@ -50,9 +52,9 @@ int blk_verify_command(struct blk_cmd_filter *filter,
> EXPORT_SYMBOL(blk_verify_command);
>
> /* and now, the sysfs stuff */
> -static ssize_t rcf_cmds_show(struct blk_cmd_filter *filter, char *page,
> - int rw)
> +static ssize_t rcf_cmds_show(struct request_queue *q, char *page, int rw)
> {
> + struct blk_cmd_filter *filter = &q->cmd_filter;
> char *npage = page;
> unsigned long *okbits;
> int i;
> @@ -76,24 +78,27 @@ static ssize_t rcf_cmds_show(struct blk_cmd_filter *filter, char *page,
> return npage - page;
> }
>
> -static ssize_t rcf_readcmds_show(struct blk_cmd_filter *filter, char *page)
> +static ssize_t rcf_readcmds_show(struct request_queue *q, char *page)
> {
> - return rcf_cmds_show(filter, page, READ);
> + return rcf_cmds_show(q, page, READ);
> }
>
> -static ssize_t rcf_writecmds_show(struct blk_cmd_filter *filter,
> - char *page)
> +static ssize_t rcf_writecmds_show(struct request_queue *q, char *page)
> {
> - return rcf_cmds_show(filter, page, WRITE);
> + return rcf_cmds_show(q, page, WRITE);
> }
>
> -static ssize_t rcf_cmds_store(struct blk_cmd_filter *filter,
> - const char *page, size_t count, int rw)
> +static ssize_t rcf_cmds_store(struct request_queue *q, const char *page,
> + size_t count, int rw)
> {
> + struct blk_cmd_filter *filter = &q->cmd_filter;
> unsigned long okbits[BLK_SCSI_CMD_PER_LONG], *target_okbits;
> int cmd, set;
> char *p, *status;
>
> + if (!capable(CAP_SYS_RAWIO))
> + return -EPERM;
> +
> if (rw == READ) {
> memcpy(&okbits, filter->read_ok, sizeof(okbits));
> target_okbits = filter->read_ok;
> @@ -128,31 +133,25 @@ static ssize_t rcf_cmds_store(struct blk_cmd_filter *filter,
> return count;
> }
>
> -static ssize_t rcf_readcmds_store(struct blk_cmd_filter *filter,
> - const char *page, size_t count)
> +static ssize_t rcf_readcmds_store(struct request_queue *q, const char *page,
> + size_t count)
> {
> - return rcf_cmds_store(filter, page, count, READ);
> + return rcf_cmds_store(q, page, count, READ);
> }
>
> -static ssize_t rcf_writecmds_store(struct blk_cmd_filter *filter,
> - const char *page, size_t count)
> +static ssize_t rcf_writecmds_store(struct request_queue *q, const char *page,
> + size_t count)
> {
> - return rcf_cmds_store(filter, page, count, WRITE);
> + return rcf_cmds_store(q, page, count, WRITE);
> }
>
> -struct rcf_sysfs_entry {
> - struct attribute attr;
> - ssize_t (*show)(struct blk_cmd_filter *, char *);
> - ssize_t (*store)(struct blk_cmd_filter *, const char *, size_t);
> -};
> -
> -static struct rcf_sysfs_entry rcf_readcmds_entry = {
> +static struct queue_sysfs_entry rcf_readcmds_entry = {
> .attr = { .name = "read_table", .mode = S_IRUGO | S_IWUSR },
> .show = rcf_readcmds_show,
> .store = rcf_readcmds_store,
> };
>
> -static struct rcf_sysfs_entry rcf_writecmds_entry = {
> +static struct queue_sysfs_entry rcf_writecmds_entry = {
> .attr = {.name = "write_table", .mode = S_IRUGO | S_IWUSR },
> .show = rcf_writecmds_show,
> .store = rcf_writecmds_store,
> @@ -164,72 +163,30 @@ static struct attribute *default_attrs[] = {
> NULL,
> };
>
> -#define to_rcf(atr) container_of((atr), struct rcf_sysfs_entry, attr)
> -
> -static ssize_t
> -rcf_attr_show(struct kobject *kobj, struct attribute *attr, char *page)
> -{
> - struct rcf_sysfs_entry *entry = to_rcf(attr);
> - struct blk_cmd_filter *filter;
> -
> - filter = container_of(kobj, struct blk_cmd_filter, kobj);
> - if (entry->show)
> - return entry->show(filter, page);
> -
> - return 0;
> -}
> -
> -static ssize_t
> -rcf_attr_store(struct kobject *kobj, struct attribute *attr,
> - const char *page, size_t length)
> -{
> - struct rcf_sysfs_entry *entry = to_rcf(attr);
> - struct blk_cmd_filter *filter;
> -
> - if (!capable(CAP_SYS_RAWIO))
> - return -EPERM;
> -
> - if (!entry->store)
> - return -EINVAL;
> -
> - filter = container_of(kobj, struct blk_cmd_filter, kobj);
> - return entry->store(filter, page, length);
> -}
> -
> -static struct sysfs_ops rcf_sysfs_ops = {
> - .show = rcf_attr_show,
> - .store = rcf_attr_store,
> -};
> -
> -static struct kobj_type rcf_ktype = {
> - .sysfs_ops = &rcf_sysfs_ops,
> - .default_attrs = default_attrs,
> +static struct attribute_group rcf_attr_group = {
> + .name = "cmd_filter",
> + .attrs = default_attrs,
> };
>
> int blk_register_filter(struct gendisk *disk)
> {
> + struct kobject *kobj = &disk->queue->kobj;
> int ret;
> - struct blk_cmd_filter *filter = &disk->queue->cmd_filter;
> - struct kobject *parent = kobject_get(disk->holder_dir->parent);
>
> - if (!parent)
> - return -ENODEV;
> + ret = sysfs_create_group(kobj, &rcf_attr_group);
> + if (!ret)
> + ret = sysfs_create_link_to_group(disk->holder_dir->parent,
> + kobj, rcf_attr_group.name,
> + rcf_attr_group.name);
> + WARN_ON(ret);
>
> - ret = kobject_init_and_add(&filter->kobj, &rcf_ktype, parent,
> - "%s", "cmd_filter");
> -
> - if (ret < 0)
> - return ret;
> -
> - return 0;
> + return ret;
> }
> EXPORT_SYMBOL(blk_register_filter);
>
> void blk_unregister_filter(struct gendisk *disk)
> {
> - struct blk_cmd_filter *filter = &disk->queue->cmd_filter;
> -
> - kobject_put(&filter->kobj);
> - kobject_put(disk->holder_dir->parent);
> + sysfs_remove_link(disk->holder_dir->parent, rcf_attr_group.name);
> + sysfs_remove_group(&disk->queue->kobj, &rcf_attr_group);
> }
> EXPORT_SYMBOL(blk_unregister_filter);
> diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c
> index a3ba217..d2813a1 100644
> --- a/fs/sysfs/symlink.c
> +++ b/fs/sysfs/symlink.c
> @@ -19,22 +19,16 @@
>
> #include "sysfs.h"
>
> -static int sysfs_do_create_link(struct kobject *kobj, struct kobject *target,
> +static int sysfs_sd_create_link(struct sysfs_dirent *parent_sd,
> + struct sysfs_dirent *target_sd,
> const char *name, int warn)
> {
> - struct sysfs_dirent *parent_sd = NULL;
> - struct sysfs_dirent *target_sd = NULL;
> struct sysfs_dirent *sd = NULL;
> struct sysfs_addrm_cxt acxt;
> int error;
>
> BUG_ON(!name);
>
> - if (!kobj)
> - parent_sd = &sysfs_root;
> - else
> - parent_sd = kobj->sd;
> -
> error = -EFAULT;
> if (!parent_sd)
> goto out_put;
> @@ -43,8 +37,8 @@ static int sysfs_do_create_link(struct kobject *kobj, struct kobject *target,
> * sysfs_assoc_lock. Fetch target_sd from it.
> */
> spin_lock(&sysfs_assoc_lock);
> - if (target->sd)
> - target_sd = sysfs_get(target->sd);
> + if (target_sd)
> + target_sd = sysfs_get(target_sd);
> spin_unlock(&sysfs_assoc_lock);
>
> error = -ENOENT;
> @@ -77,6 +71,19 @@ static int sysfs_do_create_link(struct kobject *kobj, struct kobject *target,
> return error;
> }
>
> +static int sysfs_do_create_link(struct kobject *kobj, struct kobject *target,
> + const char *name, int warn)
> +{
> + struct sysfs_dirent *parent_sd;
> +
> + if (!kobj)
> + parent_sd = &sysfs_root;
> + else
> + parent_sd = kobj->sd;
> +
> + return sysfs_sd_create_link(parent_sd, target->sd, name, warn);
> +}
> +
> /**
> * sysfs_create_link - create symlink between two objects.
> * @kobj: object whose directory we're creating the link in.
> @@ -104,6 +111,26 @@ int sysfs_create_link_nowarn(struct kobject *kobj, struct kobject *target,
> return sysfs_do_create_link(kobj, target, name, 0);
> }
>
> +int sysfs_create_link_to_group(struct kobject *kobj, struct kobject *target,
> + const char *group, const char *linkname)
> +{
> + struct sysfs_dirent *sd;
> + int ret;
> +
> + BUG_ON(!kobj || !target);
> +
> + sd = sysfs_get_dirent(target->sd, group);
> + if (!sd) {
> + WARN(!sd, KERN_WARNING "sysfs group %p not found for "
> + "kobject '%s'\n", group, kobject_name(target));
> + return -ENOENT;
> + }
> +
> + ret = sysfs_sd_create_link(kobj->sd, sd, linkname, 1);
> + sysfs_put(sd);
> + return ret;
> +}
> +
> /**
> * sysfs_remove_link - remove symlink in object's directory.
> * @kobj: object we're acting for.
> @@ -213,4 +240,5 @@ const struct inode_operations sysfs_symlink_inode_operations = {
>
>
> EXPORT_SYMBOL_GPL(sysfs_create_link);
> +EXPORT_SYMBOL_GPL(sysfs_create_link_to_group);
> EXPORT_SYMBOL_GPL(sysfs_remove_link);
> diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
> index 44710d7..ca616b7 100644
> --- a/include/linux/blkdev.h
> +++ b/include/linux/blkdev.h
> @@ -286,7 +286,6 @@ struct blk_queue_tag {
> struct blk_cmd_filter {
> unsigned long read_ok[BLK_SCSI_CMD_PER_LONG];
> unsigned long write_ok[BLK_SCSI_CMD_PER_LONG];
> - struct kobject kobj;
> };
>
> struct request_queue
> diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
> index 37fa241..e9e0971 100644
> --- a/include/linux/sysfs.h
> +++ b/include/linux/sysfs.h
> @@ -116,6 +116,8 @@ int sysfs_add_file_to_group(struct kobject *kobj,
> const struct attribute *attr, const char *group);
> void sysfs_remove_file_from_group(struct kobject *kobj,
> const struct attribute *attr, const char *group);
> +int sysfs_create_link_to_group(struct kobject *kobj, struct kobject *target,
> + const char *grpname, const char *linkname);
>
> void sysfs_notify(struct kobject *kobj, char *dir, char *attr);
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong.
2008-09-09 12:14 ` Mariusz Kozlowski
@ 2008-09-09 13:21 ` Jens Axboe
0 siblings, 0 replies; 11+ messages in thread
From: Jens Axboe @ 2008-09-09 13:21 UTC (permalink / raw)
To: Mariusz Kozlowski
Cc: FUJITA Tomonori, rjw, akpm, bzolnier, linux-kernel,
kernel-testers, linux-ide
On Tue, Sep 09 2008, Mariusz Kozlowski wrote:
> > > On the other hand on newer kernels (post 2.6.26 - these which did not blow up) right
> > > after boot I have to run rmmod ide-cd_mod exactly three times to have ide-cd_mod
> > > unloaded. If I modprobe and rmmod again it works as expected. Why is this?
> > >
> > > laptop mako # modprobe ide-cd_mod
> > > laptop mako # rmmod ide-cd_mod
> > > laptop mako # rmmod ide-cd_mod
> > > laptop mako # rmmod ide-cd_mod
> > > laptop mako # rmmod ide-cd_mod
> > > ERROR: Module ide_cd_mod does not exist in /proc/modules
> > > laptop mako # modprobe ide-cd_mod
> > > laptop mako # rmmod ide-cd_mod
> > > laptop mako # rmmod ide-cd_mod
> > > ERROR: Module ide_cd_mod does not exist in /proc/modules
> >
> > Can you try the below patch from Elias?
>
> Sure. It applied fine to clean current mainline. It looks ok now. No oopses and no BUGs.
> But still after a fresh boot I see
>
> # modprobe ide-cd_mod
> # rmmod ide-cd_mod
> # rmmod ide-cd_mod
> # rmmod ide-cd_mod
> ERROR: Module ide_cd_mod does not exist in /proc/modules
> # modprobe ide-cd_mod
> # rmmod ide-cd_mod
> # rmmod ide-cd_mod
> ERROR: Module ide_cd_mod does not exist in /proc/modules
>
> You need to rmmod ide-cd_mod twice to get it unloaded. After another
> modprobe/rmmod it works as expected.
Looks like something for Bart to look into.
--
Jens Axboe
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2008-09-09 13:21 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20080904224004.d3dd3076.akpm@linux-foundation.org>
2008-09-05 12:39 ` 2.6.27-rc5-mm1: rmmod ide-cd_mod: tried to init an initialized object, something is seriously wrong Mariusz Kozlowski
2008-09-05 13:28 ` Rafael J. Wysocki
[not found] ` <200809051528.54213.rjw-KKrjLPT3xs0@public.gmane.org>
2008-09-05 13:44 ` Mariusz Kozlowski
2008-09-05 16:25 ` Mariusz Kozlowski
[not found] ` <200809051825.04829.m.kozlowski-NWF1p15JEu3VItvQsEIGlw@public.gmane.org>
2008-09-06 12:35 ` FUJITA Tomonori
[not found] ` <20080906213525V.fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>
2008-09-08 8:43 ` Jens Axboe
[not found] ` <20080908084312.GF20055-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2008-09-08 9:27 ` Jens Axboe
2008-09-09 9:07 ` Mariusz Kozlowski
[not found] ` <200809091107.04629.m.kozlowski-NWF1p15JEu3VItvQsEIGlw@public.gmane.org>
2008-09-09 10:29 ` Jens Axboe
2008-09-09 12:14 ` Mariusz Kozlowski
2008-09-09 13:21 ` Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).