* 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
[parent not found: <200809051528.54213.rjw-KKrjLPT3xs0@public.gmane.org>]
* 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
[parent not found: <200809051825.04829.m.kozlowski-NWF1p15JEu3VItvQsEIGlw@public.gmane.org>]
* 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
[parent not found: <20080906213525V.fujita.tomonori-Zyj7fXuS5i5L9jVzuh4AOg@public.gmane.org>]
* 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
[parent not found: <20080908084312.GF20055-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>]
* 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
[parent not found: <200809091107.04629.m.kozlowski-NWF1p15JEu3VItvQsEIGlw@public.gmane.org>]
* 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).