LKML Archive on lore.kernel.org help / color / mirror / Atom feed
* 2.6.24.2: 4KSTACKS + PCA403CD IDE CD + pcdrw + mount + PREEMPT -> stack overflow @ 2008-02-24 1:56 Nix 2008-02-24 15:59 ` 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? Nix 0 siblings, 1 reply; 15+ messages in thread From: Nix @ 2008-02-24 1:56 UTC (permalink / raw) To: linux-kernel A loop mount/umounting a pcdrw or iso9660 (through the pktcdvd device) sees a stack overflow in four or five tries. Doing the same thing with the same CD in a normal non-pktcdvd-mounted drive doesn't cause a crash. Here's a couple of oopses. config follows. (There are a wide variety. Some I couldn't collect because they appeared to recurse, blurring past much too fast to read. Some simply didn't go out of the netconsole logger at all for no obvious reason.) (This may or may not be PREEMPT+PREEMPT_BKL-specific: I'll try turning them off tomorrow and repeating.) (The presence of dm in the first oops below must surely be attributed to preempt: certainly my CD isn't managed by dm :) ) pktcdvd: Fixed packets, 32 blocks, Mode-2 disc pktcdvd: Max. media speed: 4 pktcdvd: write speed 2x pktcdvd: 551232kB available on disc UDF-fs INFO UDF 0.9.8.1 (2004/29/09) Mounting volume 'LinuxUDF', timestamp 2004/02/09 07:10 (1000) do_IRQ: stack overflow: 480 Pid: 4645, comm: mount Not tainted 2.6.24.2-dirty #4 [<c0104171>] do_IRQ+0x66/0xc5 [<c0102f8b>] common_interrupt+0x23/0x28 [<c027b5da>] ide_outsl+0x5/0x9 [<c027c540>] ata_output_data+0x4d/0x64 [<c027b8a6>] atapi_output_bytes+0x19/0x3f [<c0285377>] cdrom_transfer_packet_command+0xb5/0xde [<c0282607>] cdrom_timer_expiry+0x0/0x51 [<c02840c3>] cdrom_start_packet_command+0x14f/0x157 [<c02853e9>] cdrom_do_pc_continuation+0x0/0x2c [<c027aa33>] ide_do_request+0x70a/0x943 [<c0363ef3>] schedule_timeout+0x13/0x8b [<c021faeb>] elv_drain_elevator+0x15/0x58 [<c0220277>] elv_insert+0xf6/0x1d9 [<c0285377>] cdrom_transfer_packet_command+0xb5/0xde [<c0282607>] cdrom_timer_expiry+0x0/0x51 [<c027b038>] ide_do_drive_cmd+0x99/0xe9 [<c0282abe>] cdrom_queue_packet_command+0x35/0xa9 [<c0363b2b>] schedule+0x321/0x33e [<c0363ef3>] schedule_timeout+0x13/0x8b [<c0282d11>] cdrom_read_tocentry+0x96/0xa1 [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c028315b>] cdrom_read_toc+0x14b/0x42e [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c027b07e>] ide_do_drive_cmd+0xdf/0xe9 [<c0283ed2>] ide_cdrom_audio_ioctl+0x13c/0x1de [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0282f42>] cdrom_check_status+0x55/0x60 [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c02865ba>] cdrom_count_tracks+0x64/0x16a [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c02896c4>] cdrom_open+0x190/0x8f8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c02252d3>] get_disk+0x4e/0x65 [<c02252f1>] exact_lock+0x7/0xd [<c025a2cc>] kobj_lookup+0x104/0x12e [<c02828e8>] idecd_open+0x72/0x86 [<c0174458>] do_open+0x198/0x238 [<c02afbd9>] clone_endio+0x0/0xa3 [<c0174561>] __blkdev_get+0x69/0x74 [<c017457e>] blkdev_get+0x12/0x14 [<c0263333>] pkt_open+0x8d/0xc96 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c022998c>] kobject_get+0xf/0x13 [<c02252d3>] get_disk+0x4e/0x65 [<c02252f1>] exact_lock+0x7/0xd [<c025a2cc>] kobj_lookup+0x104/0x12e [<c0224ed0>] exact_match+0x0/0x4 [<c0174344>] do_open+0x84/0x238 [<c0174561>] EIP: 0060:[<c01033d2>] EFLAGS: 00010093 CPU: 0 EIP is at dump_trace+0x52/0x8b EAX: 0000082a EBX: 00000046 ECX: 0000020a EDX: 00000000 ESI: 00000000 EDI: 00000000 EBP: 00000ffc ESP: eeede1c4 DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068 rocess mount (pid: 4645, ti=eeede000 task=ee537320 task.ti=eeede000)v<tack: 00001000 c03f6c0c 00000000 c0523b64 00000000 c0103423 c036e79c c03f6c0c 00000002 c0103bf2 c03f6c0c c0103f85 c03ccd19 00001225 ee5375d0 c0505178 c0429436 00000002 c0429477 eeede220 0000000d c0104171 c03cce23 000001e0 Call Trace: [<c0103423>] show_trace_log_lvl+0x18/0x2c [<c0103bf2>] show_trace+0xf/0x11 [<c0103f85>] dump_stack+0x68/0x6d [<c0104171>] do_IRQ+0x66/0xc5 [<c0102f8b>] common_interrupt+0x23/0x28 [<c027b5da>] ide_outsl+0x5/0x9 [<c027c540>] ata_output_data+0x4d/0x64 [<c027b8a6>] atapi_output_bytes+0x19/0x3f [<c0285377>] cdrom_transfer_packet_command+0xb5/0xde [<c0282607>] cdrom_timer_expiry+0x0/0x51 [<c02840c3>] cdrom_start_packet_command+0x14f/0x157 [<c02853e9>] cdrom_do_pc_continuation+0x0/0x2c [<c027aa33>] ide_do_request+0x70a/0x943 [<c0363ef3>] schedule_timeout+0x13/0x8b [<c021faeb>] elv_drain_elevator+0x15/0x58 [<c0220277>] elv_insert+0xf6/0x1d9 [<c0285377>] cdrom_transfer_packet_command+0xb5/0xde [<c0282607>] cdrom_timer_expiry+0x0/0x51 [<c027b038>] ide_do_drive_cmd+0x99/0xe9 [<c0282abe>] cdrom_queue_packet_command+0x35/0xa9 [<c0363b2b>] schedule+0x321/0x33e [<c0363ef3>] schedule_timeout+0x13/0x8b [<c0282d11>] cdrom_read_tocentry+0x96/0xa1 [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c028315b>] cdrom_read_toc+0x14b/0x42e [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c027b07e>] ide_do_drive_cmd+0xdf/0xe9 [<c0283ed2>] ide_cdrom_audio_ioctl+0x13c/0x1de [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0282f42>] cdrom_check_status+0x55/0x60 [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c02865ba>] cdrom_count_tracks+0x64/0x16a [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c02896c4>] cdrom_open+0x190/0x8f8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c02252d3>] get_disk+0x4e/0x65 [<c02252f1>] exact_lock+0x7/0xd [<c025a2cc>] kobj_lookup+0x104/0x12e [<c02828e8>] idecd_open+0x72/0x86 [<c0174458>] do_open+0x198/0x238 [<c02afbd9>] clone_endio+0x0/0xa3 [<c0174561>] __blkdev_get+0x69/0x74 [<c017457e>] blkdev_get+0x12/0x14 [<c0263333>] pkt_open+0x8d/0xc96 [<c017162c>] dump_trace+0x52/0x8b [<c0103423>] show_trace_log_lvl+0x18/0x2c [<c0103bf2>] show_trace+0xf/0x11 [<c0103f85>] dump_stack+0x68/0x6d [<c0104171>] do_IRQ+0x66/0xc5 [<c0102f8b>] common_interrupt+0x23/0x28 [<c027b5da>] ide_outsl+0x5/0x9 [<c027c540>] ata_output_data+0x4d/0x64 [<c027b8a6>] atapi_output_bytes+0x19/0x3f [<c0285377>] cdrom_transfer_packet_command+0xb5/0xde [<c0282607>] cdrom_timer_expiry+0x0/0x51 [<c02840c3>] cdrom_start_packet_command+0x14f/0x157 [<c02853e9>] cdrom_do_pc_continuation+0x0/0x2c [<c027aa33>] ide_do_request+0x70a/0x943 [<c0363ef3>] schedule_timeout+0x13/0x8b [<c021faeb>] elv_drain_elevator+0x15/0x58 [<c0220277>] elv_insert+0xf6/0x1d9 [<c0285377>] cdrom_transfer_packet_command+0xb5/0xde [<c0282607>] cdrom_timer_expiry+0x0/0x51 [<c027b038>] ide_do_drive_cmd+0x99/0xe9 [<c0282abe>] cdrom_queue_packet_command+0x35/0xa9 [<c0363b2b>] schedule+0x321/0x33e [<c0363ef3>] schedule_timeout+0x13/0x8b [<c0282d11>] cdrom_read_tocentry+0x96/0xa1 [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c028315b>] cdrom_read_toc+0x14b/0x42e [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c027b07e>] ide_do_drive_cmd+0xdf/0xe9 [<c0283ed2>] ide_cdrom_audio_ioctl+0x13c/0x1de [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0282f42>] cdrom_check_status+0x55/0x60 [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c02865ba>] cdrom_count_tracks+0x64/0x16a [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c02896c4>] cdrom_open+0x190/0x8f8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c02afbd9>] console [netcon0] enabled Second oops: netconsole: network logging started pktcdvd: Fixed packets, 32 blocks, Mode-2 disc pktcdvd: Max. media speed: 4 pktcdvd: write speed 2x pktcdvd: 551232kB available on disc UDF-fs INFO UDF 0.9.8.1 (2004/29/09) Mounting volume 'LinuxUDF', timestamp 2004/05/03 13:03 (1000) do_IRQ: stack overflow: 388 Pid: 1515, comm: mount Not tainted 2.6.24.2-dirty #4 [<c0104171>] do_IRQ+0x66/0xc5 [<c027c540>] ata_output_data+0x4d/0x64 [<c0102f8b>] common_interrupt+0x23/0x28 [<c027c60d>] ide_outb+0x1/0x2 [<c0284015>] cdrom_start_packet_command+0xa1/0x157 [<c02853e9>] cdrom_do_pc_continuation+0x0/0x2c [<c027aa33>] ide_do_request+0x70a/0x943 [<c0363ef3>] schedule_timeout+0x13/0x8b [<c0363ef3>] schedule_timeout+0x13/0x8b [<c027c540>] ata_output_data+0x4d/0x64 [<c021faeb>] elv_drain_elevator+0x15/0x58 [<c0220277>] elv_insert+0xf6/0x1d9 [<c0363d78>] wait_for_common+0xb6/0x12f [<c0221ee4>] __blk_put_request+0x1e/0x6f [<c027b038>] ide_do_drive_cmd+0x99/0xe9 [<c0282abe>] cdrom_queue_packet_command+0x35/0xa9 [<c0282abe>] cdrom_queue_packet_command+0x35/0xa9 [<c0363ef3>] schedule_timeout+0x13/0x8b [<c0285b5b>] ide_cdrom_packet+0x80/0xa1 [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c0286be0>] cdrom_get_track_info+0x91/0x9e [<c0286c49>] cdrom_get_last_written+0x5c/0x107 [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c02833f7>] cdrom_read_toc+0x3e7/0x42e [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c0283ed2>] ide_cdrom_audio_ioctl+0x13c/0x1de [<c0282f42>] cdrom_check_status+0x55/0x60 [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c02865ba>] cdrom_count_tracks+0x64/0x16a [<c02896c4>] cdrom_open+0x190/0x8f8 [<c02252d3>] get_disk+0x4e/0x65 [<c02252f1>] exact_lock+0x7/0xd [<c025a2cc>] kobj_lookup+0x104/0x12e [<c02828e8>] idecd_open+0x72/0x86 [<c0174458>] do_open+0x198/0x238 [<c0174561>] __blkdev_get+0x69/0x74 [<c017457e>] [<c02252d3>] get_disk+0x4e/0x65 [<c02252f1>] exact_lock+0x7/0xd [<c025a2cc>] kobj_lookup+0x104/0x12e [<c0224ed0>] exact_match+0x0/0x4 [<c0174344>] do_open+0x84/0x238 [<c0174561>] __blkdev_get+0x69/0x74 [<c017457e>] blkdev_get+0x12/0x14 [<c0174894>] open_bdev_excl+0x2b/0x65 [<c0155f20>] get_sb_bdev+0x14/0x108 [<c021182c>] udf_get_sb+0x20/0x25 [<c0213197>] udf_fill_super+0x0/0xb63 [<c0155e04>] vfs_kern_mount+0x40/0x79 [<c0155e86>] do_kern_mount+0x35/0xbb [<c0167b7d>] do_mount+0x5da/0x621 [<c01669e9>] mntput_no_expire+0x13/0x7c [<c015c6a4>] link_path_walk+0xa5/0xaf [<c01445e9>] handle_mm_fault+0x263/0x531 [<c01383b8>] find_lock_page+0x1f/0x96 [<c013a485>] filemap_fault+0x21d/0x37d [<c015d140>] __user_walk_fd+0x3d/0x45 [<c013cb08>] __alloc_pages+0x5d/0x2d9 [<c013cdb6>] __get_free_pages+0x32/0x4d [<c0166669>] copy_mount_options+0x26/0x10d [<c0167c3b>] sys_mount+0x77/0xb3 [<c010257a>] sysenter_past_esp+0x5f/0x85 [<c031ffff>] __ip_route_output_key+0x257/0x733 BUG: unable to handle kernel paging request at virtual address 83c70a74 printing eip: c01033d2 *pde = 00000000 Oops: 0000 [#1] PREEMPT Modules linked in: netconsole Pid: 1515, comm: mount Not tainted (2.6.24.2-dirty #4) EIP: 0060:[<c01033d2>] EFLAGS: 00010097 CPU: 0 EIP is at dump_trace+0x52/0x8b EAX: 00000114 EBX: 83c70a74 ECX: 00000045 EDX: 00000000 ESI: 470a2c47 EDI: 83c70000 EBP: 83c70ffc ESP: ee401168 DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068 Process mount (pid: 1515, ti=ee401000 task=eef86680 task.ti=ee401000) Stack: 63736e2f c03f6c0c 00000000 0000001c 00000000 c0103423 c036e79c c03f6c0c 00000002 c0103bf2 c03f6c0c c0103f85 c03ccd19 000005eb eef86930 c0505178 c0429436 00000002 c0429477 ee4011c4 c0523bbc c0104171 c03cce23 00000184 Call Trace: [<c0103423>] show_trace_log_lvl+0x18/0x2c [<c0103bf2>] show_trace+0xf/0x11 [<c0103f85>] dump_stack+0x68/0x6d [<c0104171>] do_IRQ+0x66/0xc5 [<c027c540>] ata_output_data+0x4d/0x64 [<c0102f8b>] common_interrupt+0x23/0x28 [<c027c60d>] ide_outb+0x1/0x2 [<c0284015>] cdrom_start_packet_command+0xa1/0x157 [<c02853e9>] cdrom_do_pc_continuation+0x0/0x2c [<c027aa33>] ide_do_request+0x70a/0x943 [<c0363ef3>] schedule_timeout+0x13/0x8b [<c0363ef3>] schedule_timeout+0x13/0x8b [<c027c540>] ata_output_data+0x4d/0x64 [<c021faeb>] elv_drain_elevator+0x15/0x58 [<c0220277>] elv_insert+0xf6/0x1d9 [<c0363d78>] wait_for_common+0xb6/0x12f [<c0221ee4>] __blk_put_request+0x1e/0x6f [<c027b038>] ide_do_drive_cmd+0x99/0xe9 idecd_open+0x72/0x86 do_open+0x198/0x238 [<c0174561>] __blkdev_get+0x69/0x74 [<c017457e>] blkdev_get+0x12/0x14 [<c0263333>] pkt_open+0x8d/0xc96 [<c022998c>] kobject_get+0xf/0x13 [<c02252d3>] get_disk+0x4e/0x65 [<c02252f1>] exact_lock+0x7/0xd [<c025a2cc>] kobj_lookup+0x104/0x12e [<c0224ed0>] exact_match+0x0/0x4 [<c0174344>] do_open+0x84/0x238 [<c0174561>] __blkdev_get+0x69/0x74 [<c017457e>] blkdev_get+0x12/0x14 [<c0174894>] open_bdev_excl+0x2b/0x65 [<c0155f20>] get_sb_bdev+0x14/0x108 [<c021182c>] udf_get_sb+0x20/0x25 [<c0213197>] udf_fill_super+0x0/0xb63 [<c0155e04>] vfs_kern_mount+0x40/0x79 [<c0155e86>] do_kern_mount+0x35/0xbb [<c0167b7d>] do_mount+0x5da/0x621 [<c01669e9>] mntput_no_expire+0x13/0x7c [<c015c6a4>] link_path_walk+0xa5/0xaf [<c01445e9>] handle_mm_fault+0x263/0x531 [<c01383b8>] find_lock_page+0x1f/0x96 [<c013a485>] filemap_fault+0x21d/0x37d [<c015d140>] __user_walk_fd+0x3d/0x45 [<c013cb08>] __alloc_pages+0x5d/0x2d9 [<c013cdb6>] __get_free_pages+0x32/0x4d [<c0166669>] copy_mount_options+0x26/0x10d [<c0167c3b>] sys_mount+0x77/0xb3 [<c010257a>] sysenter_past_esp+0x5f/0x85 [<c03117eb>] dev_ethtool+0x5f2/0xbdf BUG: unable to handle kernel paging request at virtual address 0f742024 printing eip: c01033d2 *pde = 00000000 Recursive die() failure, output suppressed ---[ end trace b1006dcd2ea53f36 ]--- BUG: unable to handle kernel NULL pointer dereference at virtual address 00000069 printing eip: c0116289 *pde = 00000000 Oops: 0000 [#3] PREEMPT Modules linked in: netconsole Pid: 1515, comm: mount Tainted: G D (2.6.24.2-dirty #4) EIP: 0060:[<c0116289>] EFLAGS: 00010246 CPU: 0 EIP is at do_exit+0x20f/0x658 EAX: 00000045 EBX: 00000001 ECX: eef86c78 EDX: 00000000 ESI: eef86680 EDI: 0000000b EBP: 00000046 ESP: ee400e2c DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068 Process mount (pid: 1515, ti=ee400000 task=eef86680 task.ti=ee401000) Stack: 00000093 ee400ed0 00000000 c03d103b 00000046 c01141d4 c03d12cf ee400e58 ee400e58 ee400ed0 00000000 c03d103b 00000046 c010383d c03cca34 eef3d200 eef86680 0f742024 00000000 eef3d200 eef86680 0f742024 c0366770 c03e5efb Call Trace: [<c01141d4>] printk+0x1b/0x1f [<c010383d>] die+0x1a8/0x1b0 [<c0366770>] do_page_fault+0x502/0x5e2 [<c036626e>] do_page_fault+0x0/0x5e2 [<c0365032>] error_code+0x6a/0x70 [<c01033d2>] dump_trace+0x52/0x8b [<c01141d4>] printk+0x1b/0x1f [<c0103423>] show_trace_log_lvl+0x18/0x2c [<c01034d2>] show_stack_log_lvl+0x9b/0xa3 [<c0103579>] show_registers+0x9f/0x1bb [<c01264ee>] notify_die+0x30/0x34 [<c0103783>] die+0xee/0x1b0 [<c0366770>] do_page_fault+0x502/0x5e2 [<c036626e>] do_page_fault+0x0/0x5e2 [<c0365032>] error_code+0x6a/0x70 ======================= Code: 00 89 f0 e8 ae cd 01 00 85 db 74 19 8b 86 CONFIG_X86_32=y CONFIG_X86=y CONFIG_GENERIC_TIME=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_MMU=y CONFIG_ZONE_DMA=y CONFIG_QUICKLIST=y CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_DMI=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_ARCH_SUPPORTS_OPROFILE=y CONFIG_ARCH_POPULATES_NODE_MAP=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" 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_LOG_BUF_SHIFT=14 CONFIG_CGROUPS=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_FAIR_CGROUP_SCHED=y CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="usr/initramfs.hades" CONFIG_INITRAMFS_ROOT_UID=99 CONFIG_INITRAMFS_ROOT_GID=101 CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_SYSCTL=y CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y CONFIG_ELF_CORE=y CONFIG_BASE_FULL=y CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_VM_EVENT_COUNTERS=y CONFIG_SLAB=y CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_KMOD=y CONFIG_BLOCK=y CONFIG_BLK_DEV_IO_TRACE=y CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=m CONFIG_IOSCHED_DEADLINE=m CONFIG_IOSCHED_CFQ=y CONFIG_DEFAULT_CFQ=y CONFIG_DEFAULT_IOSCHED="cfq" CONFIG_TICK_ONESHOT=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y CONFIG_X86_PC=y CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y CONFIG_MK7=y CONFIG_X86_CMPXCHG=y CONFIG_X86_L1_CACHE_SHIFT=6 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_GOOD_APIC=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_USE_3DNOW=y CONFIG_X86_TSC=y CONFIG_X86_CMOV=y CONFIG_X86_MINIMUM_CPU_FAMILY=4 CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y CONFIG_PREEMPT=y CONFIG_PREEMPT_BKL=y 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_VM86=y CONFIG_X86_MSR=m CONFIG_X86_CPUID=m CONFIG_NOHIGHMEM=y CONFIG_PAGE_OFFSET=0xC0000000 CONFIG_PROC_MM=y CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y CONFIG_FLATMEM_MANUAL=y CONFIG_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_SPARSEMEM_STATIC=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_NR_QUICK=1 CONFIG_VIRT_TO_BUS=y CONFIG_MTRR=y CONFIG_SECCOMP=y CONFIG_HZ_1000=y CONFIG_HZ=1000 CONFIG_PHYSICAL_START=0x100000 CONFIG_PHYSICAL_ALIGN=0x100000 CONFIG_PM=y CONFIG_PM_LEGACY=y CONFIG_SUSPEND_UP_POSSIBLE=y CONFIG_HIBERNATION_UP_POSSIBLE=y CONFIG_PCI=y CONFIG_PCI_GOANY=y CONFIG_PCI_BIOS=y CONFIG_PCI_DIRECT=y CONFIG_PCI_DOMAINS=y CONFIG_ARCH_SUPPORTS_MSI=y CONFIG_ISA_DMA_API=y CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_PACKET_MMAP=y CONFIG_UNIX=y CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_FIB_HASH=y CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y CONFIG_PARPORT=m CONFIG_PARPORT_PC=m CONFIG_PARPORT_1284=y CONFIG_BLK_DEV=y CONFIG_BLK_DEV_FD=y CONFIG_BLK_DEV_LOOP=m CONFIG_BLK_DEV_CRYPTOLOOP=m CONFIG_BLK_DEV_NBD=m CONFIG_CDROM_PKTCDVD=y CONFIG_CDROM_PKTCDVD_BUFFERS=16 CONFIG_MISC_DEVICES=y CONFIG_IDE=y CONFIG_BLK_DEV_IDE=y CONFIG_BLK_DEV_IDEDISK=y CONFIG_IDEDISK_MULTI_MODE=y CONFIG_BLK_DEV_IDECD=y CONFIG_IDE_GENERIC=y CONFIG_BLK_DEV_IDEPCI=y CONFIG_IDEPCI_SHARE_IRQ=y CONFIG_IDEPCI_PCIBUS_ORDER=y CONFIG_BLK_DEV_OFFBOARD=y CONFIG_BLK_DEV_GENERIC=y CONFIG_BLK_DEV_IDEDMA_PCI=y CONFIG_BLK_DEV_PDC202XX_NEW=y CONFIG_BLK_DEV_VIA82CXXX=y CONFIG_BLK_DEV_IDEDMA=y CONFIG_IDE_ARCH_OBSOLETE_INIT=y CONFIG_SCSI=m CONFIG_SCSI_DMA=y CONFIG_BLK_DEV_SD=m CONFIG_SCSI_SCAN_ASYNC=y CONFIG_SCSI_WAIT_SCAN=m CONFIG_SCSI_LOWLEVEL=y CONFIG_MD=y CONFIG_BLK_DEV_DM=y CONFIG_DM_CRYPT=y CONFIG_DM_SNAPSHOT=y CONFIG_DM_MIRROR=y CONFIG_DM_ZERO=y CONFIG_NETDEVICES=y CONFIG_DUMMY=m CONFIG_NET_ETHERNET=y CONFIG_MII=y CONFIG_NET_VENDOR_3COM=y CONFIG_VORTEX=y CONFIG_INPUT=y CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV_PSAUX=y CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 CONFIG_INPUT_JOYDEV=y CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ATKBD=y CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y CONFIG_MOUSE_PS2_ALPS=y CONFIG_MOUSE_PS2_LOGIPS2PP=y CONFIG_MOUSE_PS2_SYNAPTICS=y CONFIG_MOUSE_PS2_LIFEBOOK=y CONFIG_MOUSE_PS2_TRACKPOINT=y CONFIG_INPUT_JOYSTICK=y CONFIG_JOYSTICK_ANALOG=y CONFIG_INPUT_MISC=y CONFIG_SERIO=y CONFIG_SERIO_I8042=y CONFIG_SERIO_LIBPS2=y CONFIG_GAMEPORT=y CONFIG_GAMEPORT_EMU10K1=y CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y CONFIG_SERIAL_8250=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_SERIAL_8250_PCI=y CONFIG_SERIAL_8250_NR_UARTS=4 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_CORE=y CONFIG_UNIX98_PTYS=y CONFIG_PRINTER=m CONFIG_RTC=y CONFIG_DEVPORT=y CONFIG_I2C=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_CHARDEV=y CONFIG_I2C_VIAPRO=y CONFIG_HWMON=y CONFIG_HWMON_VID=y CONFIG_SENSORS_W83627HF=y CONFIG_SSB_POSSIBLE=y CONFIG_VIDEO_DEV=y CONFIG_VIDEO_V4L2=y CONFIG_VIDEO_CAPTURE_DRIVERS=y CONFIG_VIDEO_HELPER_CHIPS_AUTO=y CONFIG_V4L_USB_DRIVERS=y CONFIG_USB_SN9C102=y CONFIG_AGP=y CONFIG_AGP_VIA=y CONFIG_DRM=m CONFIG_DRM_RADEON=m CONFIG_VGA_CONSOLE=y CONFIG_VIDEO_SELECT=y CONFIG_DUMMY_CONSOLE=y CONFIG_SOUND=y CONFIG_SND=y CONFIG_SND_TIMER=y CONFIG_SND_PCM=y CONFIG_SND_HWDEP=y CONFIG_SND_RAWMIDI=y CONFIG_SND_SEQUENCER=y CONFIG_SND_SEQ_DUMMY=m CONFIG_SND_OSSEMUL=y CONFIG_SND_MIXER_OSS=y CONFIG_SND_PCM_OSS=y CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_SEQUENCER_OSS=y CONFIG_SND_RTCTIMER=y CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y CONFIG_SND_SUPPORT_OLD_API=y CONFIG_SND_VERBOSE_PROCFS=y CONFIG_SND_MPU401_UART=m CONFIG_SND_AC97_CODEC=y CONFIG_SND_MPU401=m CONFIG_SND_EMU10K1=y CONFIG_SND_INTEL8X0=y CONFIG_AC97_BUS=y CONFIG_HID_SUPPORT=y CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y CONFIG_USB=y CONFIG_USB_DEVICEFS=y CONFIG_USB_DYNAMIC_MINORS=y CONFIG_USB_UHCI_HCD=y CONFIG_USB_PRINTER=y CONFIG_USB_STORAGE=m CONFIG_AUXDISPLAY=y CONFIG_DMIID=y CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_POSIX_ACL=y CONFIG_EXT3_FS=y CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_JBD=y CONFIG_FS_MBCACHE=y CONFIG_REISERFS_FS=y CONFIG_REISERFS_FS_XATTR=y CONFIG_REISERFS_FS_POSIX_ACL=y CONFIG_FS_POSIX_ACL=y CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y CONFIG_PRINT_QUOTA_WARNING=y CONFIG_QFMT_V2=y CONFIG_QUOTACTL=y CONFIG_DNOTIFY=y CONFIG_FUSE_FS=y CONFIG_GENERIC_ACL=y CONFIG_ISO9660_FS=y CONFIG_JOLIET=y CONFIG_ZISOFS=y CONFIG_UDF_FS=y CONFIG_UDF_NLS=y CONFIG_FAT_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=m CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" CONFIG_PROC_FS=y CONFIG_PROC_SYSCTL=y CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y CONFIG_CONFIGFS_FS=y CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_NFS_V3_ACL=y CONFIG_NFSD=y CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3=y CONFIG_NFSD_V3_ACL=y CONFIG_NFSD_TCP=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=y CONFIG_NFS_ACL_SUPPORT=y CONFIG_NFS_COMMON=y CONFIG_SUNRPC=y CONFIG_PARTITION_ADVANCED=y CONFIG_MSDOS_PARTITION=y CONFIG_NLS=y CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_ASCII=m CONFIG_NLS_ISO8859_1=y CONFIG_NLS_ISO8859_15=m CONFIG_NLS_UTF8=m CONFIG_INSTRUMENTATION=y CONFIG_PROFILING=y CONFIG_OPROFILE=y CONFIG_KPROBES=y CONFIG_MARKERS=y CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_ENABLE_WARN_DEPRECATED=y CONFIG_ENABLE_MUST_CHECK=y CONFIG_DEBUG_FS=y CONFIG_DEBUG_KERNEL=y CONFIG_DETECT_SOFTLOCKUP=y CONFIG_SCHEDSTATS=y CONFIG_TIMER_STATS=y CONFIG_DEBUG_BUGVERBOSE=y CONFIG_EARLY_PRINTK=y CONFIG_DEBUG_STACKOVERFLOW=y CONFIG_4KSTACKS=y CONFIG_X86_FIND_SMP_CONFIG=y CONFIG_X86_MPPARSE=y CONFIG_DOUBLEFAULT=y CONFIG_SECURITY_FILE_CAPABILITIES=y CONFIG_CRYPTO=y CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_BLKCIPHER=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_CBC=y CONFIG_BITREVERSE=y CONFIG_CRC32=y CONFIG_ZLIB_INFLATE=y CONFIG_PLIST=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-24 1:56 2.6.24.2: 4KSTACKS + PCA403CD IDE CD + pcdrw + mount + PREEMPT -> stack overflow Nix @ 2008-02-24 15:59 ` Nix 2008-02-24 16:56 ` Peter Osterlund 0 siblings, 1 reply; 15+ messages in thread From: Nix @ 2008-02-24 15:59 UTC (permalink / raw) To: linux-kernel; +Cc: petero2, dm-devel On 24 Feb 2008, nix@esperi.org.uk outgrape: > A loop mount/umounting a pcdrw or iso9660 (through the pktcdvd device) > sees a stack overflow in four or five tries. Doing the same thing with > the same CD in a normal non-pktcdvd-mounted drive doesn't cause a crash. > (This may or may not be PREEMPT+PREEMPT_BKL-specific: I'll try turning > them off tomorrow and repeating.) It is not preempt-specific, nor dm-specific. Nor it is very easy to capture tracebacks of: even netconsole generally gives up when faced with a string of recursive tracebacks blurring past forever at blinding speed. But while I'd normally blame pktcdvd there's only one pktcdvd function in these tracebacks (pkt_open) and it's not got a significant stack footprint. More notable is a great stack of mutual recursion between dm_bio_destructor() and the CDROM code: it seems to burn most of the stack on this sort of thrashing. Here's one of those tracebacks again: do_IRQ: stack overflow: 480 id: 4645, comm: mount Not tainted 2.6.24.2-dirty #4 [<c0104171>] do_IRQ+0x66/0xc5 [<c0102f8b>] common_interrupt+0x23/0x28 [<c027b5da>] ide_outsl+0x5/0x9 [<c027c540>] ata_output_data+0x4d/0x64 [<c027b8a6>] atapi_output_bytes+0x19/0x3f [<c0285377>] cdrom_transfer_packet_command+0xb5/0xde [<c0282607>] cdrom_timer_expiry+0x0/0x51 [<c02840c3>] cdrom_start_packet_command+0x14f/0x157 [<c02853e9>] cdrom_do_pc_continuation+0x0/0x2c [<c027aa33>] ide_do_request+0x70a/0x943 [<c0363ef3>] schedule_timeout+0x13/0x8b [<c021faeb>] elv_drain_elevator+0x15/0x58 [<c0220277>] elv_insert+0xf6/0x1d9 [<c0285377>] cdrom_transfer_packet_command+0xb5/0xde [<c0282607>] cdrom_timer_expiry+0x0/0x51 [<c027b038>] ide_do_drive_cmd+0x99/0xe9 [<c0282abe>] cdrom_queue_packet_command+0x35/0xa9 [<c0363b2b>] schedule+0x321/0x33e [<c0363ef3>] schedule_timeout+0x13/0x8b [<c0282d11>] cdrom_read_tocentry+0x96/0xa1 [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c028315b>] cdrom_read_toc+0x14b/0x42e [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c027b07e>] ide_do_drive_cmd+0xdf/0xe9 [<c0283ed2>] ide_cdrom_audio_ioctl+0x13c/0x1de [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0282f42>] cdrom_check_status+0x55/0x60 [<c02220d3>] blk_end_sync_rq+0x0/0x23 [<c02865ba>] cdrom_count_tracks+0x64/0x16a [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c02896c4>] cdrom_open+0x190/0x8f8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c02252d3>] get_disk+0x4e/0x65 [<c02252f1>] exact_lock+0x7/0xd [<c025a2cc>] kobj_lookup+0x104/0x12e [<c02828e8>] idecd_open+0x72/0x86 [<c0174458>] do_open+0x198/0x238 [<c02afbd9>] clone_endio+0x0/0xa3 [<c0174561>] __blkdev_get+0x69/0x74 [<c017457e>] blkdev_get+0x12/0x14 [<c0263333>] pkt_open+0x8d/0xc96 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c017162c>] end_bio_bh_io_sync+0x0/0x27 [<c0172e9a>] bio_fs_destructor+0x0/0xb [<c02afbd9>] clone_endio+0x0/0xa3 [<c02af8fe>] dm_bio_destructor+0x0/0x8 [<c022998c>] kobject_get+0xf/0x13 [<c02252d3>] get_disk+0x4e/0x65 [<c02252f1>] exact_lock+0x7/0xd [<c025a2cc>] kobj_lookup+0x104/0x12e [<c0224ed0>] exact_match+0x0/0x4 [<c0174344>] do_open+0x84/0x238 [<c0174561>] EIP: 0060:[<c01033d2>] EFLAGS: 00010093 CPU: 0 EIP is at dump_trace+0x52/0x8b EAX: 0000082a EBX: 00000046 ECX: 0000020a EDX: 00000000 ESI: 00000000 EDI: 00000000 EBP: 00000ffc ESP: eeede1c4 DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068 rocess mount (pid: 4645, ti=eeede000 task=ee537320 task.ti=eeede000)v<tack: 00001000 c03f6c0c 00000000 c0523b64 00000000 c0103423 c036e79c c03f6c0c 00000002 c0103bf2 c03f6c0c c0103f85 c03ccd19 00001225 ee5375d0 c0505178 c0429436 00000002 c0429477 eeede220 0000000d c0104171 c03cce23 000001e0 Just looking for `dm_' in there should point out something odd. (Of course dm is just acting on behalf of others here, so it may be that the IDE CDROM code is doing something demented: in which case why does this only stack-overrun if I mount /dev/pktcdvd/cdrw, and not /dev/cdrw? For that matter, why is dm getting involved at all? This CD-RW isn't dm-managed in any way, shape or form...) -- `The rest is a tale of post and counter-post.' --- Ian Rawlings describes USENET ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-24 15:59 ` 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? Nix @ 2008-02-24 16:56 ` Peter Osterlund 2008-02-24 17:02 ` Nix 2008-02-25 20:25 ` Andrew Morton 0 siblings, 2 replies; 15+ messages in thread From: Peter Osterlund @ 2008-02-24 16:56 UTC (permalink / raw) To: Nix; +Cc: linux-kernel, dm-devel Nix <nix@esperi.org.uk> writes: > On 24 Feb 2008, nix@esperi.org.uk outgrape: > >> A loop mount/umounting a pcdrw or iso9660 (through the pktcdvd device) >> sees a stack overflow in four or five tries. Doing the same thing with >> the same CD in a normal non-pktcdvd-mounted drive doesn't cause a crash. > >> (This may or may not be PREEMPT+PREEMPT_BKL-specific: I'll try turning >> them off tomorrow and repeating.) > > It is not preempt-specific, nor dm-specific. Nor it is very easy to > capture tracebacks of: even netconsole generally gives up when faced > with a string of recursive tracebacks blurring past forever at blinding > speed. > > But while I'd normally blame pktcdvd there's only one pktcdvd function > in these tracebacks (pkt_open) and it's not got a significant stack > footprint. Did you verify that with "make checkstack" or just by looking at the source code? On my system, pkt_open() consumes 584 bytes because the compiler decides to inline lots of functions that would not normally be part of long call chains. The following patch fixes that problem on my system. > More notable is a great stack of mutual recursion between > dm_bio_destructor() and the CDROM code: it seems to burn most of the > stack on this sort of thrashing. Here's one of those tracebacks again: Maybe dm_bio_destructor() is just old cruft left on the stack from previous function calls? From: Peter Osterlund <petero2@telia.com> Signed-off-by: Peter Osterlund <petero2@telia.com> --- drivers/block/pktcdvd.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index 674cd66..f2510e7 100644 --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c @@ -849,7 +849,7 @@ static int pkt_flush_cache(struct pktcdvd_device *pd) /* * speed is given as the normal factor, e.g. 4 for 4x */ -static int pkt_set_speed(struct pktcdvd_device *pd, unsigned write_speed, unsigned read_speed) +static noinline int pkt_set_speed(struct pktcdvd_device *pd, unsigned write_speed, unsigned read_speed) { struct packet_command cgc; struct request_sense sense; @@ -1776,7 +1776,7 @@ static int pkt_get_track_info(struct pktcdvd_device *pd, __u16 track, __u8 type, return pkt_generic_packet(pd, &cgc); } -static int pkt_get_last_written(struct pktcdvd_device *pd, long *last_written) +static noinline int pkt_get_last_written(struct pktcdvd_device *pd, long *last_written) { disc_information di; track_information ti; @@ -1813,7 +1813,7 @@ static int pkt_get_last_written(struct pktcdvd_device *pd, long *last_written) /* * write mode select package based on pd->settings */ -static int pkt_set_write_settings(struct pktcdvd_device *pd) +static noinline int pkt_set_write_settings(struct pktcdvd_device *pd) { struct packet_command cgc; struct request_sense sense; @@ -1972,7 +1972,7 @@ static int pkt_writable_disc(struct pktcdvd_device *pd, disc_information *di) return 1; } -static int pkt_probe_settings(struct pktcdvd_device *pd) +static noinline int pkt_probe_settings(struct pktcdvd_device *pd) { struct packet_command cgc; unsigned char buf[12]; @@ -2071,7 +2071,7 @@ static int pkt_probe_settings(struct pktcdvd_device *pd) /* * enable/disable write caching on drive */ -static int pkt_write_caching(struct pktcdvd_device *pd, int set) +static noinline int pkt_write_caching(struct pktcdvd_device *pd, int set) { struct packet_command cgc; struct request_sense sense; @@ -2116,7 +2116,7 @@ static int pkt_lock_door(struct pktcdvd_device *pd, int lockflag) /* * Returns drive maximum write speed */ -static int pkt_get_max_speed(struct pktcdvd_device *pd, unsigned *write_speed) +static noinline int pkt_get_max_speed(struct pktcdvd_device *pd, unsigned *write_speed) { struct packet_command cgc; struct request_sense sense; @@ -2177,7 +2177,7 @@ static char us_clv_to_speed[16] = { /* * reads the maximum media speed from ATIP */ -static int pkt_media_speed(struct pktcdvd_device *pd, unsigned *speed) +static noinline int pkt_media_speed(struct pktcdvd_device *pd, unsigned *speed) { struct packet_command cgc; struct request_sense sense; @@ -2249,7 +2249,7 @@ static int pkt_media_speed(struct pktcdvd_device *pd, unsigned *speed) } } -static int pkt_perform_opc(struct pktcdvd_device *pd) +static noinline int pkt_perform_opc(struct pktcdvd_device *pd) { struct packet_command cgc; struct request_sense sense; -- Peter Osterlund - petero2@telia.com http://web.telia.com/~u89404340 ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-24 16:56 ` Peter Osterlund @ 2008-02-24 17:02 ` Nix 2008-02-25 20:30 ` Andrew Morton 2008-03-06 16:14 ` Jan Kara 2008-02-25 20:25 ` Andrew Morton 1 sibling, 2 replies; 15+ messages in thread From: Nix @ 2008-02-24 17:02 UTC (permalink / raw) To: Peter Osterlund; +Cc: linux-kernel, dm-devel On 24 Feb 2008, Peter Osterlund told this: > Nix <nix@esperi.org.uk> writes: >> But while I'd normally blame pktcdvd there's only one pktcdvd function >> in these tracebacks (pkt_open) and it's not got a significant stack >> footprint. > > Did you verify that with "make checkstack" or just by looking at the > source code? On my system, pkt_open() consumes 584 bytes because the > compiler decides to inline lots of functions that would not normally > be part of long call chains. The following patch fixes that problem on > my system. I just looked at the source; I forgot `make checkstack' existed. On this system: 0xc0263e0f pkt_open [vmlinux]: 556 which is nearly as bad. (As an aside, I'm surprised I didn't oops when packet-writing as well: 0xc021270d udf_process_sequence [vmlinux]: 692 0xc020f43d udf_add_entry [vmlinux]: 628 owch. I guess that's called via a shorter call chain...) I'll try the patch after this series of backups is done :) -- `The rest is a tale of post and counter-post.' --- Ian Rawlings describes USENET ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-24 17:02 ` Nix @ 2008-02-25 20:30 ` Andrew Morton 2008-02-25 22:48 ` Jan Kara 2008-03-06 16:14 ` Jan Kara 1 sibling, 1 reply; 15+ messages in thread From: Andrew Morton @ 2008-02-25 20:30 UTC (permalink / raw) To: Nix; +Cc: Peter Osterlund, linux-kernel, dm-devel, Jan Kara On Sun, 24 Feb 2008 17:02:26 +0000 Nix <nix@esperi.org.uk> wrote: > On 24 Feb 2008, Peter Osterlund told this: > > > Nix <nix@esperi.org.uk> writes: > >> But while I'd normally blame pktcdvd there's only one pktcdvd function > >> in these tracebacks (pkt_open) and it's not got a significant stack > >> footprint. > > > > Did you verify that with "make checkstack" or just by looking at the > > source code? On my system, pkt_open() consumes 584 bytes because the > > compiler decides to inline lots of functions that would not normally > > be part of long call chains. The following patch fixes that problem on > > my system. > > I just looked at the source; I forgot `make checkstack' existed. > > On this system: > > 0xc0263e0f pkt_open [vmlinux]: 556 > > which is nearly as bad. > > (As an aside, I'm surprised I didn't oops when packet-writing as well: > > 0xc021270d udf_process_sequence [vmlinux]: 692 > 0xc020f43d udf_add_entry [vmlinux]: 628 > > owch. I guess that's called via a shorter call chain...) udf_process_sequence() seems to be another victim of gcc inlining. udf_add_entry() defines a couple of 256-byte local arrays. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-25 20:30 ` Andrew Morton @ 2008-02-25 22:48 ` Jan Kara 2008-02-25 22:51 ` Andrew Morton 2008-02-26 11:10 ` Jiri Kosina 0 siblings, 2 replies; 15+ messages in thread From: Jan Kara @ 2008-02-25 22:48 UTC (permalink / raw) To: Andrew Morton; +Cc: Nix, Peter Osterlund, linux-kernel, dm-devel, Jan Kara > On Sun, 24 Feb 2008 17:02:26 +0000 Nix <nix@esperi.org.uk> wrote: > > > On 24 Feb 2008, Peter Osterlund told this: > > > > > Nix <nix@esperi.org.uk> writes: > > >> But while I'd normally blame pktcdvd there's only one pktcdvd function > > >> in these tracebacks (pkt_open) and it's not got a significant stack > > >> footprint. > > > > > > Did you verify that with "make checkstack" or just by looking at the > > > source code? On my system, pkt_open() consumes 584 bytes because the > > > compiler decides to inline lots of functions that would not normally > > > be part of long call chains. The following patch fixes that problem on > > > my system. > > > > I just looked at the source; I forgot `make checkstack' existed. > > > > On this system: > > > > 0xc0263e0f pkt_open [vmlinux]: 556 > > > > which is nearly as bad. > > > > (As an aside, I'm surprised I didn't oops when packet-writing as well: > > > > 0xc021270d udf_process_sequence [vmlinux]: 692 > > 0xc020f43d udf_add_entry [vmlinux]: 628 > > > > owch. I guess that's called via a shorter call chain...) > > udf_process_sequence() seems to be another victim of gcc inlining. Hmm, I'll have a look what we can do. > udf_add_entry() defines a couple of 256-byte local arrays. Yes, exactly two of them. One is non-trivial to get rid of - it's used for encoding of filename before we write it, but one is used during scanning of the directory whether the entry doesn't already exists (oh, my!) and we can just rip that off.. Honza -- Jan Kara <jack@suse.cz> SuSE CR Labs ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-25 22:48 ` Jan Kara @ 2008-02-25 22:51 ` Andrew Morton 2008-02-26 11:10 ` Jiri Kosina 1 sibling, 0 replies; 15+ messages in thread From: Andrew Morton @ 2008-02-25 22:51 UTC (permalink / raw) To: Jan Kara; +Cc: Nix, Peter Osterlund, linux-kernel, dm-devel, Jan Kara On Mon, 25 Feb 2008 23:48:07 +0100 Jan Kara <jack@suse.cz> wrote: > > udf_process_sequence() seems to be another victim of gcc inlining. > Hmm, I'll have a look what we can do. noinline... > > udf_add_entry() defines a couple of 256-byte local arrays. > Yes, exactly two of them. One is non-trivial to get rid of - it's > used for encoding of filename before we write it, but one is used during > scanning of the directory whether the entry doesn't already exists (oh, > my!) and we can just rip that off.. kmalloc is quite fast ;) ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-25 22:48 ` Jan Kara 2008-02-25 22:51 ` Andrew Morton @ 2008-02-26 11:10 ` Jiri Kosina 2008-02-26 11:29 ` Ingo Molnar 2008-02-26 17:25 ` Daniel Hazelton 1 sibling, 2 replies; 15+ messages in thread From: Jiri Kosina @ 2008-02-26 11:10 UTC (permalink / raw) To: Jan Kara Cc: Andrew Morton, Nix, Peter Osterlund, linux-kernel, dm-devel, Jan Kara On Mon, 25 Feb 2008, Jan Kara wrote: > Yes, exactly two of them. One is non-trivial to get rid of - it's > used for encoding of filename before we write it, Why can't we do just UDF: Optimize stack usage Signed-off-by: Jiri Kosina <jkosina@suse.cz> diff --git a/fs/udf/namei.c b/fs/udf/namei.c index 112a5fb..706a2b5 100644 --- a/fs/udf/namei.c +++ b/fs/udf/namei.c @@ -336,7 +336,7 @@ static struct fileIdentDesc *udf_add_entry(struct inode *dir, { struct super_block *sb = dir->i_sb; struct fileIdentDesc *fi = NULL; - char name[UDF_NAME_LEN], fname[UDF_NAME_LEN]; + char *name, *fname; int namelen; loff_t f_pos; int flen; @@ -352,6 +352,14 @@ static struct fileIdentDesc *udf_add_entry(struct inode *dir, struct extent_position epos = {}; struct udf_inode_info *dinfo; + name = kmalloc(sizeof(char) * UDF_NAME_LEN, GFP_KERNEL); + fname = kmalloc(sizeof(char) * UDF_NAME_LEN, GFP_KERNEL); + + if (!name || !fname) { + *err = -ENOMEM; + return NULL; + } + if (dentry) { if (!dentry->d_name.len) { *err = -EINVAL; diff --git a/fs/udf/super.c b/fs/udf/super.c index f3ac4ab..42e3ba8 100644 --- a/fs/udf/super.c +++ b/fs/udf/super.c @@ -1345,7 +1345,7 @@ static void udf_load_logicalvolint(struct super_block *sb, kernel_extent_ad loc) * July 1, 1997 - Andrew E. Mileski * Written, tested, and released. */ -static int udf_process_sequence(struct super_block *sb, long block, +static int noinline udf_process_sequence(struct super_block *sb, long block, long lastblock, kernel_lb_addr *fileset) { struct buffer_head *bh = NULL; ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-26 11:10 ` Jiri Kosina @ 2008-02-26 11:29 ` Ingo Molnar 2008-02-26 11:37 ` Jiri Kosina 2008-02-26 17:25 ` Daniel Hazelton 1 sibling, 1 reply; 15+ messages in thread From: Ingo Molnar @ 2008-02-26 11:29 UTC (permalink / raw) To: Jiri Kosina Cc: Jan Kara, Andrew Morton, Nix, Peter Osterlund, linux-kernel, dm-devel, Jan Kara * Jiri Kosina <jkosina@suse.cz> wrote: > + name = kmalloc(sizeof(char) * UDF_NAME_LEN, GFP_KERNEL); > + fname = kmalloc(sizeof(char) * UDF_NAME_LEN, GFP_KERNEL); > + > + if (!name || !fname) { > + *err = -ENOMEM; > + return NULL; > + } > + > if (dentry) { > if (!dentry->d_name.len) { > *err = -EINVAL; this bit is missing i think: if (name) kfree(name); if (fname) kfree(fname); Ingo ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-26 11:29 ` Ingo Molnar @ 2008-02-26 11:37 ` Jiri Kosina 2008-02-26 16:41 ` Jan Kara 0 siblings, 1 reply; 15+ messages in thread From: Jiri Kosina @ 2008-02-26 11:37 UTC (permalink / raw) To: Ingo Molnar Cc: Jan Kara, Andrew Morton, Nix, Peter Osterlund, linux-kernel, dm-devel, Jan Kara On Tue, 26 Feb 2008, Ingo Molnar wrote: > > + name = kmalloc(sizeof(char) * UDF_NAME_LEN, GFP_KERNEL); > > + fname = kmalloc(sizeof(char) * UDF_NAME_LEN, GFP_KERNEL); > > + > > + if (!name || !fname) { > > + *err = -ENOMEM; > > + return NULL; > > + } > > + > > if (dentry) { > > if (!dentry->d_name.len) { > > *err = -EINVAL; > this bit is missing i think: > if (name) > kfree(name); > if (fname) > kfree(fname); Ergh, of course, stupid me, sorry, it should be freed on all exit paths. I am not sending updated patch, as Jan is probably working on complete removal of one of those fields ... ? Thanks, -- Jiri Kosina ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-26 11:37 ` Jiri Kosina @ 2008-02-26 16:41 ` Jan Kara 0 siblings, 0 replies; 15+ messages in thread From: Jan Kara @ 2008-02-26 16:41 UTC (permalink / raw) To: Jiri Kosina Cc: Ingo Molnar, Andrew Morton, Nix, Peter Osterlund, linux-kernel, dm-devel, Jan Kara On Tue 26-02-08 12:37:17, Jiri Kosina wrote: > On Tue, 26 Feb 2008, Ingo Molnar wrote: > > > > + name = kmalloc(sizeof(char) * UDF_NAME_LEN, GFP_KERNEL); > > > + fname = kmalloc(sizeof(char) * UDF_NAME_LEN, GFP_KERNEL); > > > + > > > + if (!name || !fname) { > > > + *err = -ENOMEM; > > > + return NULL; > > > + } > > > + > > > if (dentry) { > > > if (!dentry->d_name.len) { > > > *err = -EINVAL; > > this bit is missing i think: > > if (name) > > kfree(name); > > if (fname) > > kfree(fname); > > Ergh, of course, stupid me, sorry, it should be freed on all exit paths. I > am not sending updated patch, as Jan is probably working on complete > removal of one of those fields ... ? Yes, I'll convert one variable to kmalloc and the other one remove completely. Stay tuned ;). Honza -- Jan Kara <jack@suse.cz> SUSE Labs, CR ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-26 11:10 ` Jiri Kosina 2008-02-26 11:29 ` Ingo Molnar @ 2008-02-26 17:25 ` Daniel Hazelton 1 sibling, 0 replies; 15+ messages in thread From: Daniel Hazelton @ 2008-02-26 17:25 UTC (permalink / raw) To: Jiri Kosina Cc: Jan Kara, Andrew Morton, Nix, Peter Osterlund, linux-kernel, dm-devel, Jan Kara On Tuesday 26 February 2008 06:10:34 Jiri Kosina wrote: > On Mon, 25 Feb 2008, Jan Kara wrote: > > Yes, exactly two of them. One is non-trivial to get rid of - it's > > used for encoding of filename before we write it, > > Why can't we do just > > > > UDF: Optimize stack usage > > Signed-off-by: Jiri Kosina <jkosina@suse.cz> > > diff --git a/fs/udf/namei.c b/fs/udf/namei.c > index 112a5fb..706a2b5 100644 > --- a/fs/udf/namei.c > +++ b/fs/udf/namei.c > @@ -336,7 +336,7 @@ static struct fileIdentDesc *udf_add_entry(struct inode > *dir, { > struct super_block *sb = dir->i_sb; > struct fileIdentDesc *fi = NULL; > - char name[UDF_NAME_LEN], fname[UDF_NAME_LEN]; > + char *name, *fname; > int namelen; > loff_t f_pos; > int flen; > @@ -352,6 +352,14 @@ static struct fileIdentDesc *udf_add_entry(struct > inode *dir, struct extent_position epos = {}; > struct udf_inode_info *dinfo; > > + name = kmalloc(sizeof(char) * UDF_NAME_LEN, GFP_KERNEL); > + fname = kmalloc(sizeof(char) * UDF_NAME_LEN, GFP_KERNEL); > + > + if (!name || !fname) { > + *err = -ENOMEM; > + return NULL; > + } > + Wouldn't it be better to check each individually, so you do wind up leaking a buffer here if one gets allocated and the other doesn't ? > if (dentry) { > if (!dentry->d_name.len) { > *err = -EINVAL; > diff --git a/fs/udf/super.c b/fs/udf/super.c > index f3ac4ab..42e3ba8 100644 > --- a/fs/udf/super.c > +++ b/fs/udf/super.c > @@ -1345,7 +1345,7 @@ static void udf_load_logicalvolint(struct super_block > *sb, kernel_extent_ad loc) * July 1, 1997 - Andrew E. Mileski > * Written, tested, and released. > */ > -static int udf_process_sequence(struct super_block *sb, long block, > +static int noinline udf_process_sequence(struct super_block *sb, long > block, long lastblock, kernel_lb_addr *fileset) > { > struct buffer_head *bh = NULL; > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ DRH -- Dialup is like pissing through a pipette. Slow and excruciatingly painful. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-24 17:02 ` Nix 2008-02-25 20:30 ` Andrew Morton @ 2008-03-06 16:14 ` Jan Kara 2008-03-10 20:09 ` Nix 1 sibling, 1 reply; 15+ messages in thread From: Jan Kara @ 2008-03-06 16:14 UTC (permalink / raw) To: Nix; +Cc: Peter Osterlund, linux-kernel, dm-devel > On 24 Feb 2008, Peter Osterlund told this: > > > Nix <nix@esperi.org.uk> writes: > >> But while I'd normally blame pktcdvd there's only one pktcdvd function > >> in these tracebacks (pkt_open) and it's not got a significant stack > >> footprint. > > > > Did you verify that with "make checkstack" or just by looking at the > > source code? On my system, pkt_open() consumes 584 bytes because the > > compiler decides to inline lots of functions that would not normally > > be part of long call chains. The following patch fixes that problem on > > my system. > > I just looked at the source; I forgot `make checkstack' existed. > > On this system: > > 0xc0263e0f pkt_open [vmlinux]: 556 > > which is nearly as bad. > > (As an aside, I'm surprised I didn't oops when packet-writing as well: > > 0xc021270d udf_process_sequence [vmlinux]: 692 > 0xc020f43d udf_add_entry [vmlinux]: 628 > > owch. I guess that's called via a shorter call chain...) > > > I'll try the patch after this series of backups is done :) If you are interested, linux-next or -mm tree should contain a patch now that fixes the problem... Honza -- Jan Kara <jack@suse.cz> SuSE CR Labs ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-03-06 16:14 ` Jan Kara @ 2008-03-10 20:09 ` Nix 0 siblings, 0 replies; 15+ messages in thread From: Nix @ 2008-03-10 20:09 UTC (permalink / raw) To: Jan Kara; +Cc: Peter Osterlund, linux-kernel, dm-devel On 6 Mar 2008, Jan Kara said: > If you are interested, linux-next or -mm tree should contain a patch now > that fixes the problem... As soon as I've figured out why dhclient is failing to establish DHCP connections from 2.6.14.3 (the DHCPOFFERs seem to get ignored, it's weird and the kernel shouldn't have anything to do with it, but it does) so I can actually compile something that works and doesn't knock me off the net every two minutes, I'll try it :) (yes, I could try -mm directly, but it's been some weeks since I backed up, thanks to an abruptly chocolate-filled CD-RW drive, so I'm being a bit cautious.) -- `The rest is a tale of post and counter-post.' --- Ian Rawlings describes USENET ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? 2008-02-24 16:56 ` Peter Osterlund 2008-02-24 17:02 ` Nix @ 2008-02-25 20:25 ` Andrew Morton 1 sibling, 0 replies; 15+ messages in thread From: Andrew Morton @ 2008-02-25 20:25 UTC (permalink / raw) To: Peter Osterlund; +Cc: Nix, linux-kernel, dm-devel On Sun, 24 Feb 2008 17:56:09 +0100 Peter Osterlund <petero2@telia.com> wrote: > > drivers/block/pktcdvd.c | 16 ++++++++-------- > 1 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c > index 674cd66..f2510e7 100644 > --- a/drivers/block/pktcdvd.c > +++ b/drivers/block/pktcdvd.c > @@ -849,7 +849,7 @@ static int pkt_flush_cache(struct pktcdvd_device *pd) > /* > * speed is given as the normal factor, e.g. 4 for 4x > */ > -static int pkt_set_speed(struct pktcdvd_device *pd, unsigned write_speed, unsigned read_speed) > +static noinline int pkt_set_speed(struct pktcdvd_device *pd, unsigned write_speed, unsigned read_speed) > > ... yup, I'll grab that. I'll even write your changelog for you (grr). But first, let's do this: From: Andrew Morton <akpm@linux-foundation.org> People are adding `noinline' in various places to prevent excess stack consumption due to gcc inlining. But once this is done, it is quite unobvious why the `noinline' is present in the code. We can comment each and every site, or we can use noinline_for_stack. Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- include/linux/compiler.h | 6 ++++++ 1 file changed, 6 insertions(+) diff -puN include/linux/compiler.h~add-noinline_for_stack include/linux/compiler.h --- a/include/linux/compiler.h~add-noinline_for_stack +++ a/include/linux/compiler.h @@ -138,6 +138,12 @@ extern void __chk_io_ptr(const volatile #define noinline #endif +/* + * Rather then using noinline to prevent stack consumption, use + * noinline_for_stack instead. For documentaiton reasons. + */ +#define noinline_for_stack noinline + #ifndef __always_inline #define __always_inline inline #endif _ (Note that these changes don't let DM off the hook!) ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2008-03-10 20:10 UTC | newest] Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2008-02-24 1:56 2.6.24.2: 4KSTACKS + PCA403CD IDE CD + pcdrw + mount + PREEMPT -> stack overflow Nix 2008-02-24 15:59 ` 2.6.24.2: 4KSTACKS + pcdrw + dm + mount -> stack overflow: ide-cd related? dm-related? Nix 2008-02-24 16:56 ` Peter Osterlund 2008-02-24 17:02 ` Nix 2008-02-25 20:30 ` Andrew Morton 2008-02-25 22:48 ` Jan Kara 2008-02-25 22:51 ` Andrew Morton 2008-02-26 11:10 ` Jiri Kosina 2008-02-26 11:29 ` Ingo Molnar 2008-02-26 11:37 ` Jiri Kosina 2008-02-26 16:41 ` Jan Kara 2008-02-26 17:25 ` Daniel Hazelton 2008-03-06 16:14 ` Jan Kara 2008-03-10 20:09 ` Nix 2008-02-25 20:25 ` Andrew Morton
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).