[ci-upstream-linux-next-kasan-gce-root ci-upstream-rust-kasan-gce], missing on: [ci-qemu-gce-upstream-auto ci-qemu-native-arm64-kvm ci-qemu-upstream ci-qemu-upstream-386 ci-qemu2-arm32 ci-qemu2-arm64 ci-qemu2-arm64-compat ci-qemu2-arm64-mte ci-qemu2-riscv64 ci-snapshot-upstream-root ci-upstream-bpf-kasan-gce ci-upstream-bpf-next-kasan-gce ci-upstream-gce-arm64 ci-upstream-gce-leak ci-upstream-kasan-badwrites-root ci-upstream-kasan-gce ci-upstream-kasan-gce-386 ci-upstream-kasan-gce-root ci-upstream-kasan-gce-selinux-root ci-upstream-kasan-gce-smack-root ci-upstream-kmsan-gce-386-root ci-upstream-kmsan-gce-root ci-upstream-net-kasan-gce ci-upstream-net-this-kasan-gce ci2-upstream-fs ci2-upstream-kcsan-gce ci2-upstream-usb]
======================================================
WARNING: possible circular locking dependency detected
syzkaller #0 Tainted: G L
------------------------------------------------------
syz.2.3045/12739 is trying to acquire lock:
ffff800088694dc0
(
fs_reclaim){+.+.}-{0:0}, at: might_alloc include/linux/sched/mm.h:316 [inline]
fs_reclaim){+.+.}-{0:0}, at: slab_pre_alloc_hook mm/slub.c:4636 [inline]
fs_reclaim){+.+.}-{0:0}, at: slab_alloc_node mm/slub.c:4974 [inline]
fs_reclaim){+.+.}-{0:0}, at: __kmalloc_cache_node_noprof+0x6c/0x630 mm/slub.c:5578
but task is already holding lock:
ffff000016827480 (&new->lock){+.+.}-{4:4}, at: mtd_blktrans_work drivers/mtd/mtd_blkdevs.c:151 [inline]
ffff000016827480 (&new->lock){+.+.}-{4:4}, at: mtd_queue_rq+0x2a4/0x1694 drivers/mtd/mtd_blkdevs.c:179
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #4 (&new->lock){+.+.}-{4:4}:
lock_acquire kernel/locking/lockdep.c:5942 [inline]
lock_acquire+0x3fc/0x478 kernel/locking/lockdep.c:5899
__mutex_lock_common kernel/locking/mutex.c:646 [inline]
__mutex_lock+0x150/0x153c kernel/locking/mutex.c:821
mutex_lock_nested+0x24/0x34 kernel/locking/mutex.c:874
mtd_blktrans_work drivers/mtd/mtd_blkdevs.c:151 [inline]
mtd_queue_rq+0x2a4/0x1694 drivers/mtd/mtd_blkdevs.c:179
blk_mq_dispatch_rq_list+0x2e0/0x177c block/blk-mq.c:2130
__blk_mq_do_dispatch_sched block/blk-mq-sched.c:168 [inline]
blk_mq_do_dispatch_sched block/blk-mq-sched.c:182 [inline]
__blk_mq_sched_dispatch_requests+0xc50/0xe60 block/blk-mq-sched.c:307
blk_mq_sched_dispatch_requests+0x7c/0x114 block/blk-mq-sched.c:329
blk_mq_run_hw_queue+0x204/0x4a0 block/blk-mq.c:2368
blk_mq_dispatch_list+0x36c/0xa88 block/blk-mq.c:2931
blk_mq_flush_plug_list block/blk-mq.c:2979 [inline]
blk_mq_flush_plug_list+0xf0/0x520 block/blk-mq.c:2951
__blk_flush_plug+0x214/0x3d4 block/blk-core.c:1270
blk_finish_plug block/blk-core.c:1297 [inline]
blk_finish_plug+0x5c/0xa8 block/blk-core.c:1294
read_pages+0x3d4/0x988 mm/readahead.c:187
page_cache_ra_order+0x4dc/0xdb8 mm/readahead.c:541
page_cache_sync_ra+0x6e8/0xae0 mm/readahead.c:649
filemap_get_pages+0x278/0x16a0 mm/filemap.c:2714
filemap_splice_read+0x3a8/0xb38 mm/filemap.c:3103
do_splice_read fs/splice.c:980 [inline]
do_splice_read+0x1bc/0x370 fs/splice.c:954
splice_direct_to_actor+0x21c/0x860 fs/splice.c:1084
do_splice_direct_actor fs/splice.c:1202 [inline]
do_splice_direct+0x114/0x1e0 fs/splice.c:1228
do_sendfile+0x794/0xbd8 fs/read_write.c:1371
__do_sys_sendfile64 fs/read_write.c:1432 [inline]
__se_sys_sendfile64 fs/read_write.c:1418 [inline]
__arm64_sys_sendfile64+0x214/0x254 fs/read_write.c:1418
__invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
invoke_syscall+0x74/0x240 arch/arm64/kernel/syscall.c:49
el0_svc_common.constprop.0+0xac/0x230 arch/arm64/kernel/syscall.c:121
do_el0_svc+0x40/0x58 arch/arm64/kernel/syscall.c:140
el0_svc+0x58/0x2ac arch/arm64/kernel/entry-common.c:758
el0t_64_sync_handler+0xa0/0xe4 arch/arm64/kernel/entry-common.c:777
el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:590
-> #3 (set->srcu){.+.+}-{0:0}:
lock_sync+0x100/0x1a0 kernel/locking/lockdep.c:5991
srcu_lock_sync include/linux/srcu.h:210 [inline]
__synchronize_srcu+0xa8/0x280 kernel/rcu/srcutree.c:1462
synchronize_srcu_expedited kernel/rcu/srcutree.c:1502 [inline]
synchronize_srcu+0x168/0x7d0 kernel/rcu/srcutree.c:1558
blk_mq_wait_quiesce_done block/blk-mq.c:284 [inline]
blk_mq_wait_quiesce_done block/blk-mq.c:281 [inline]
blk_mq_quiesce_queue block/blk-mq.c:304 [inline]
blk_mq_quiesce_queue+0xf4/0x160 block/blk-mq.c:299
elevator_switch+0x118/0x430 block/elevator.c:576
elevator_change+0x294/0x420 block/elevator.c:681
elevator_set_default+0x210/0x2b8 block/elevator.c:754
blk_register_queue+0x36c/0x500 block/blk-sysfs.c:992
__add_disk+0x588/0xc00 block/genhd.c:531
add_disk_fwnode+0x110/0x3e0 block/genhd.c:600
device_add_disk+0x14/0x20 block/genhd.c:630
add_disk include/linux/blkdev.h:798 [inline]
nbd_dev_add+0x5f8/0x9b4 drivers/block/nbd.c:2026
nbd_init+0x190/0x1b0 drivers/block/nbd.c:2743
do_one_initcall+0x134/0xb20 init/main.c:1362
do_initcall_level init/main.c:1424 [inline]
do_initcalls init/main.c:1440 [inline]
do_basic_setup init/main.c:1460 [inline]
kernel_init_freeable+0x5e8/0x66c init/main.c:1675
kernel_init+0x2c/0x14c init/main.c:1565
ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:854
-> #2 (&q->elevator_lock){+.+.}-{4:4}:
lock_acquire kernel/locking/lockdep.c:5942 [inline]
lock_acquire+0x3fc/0x478 kernel/locking/lockdep.c:5899
__mutex_lock_common kernel/locking/mutex.c:646 [inline]
__mutex_lock+0x150/0x153c kernel/locking/mutex.c:821
mutex_lock_nested+0x24/0x34 kernel/locking/mutex.c:874
elevator_change+0x188/0x420 block/elevator.c:679
elevator_set_none+0x90/0xec block/elevator.c:769
blk_mq_elv_switch_none block/blk-mq.c:5113 [inline]
__blk_mq_update_nr_hw_queues block/blk-mq.c:5158 [inline]
blk_mq_update_nr_hw_queues+0x3c0/0x1020 block/blk-mq.c:5223
nbd_start_device+0x128/0xa28 drivers/block/nbd.c:1530
nbd_genl_connect+0xb50/0x1394 drivers/block/nbd.c:2310
genl_family_rcv_msg_doit+0x1c0/0x28c net/netlink/genetlink.c:1114
genl_family_rcv_msg net/netlink/genetlink.c:1194 [inline]
genl_rcv_msg+0x3f8/0x60c net/netlink/genetlink.c:1209
netlink_rcv_skb+0x1ac/0x360 net/netlink/af_netlink.c:2575
genl_rcv+0x38/0x54 net/netlink/genetlink.c:1218
netlink_unicast_kernel net/netlink/af_netlink.c:1338 [inline]
netlink_unicast+0x418/0x6e0 net/netlink/af_netlink.c:1364
netlink_sendmsg+0x638/0xa4c net/netlink/af_netlink.c:1919
sock_sendmsg_nosec net/socket.c:800 [inline]
__sock_sendmsg+0xc8/0x1a4 net/socket.c:815
____sys_sendmsg+0x52c/0x76c net/socket.c:2713
___sys_sendmsg+0x124/0x1a4 net/socket.c:2767
__sys_sendmsg+0x10c/0x198 net/socket.c:2799
__do_sys_sendmsg net/socket.c:2804 [inline]
__se_sys_sendmsg net/socket.c:2802 [inline]
__arm64_sys_sendmsg+0x74/0xa4 net/socket.c:2802
__invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
invoke_syscall+0x74/0x240 arch/arm64/kernel/syscall.c:49
el0_svc_common.constprop.0+0xac/0x230 arch/arm64/kernel/syscall.c:121
do_el0_svc+0x40/0x58 arch/arm64/kernel/syscall.c:140
el0_svc+0x58/0x2ac arch/arm64/kernel/entry-common.c:758
el0t_64_sync_handler+0xa0/0xe4 arch/arm64/kernel/entry-common.c:777
el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:590
-> #1 (&q->q_usage_counter(io)#33){++++}-{0:0}:
lock_acquire kernel/locking/lockdep.c:5942 [inline]
lock_acquire+0x3fc/0x478 kernel/locking/lockdep.c:5899
blk_alloc_queue+0x4e0/0x640 block/blk-core.c:504
blk_mq_alloc_queue+0x148/0x224 block/blk-mq.c:4431
__blk_mq_alloc_disk+0x20/0x120 block/blk-mq.c:4478
nbd_dev_add+0x3d0/0x9b4 drivers/block/nbd.c:1996
nbd_init+0x190/0x1b0 drivers/block/nbd.c:2743
do_one_initcall+0x134/0xb20 init/main.c:1362
do_initcall_level init/main.c:1424 [inline]
do_initcalls init/main.c:1440 [inline]
do_basic_setup init/main.c:1460 [inline]
kernel_init_freeable+0x5e8/0x66c init/main.c:1675
kernel_init+0x2c/0x14c init/main.c:1565
ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:854
-> #0 (fs_reclaim){+.+.}-{0:0}:
check_prev_add+0x110/0xca0 kernel/locking/lockdep.c:3209
check_prevs_add kernel/locking/lockdep.c:3328 [inline]
validate_chain kernel/locking/lockdep.c:3952 [inline]
__lock_acquire+0x148c/0x1aec kernel/locking/lockdep.c:5288
lock_acquire kernel/locking/lockdep.c:5942 [inline]
lock_acquire+0x3fc/0x478 kernel/locking/lockdep.c:5899
__fs_reclaim_acquire mm/page_alloc.c:4375 [inline]
fs_reclaim_acquire+0x130/0x158 mm/page_alloc.c:4389
might_alloc include/linux/sched/mm.h:316 [inline]
slab_pre_alloc_hook mm/slub.c:4636 [inline]
slab_alloc_node mm/slub.c:4974 [inline]
__kmalloc_cache_node_noprof+0x6c/0x630 mm/slub.c:5578
_kmalloc_node_noprof include/linux/slab.h:1196 [inline]
__get_vm_area_node+0x118/0x2ec mm/vmalloc.c:3237
__vmalloc_node_range_noprof+0x198/0xfd4 mm/vmalloc.c:4064
__vmalloc_node_noprof+0xe4/0x14c mm/vmalloc.c:4165
vmalloc_noprof+0x24/0x38 mm/vmalloc.c:4200
mtdblock_writesect+0x41c/0x5b8 drivers/mtd/mtdblock.c:242
do_blktrans_request drivers/mtd/mtd_blkdevs.c:88 [inline]
mtd_blktrans_work drivers/mtd/mtd_blkdevs.c:152 [inline]
mtd_queue_rq+0x744/0x1694 drivers/mtd/mtd_blkdevs.c:179
blk_mq_dispatch_rq_list+0x2e0/0x177c block/blk-mq.c:2130
__blk_mq_do_dispatch_sched block/blk-mq-sched.c:168 [inline]
blk_mq_do_dispatch_sched block/blk-mq-sched.c:182 [inline]
__blk_mq_sched_dispatch_requests+0xc50/0xe60 block/blk-mq-sched.c:307
blk_mq_sched_dispatch_requests+0x7c/0x114 block/blk-mq-sched.c:329
blk_mq_run_hw_queue+0x204/0x4a0 block/blk-mq.c:2368
blk_mq_dispatch_list+0x36c/0xa88 block/blk-mq.c:2931
blk_mq_flush_plug_list block/blk-mq.c:2979 [inline]
blk_mq_flush_plug_list+0xf0/0x520 block/blk-mq.c:2951
__blk_flush_plug+0x214/0x3d4 block/blk-core.c:1270
blk_finish_plug block/blk-core.c:1297 [inline]
blk_finish_plug+0x5c/0xa8 block/blk-core.c:1294
blkdev_writepages+0xe0/0x130 block/fops.c:493
do_writepages+0x1fc/0x4b8 mm/page-writeback.c:2560
filemap_writeback+0x1c0/0x240 mm/filemap.c:387
filemap_fdatawrite_range mm/filemap.c:412 [inline]
file_write_and_wait_range+0xac/0x128 mm/filemap.c:786
blkdev_fsync+0x70/0xb8 block/fops.c:601
vfs_fsync_range+0x60/0x194 fs/sync.c:186
generic_write_sync include/linux/fs.h:2689 [inline]
blkdev_write_iter+0x62c/0x934 block/fops.c:788
iter_file_splice_write+0x5e8/0xdb4 fs/splice.c:736
do_splice_from fs/splice.c:936 [inline]
direct_splice_actor+0x138/0x6a0 fs/splice.c:1159
splice_direct_to_actor+0x27c/0x860 fs/splice.c:1103
do_splice_direct_actor fs/splice.c:1202 [inline]
do_splice_direct+0x114/0x1e0 fs/splice.c:1228
do_sendfile+0x794/0xbd8 fs/read_write.c:1371
__do_sys_sendfile64 fs/read_write.c:1432 [inline]
__se_sys_sendfile64 fs/read_write.c:1418 [inline]
__arm64_sys_sendfile64+0x214/0x254 fs/read_write.c:1418
__invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
invoke_syscall+0x74/0x240 arch/arm64/kernel/syscall.c:49
el0_svc_common.constprop.0+0xac/0x230 arch/arm64/kernel/syscall.c:121
do_el0_svc+0x40/0x58 arch/arm64/kernel/syscall.c:140
el0_svc+0x58/0x2ac arch/arm64/kernel/entry-common.c:758
el0t_64_sync_handler+0xa0/0xe4 arch/arm64/kernel/entry-common.c:777
el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:590
other info that might help us debug this:
Chain exists of:
fs_reclaim --> set->srcu --> &new->lock
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&new->lock);
lock(set->srcu);
lock(&new->lock);
lock(fs_reclaim);
*** DEADLOCK ***
locks held by syz.2.3045/12739: 2, last CPU#1:
#0: ffff000016b1d498 (set->srcu){.+.+}-{0:0}, at: srcu_read_lock include/linux/srcu.h:304 [inline]
#0: ffff000016b1d498 (set->srcu){.+.+}-{0:0}, at: blk_mq_run_hw_queue+0x1dc/0x4a0 block/blk-mq.c:2368
#1: ffff000016827480 (&new->lock){+.+.}-{4:4}, at: mtd_blktrans_work drivers/mtd/mtd_blkdevs.c:151 [inline]
#1: ffff000016827480 (&new->lock){+.+.}-{4:4}, at: mtd_queue_rq+0x2a4/0x1694 drivers/mtd/mtd_blkdevs.c:179
stack backtrace:
CPU: 1 UID: 0 PID: 12739 Comm: syz.2.3045 Tainted: G L syzkaller #0 PREEMPT
Tainted: [L]=SOFTLOCKUP
Hardware name: linux,dummy-virt (DT)
dump_backtrace(regs = 0000000000000000 tsk = 0000000000000000)
Call trace:
show_stack+0x18/0x24 arch/arm64/kernel/stacktrace.c:499 (C)
__dump_stack lib/dump_stack.c:94 [inline]
dump_stack_lvl+0x7c/0xb0 lib/dump_stack.c:120
dump_stack+0x1c/0x28 lib/dump_stack.c:129
print_circular_bug+0x23c/0x284 kernel/locking/lockdep.c:2087
check_noncircular+0x174/0x194 kernel/locking/lockdep.c:2219
check_prev_add+0x110/0xca0 kernel/locking/lockdep.c:3209
check_prevs_add kernel/locking/lockdep.c:3328 [inline]
validate_chain kernel/locking/lockdep.c:3952 [inline]
__lock_acquire+0x148c/0x1aec kernel/locking/lockdep.c:5288
lock_acquire kernel/locking/lockdep.c:5942 [inline]
lock_acquire+0x3fc/0x478 kernel/locking/lockdep.c:5899
__fs_reclaim_acquire mm/page_alloc.c:4375 [inline]
fs_reclaim_acquire+0x130/0x158 mm/page_alloc.c:4389
might_alloc include/linux/sched/mm.h:316 [inline]
slab_pre_alloc_hook mm/slub.c:4636 [inline]
slab_alloc_node mm/slub.c:4974 [inline]
__kmalloc_cache_node_noprof+0x6c/0x630 mm/slub.c:5578
_kmalloc_node_noprof include/linux/slab.h:1196 [inline]
__get_vm_area_node+0x118/0x2ec mm/vmalloc.c:3237
__vmalloc_node_range_noprof+0x198/0xfd4 mm/vmalloc.c:4064
__vmalloc_node_noprof+0xe4/0x14c mm/vmalloc.c:4165
vmalloc_noprof+0x24/0x38 mm/vmalloc.c:4200
mtdblock_writesect+0x41c/0x5b8 drivers/mtd/mtdblock.c:242
do_blktrans_request drivers/mtd/mtd_blkdevs.c:88 [inline]
mtd_blktrans_work drivers/mtd/mtd_blkdevs.c:152 [inline]
mtd_queue_rq+0x744/0x1694 drivers/mtd/mtd_blkdevs.c:179
blk_mq_dispatch_rq_list+0x2e0/0x177c block/blk-mq.c:2130
__blk_mq_do_dispatch_sched block/blk-mq-sched.c:168 [inline]
blk_mq_do_dispatch_sched block/blk-mq-sched.c:182 [inline]
__blk_mq_sched_dispatch_requests+0xc50/0xe60 block/blk-mq-sched.c:307
blk_mq_sched_dispatch_requests+0x7c/0x114 block/blk-mq-sched.c:329
blk_mq_run_hw_queue+0x204/0x4a0 block/blk-mq.c:2368
blk_mq_dispatch_list+0x36c/0xa88 block/blk-mq.c:2931
blk_mq_flush_plug_list block/blk-mq.c:2979 [inline]
blk_mq_flush_plug_list+0xf0/0x520 block/blk-mq.c:2951
__blk_flush_plug+0x214/0x3d4 block/blk-core.c:1270
blk_finish_plug block/blk-core.c:1297 [inline]
blk_finish_plug+0x5c/0xa8 block/blk-core.c:1294
blkdev_writepages+0xe0/0x130 block/fops.c:493
do_writepages+0x1fc/0x4b8 mm/page-writeback.c:2560
filemap_writeback+0x1c0/0x240 mm/filemap.c:387
filemap_fdatawrite_range mm/filemap.c:412 [inline]
file_write_and_wait_range+0xac/0x128 mm/filemap.c:786
blkdev_fsync+0x70/0xb8 block/fops.c:601
vfs_fsync_range+0x60/0x194 fs/sync.c:186
generic_write_sync include/linux/fs.h:2689 [inline]
blkdev_write_iter+0x62c/0x934 block/fops.c:788
iter_file_splice_write+0x5e8/0xdb4 fs/splice.c:736
do_splice_from fs/splice.c:936 [inline]
direct_splice_actor+0x138/0x6a0 fs/splice.c:1159
splice_direct_to_actor+0x27c/0x860 fs/splice.c:1103
do_splice_direct_actor fs/splice.c:1202 [inline]
do_splice_direct+0x114/0x1e0 fs/splice.c:1228
do_sendfile+0x794/0xbd8 fs/read_write.c:1371
__do_sys_sendfile64 fs/read_write.c:1432 [inline]
__se_sys_sendfile64 fs/read_write.c:1418 [inline]
__arm64_sys_sendfile64+0x214/0x254 fs/read_write.c:1418
__invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
invoke_syscall+0x74/0x240 arch/arm64/kernel/syscall.c:49
el0_svc_common.constprop.0+0xac/0x230 arch/arm64/kernel/syscall.c:121
do_el0_svc+0x40/0x58 arch/arm64/kernel/syscall.c:140
el0_svc+0x58/0x2ac arch/arm64/kernel/entry-common.c:758
el0t_64_sync_handler+0xa0/0xe4 arch/arm64/kernel/entry-common.c:777
el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:590
mtdblock: write on "0.flash" at 0x0, size 0x200
mtdblock: write on "0.flash" at 0x200, size 0x200
mtdblock: write on "0.flash" at 0x400, size 0x200
mtdblock: write on "0.flash" at 0x600, size 0x200
mtdblock: write on "0.flash" at 0x800, size 0x200
mtdblock: write on "0.flash" at 0xa00, size 0x200
mtdblock: write on "0.flash" at 0xc00, size 0x200
mtdblock: write on "0.flash" at 0xe00, size 0x200
mtdblock: write on "0.flash" at 0x1000, size 0x200
mtdblock: write on "0.flash" at 0x1200, size 0x200
mtdblock: write on "0.flash" at 0x1400, size 0x200
mtdblock: write on "0.flash" at 0x1600, size 0x200
mtdblock: write on "0.flash" at 0x1800, size 0x200
mtdblock: write on "0.flash" at 0x1a00, size 0x200
mtdblock: write on "0.flash" at 0x1c00, size 0x200
mtdblock: write on "0.flash" at 0x1e00, size 0x200
mtdblock: write on "0.flash" at 0x2000, size 0x200
mtdblock: write on "0.flash" at 0x2200, size 0x200
mtdblock: write on "0.flash" at 0x2400, size 0x200
mtdblock: write on "0.flash" at 0x2600, size 0x200
mtdblock: write on "0.flash" at 0x2800, size 0x200
mtdblock: write on "0.flash" at 0x2a00, size 0x200
mtdblock: write on "0.flash" at 0x2c00, size 0x200
mtdblock: write on "0.flash" at 0x2e00, size 0x200
mtdblock: write on "0.flash" at 0x3000, size 0x200
mtdblock: write on "0.flash" at 0x3200, size 0x200
mtdblock: write on "0.flash" at 0x3400, size 0x200
mtdblock: write on "0.flash" at 0x3600, size 0x200
mtdblock: write on "0.flash" at 0x3800, size 0x200
mtdblock: write on "0.flash" at 0x3a00, size 0x200
mtdblock: write on "0.flash" at 0x3c00, size 0x200
mtdblock: write on "0.flash" at 0x3e00, size 0x200
mtdblock: write on "0.flash" at 0x4000, size 0x200
mtdblock: write on "0.flash" at 0x4200, size 0x200
mtdblock: write on "0.flash" at 0x4400, size 0x200
mtdblock: write on "0.flash" at 0x4600, size 0x200
mtdblock: write on "0.flash" at 0x4800, size 0x200
mtdblock: write on "0.flash" at 0x4a00, size 0x200
mtdblock: write on "0.flash" at 0x4c00, size 0x200
mtdblock: write on "0.flash" at 0x4e00, size 0x200
mtdblock: write on "0.flash" at 0x5000, size 0x200
mtdblock: write on "0.flash" at 0x5200, size 0x200
mtdblock: write on "0.flash" at 0x5400, size 0x200
mtdblock: write on "0.flash" at 0x5600, size 0x200
mtdblock: write on "0.flash" at 0x5800, size 0x200
mtdblock: write on "0.flash" at 0x5a00, size 0x200
mtdblock: write on "0.flash" at 0x5c00, size 0x200
mtdblock: write on "0.flash" at 0x5e00, size 0x200
mtdblock: write on "0.flash" at 0x6000, size 0x200
mtdblock: write on "0.flash" at 0x6200, size 0x200
mtdblock: write on "0.flash" at 0x6400, size 0x200
mtdblock: write on "0.flash" at 0x6600, size 0x200
mtdblock: write on "0.flash" at 0x6800, size 0x200
mtdblock: write on "0.flash" at 0x6a00, size 0x200
mtdblock: write on "0.flash" at 0x6c00, size 0x200
mtdblock: write on "0.flash" at 0x6e00, size 0x200
mtdblock: write on "0.flash" at 0x7000, size 0x200
mtdblock: write on "0.flash" at 0x7200, size 0x200
mtdblock: write on "0.flash" at 0x7400, size 0x200
mtdblock: write on "0.flash" at 0x7600, size 0x200
mtdblock: write on "0.flash" at 0x7800, size 0x200
mtdblock: write on "0.flash" at 0x7a00, size 0x200
mtdblock: write on "0.flash" at 0x7c00, size 0x200
mtdblock: write on "0.flash" at 0x7e00, size 0x200
mtdblock: write on "0.flash" at 0x8000, size 0x200
mtdblock: write on "0.flash" at 0x8200, size 0x200
mtdblock: write on "0.flash" at 0x8400, size 0x200
mtdblock: write on "0.flash" at 0x8600, size 0x200
mtdblock: write on "0.flash" at 0x8800, size 0x200
mtdblock: write on "0.flash" at 0x8a00, size 0x200
mtdblock: write on "0.flash" at 0x8c00, size 0x200
mtdblock: write on "0.flash" at 0x8e00, size 0x200
mtdblock: write on "0.flash" at 0x9000, size 0x200
mtdblock: write on "0.flash" at 0x9200, size 0x200
mtdblock: write on "0.flash" at 0x9400, size 0x200
mtdblock: write on "0.flash" at 0x9600, size 0x200
mtdblock: write on "0.flash" at 0x9800, size 0x200
mtdblock: write on "0.flash" at 0x9a00, size 0x200
mtdblock: write on "0.flash" at 0x9c00, size 0x200
mtdblock: write on "0.flash" at 0x9e00, size 0x200
mtdblock: write on "0.flash" at 0xa000, size 0x200
mtdblock: write on "0.flash" at 0xa200, size 0x200
mtdblock: write on "0.flash" at 0xa400, size 0x200
mtdblock: write on "0.flash" at 0xa600, size 0x200
mtdblock: write on "0.flash" at 0xa800, size 0x200
mtdblock: write on "0.flash" at 0xaa00, size 0x200
mtdblock: write on "0.flash" at 0xac00, size 0x200
mtdblock: write on "0.flash" at 0xae00, size 0x200
mtdblock: write on "0.flash" at 0xb000, size 0x200
mtdblock: write on "0.flash" at 0xb200, size 0x200
mtdblock: write on "0.flash" at 0xb400, size 0x200
mtdblock: write on "0.flash" at 0xb600, size 0x200
mtdblock: write on "0.flash" at 0xb800, size 0x200
mtdblock: write on "0.flash" at 0xba00, size 0x200
mtdblock: write on "0.flash" at 0xbc00, size 0x200
mtdblock: write on "0.flash" at 0xbe00, size 0x200
mtdblock: write on "0.flash" at 0xc000, size 0x200
mtdblock: write on "0.flash" at 0xc200, size 0x200
mtdblock: write on "0.flash" at 0xc400, size 0x200
mtdblock: write on "0.flash" at 0xc600, size 0x200
mtdblock: write on "0.flash" at 0xc800, size 0x200
mtdblock: write on "0.flash" at 0xca00, size 0x200
mtdblock: write on "0.flash" at 0xcc00, size 0x200
mtdblock: write on "0.flash" at 0xce00, size 0x200
mtdblock: write on "0.flash" at 0xd000, size 0x200
mtdblock: write on "0.flash" at 0xd200, size 0x200
mtdblock: write on "0.flash" at 0xd400, size 0x200
mtdblock: write on "0.flash" at 0xd600, size 0x200
mtdblock: write on "0.flash" at 0xd800, size 0x200
mtdblock: write on "0.flash" at 0xda00, size 0x200
mtdblock: write on "0.flash" at 0xdc00, size 0x200
mtdblock: write on "0.flash" at 0xde00, size 0x200
mtdblock: write on "0.flash" at 0xe000, size 0x200
mtdblock: write on "0.flash" at 0xe200, size 0x200
mtdblock: write on "0.flash" at 0xe400, size 0x200
mtdblock: write on "0.flash" at 0xe600, size 0x200
mtdblock: write on "0.flash" at 0xe800, size 0x200
mtdblock: write on "0.flash" at 0xea00, size 0x200
mtdblock: write on "0.flash" at 0xec00, size 0x200
mtdblock: write on "0.flash" at 0xee00, size 0x200
mtdblock: write on "0.flash" at 0xf000, size 0x200
mtdblock: write on "0.flash" at 0xf200, size 0x200
mtdblock: write on "0.flash" at 0xf400, size 0x200
mtdblock: write on "0.flash" at 0xf600, size 0x200
mtdblock: write on "0.flash" at 0xf800, size 0x200
mtdblock: write on "0.flash" at 0xfa00, size 0x200
mtdblock: write on "0.flash" at 0xfc00, size 0x200
mtdblock: write on "0.flash" at 0xfe00, size 0x200
mtdblock: read on "0.flash" at 0x20000, size 0x200
mtdblock: read on "0.flash" at 0x20200, size 0x200
mtdblock: read on "0.flash" at 0x20400, size 0x200
mtdblock: read on "0.flash" at 0x20600, size 0x200
mtdblock: read on "0.flash" at 0x20800, size 0x200
mtdblock: read on "0.flash" at 0x20a00, size 0x200
mtdblock: read on "0.flash" at 0x20c00, size 0x200
mtdblock: read on "0.flash" at 0x20e00, size 0x200
mtdblock: read on "0.flash" at 0x21000, size 0x200
mtdblock: read on "0.flash" at 0x21200, size 0x200
mtdblock: read on "0.flash" at 0x21400, size 0x200
mtdblock: read on "0.flash" at 0x21600, size 0x200
mtdblock: read on "0.flash" at 0x21800, size 0x200
mtdblock: read on "0.flash" at 0x21a00, size 0x200
mtdblock: read on "0.flash" at 0x21c00, size 0x200
mtdblock: read on "0.flash" at 0x21e00, size 0x200
mtdblock: read on "0.flash" at 0x22000, size 0x200
mtdblock: read on "0.flash" at 0x22200, size 0x200
mtdblock: read on "0.flash" at 0x22400, size 0x200
mtdblock: read on "0.flash" at 0x22600, size 0x200
mtdblock: read on "0.flash" at 0x22800, size 0x200
mtdblock: read on "0.flash" at 0x22a00, size 0x200
mtdblock: read on "0.flash" at 0x22c00, size 0x200
mtdblock: read on "0.flash" at 0x22e00, size 0x200
mtdblock: read on "0.flash" at 0x23000, size 0x200
mtdblock: read on "0.flash" at 0x23200, size 0x200
mtdblock: read on "0.flash" at 0x23400, size 0x200
mtdblock: read on "0.flash" at 0x23600, size 0x200
mtdblock: read on "0.flash" at 0x23800, size 0x200
mtdblock: read on "0.flash" at 0x23a00, size 0x200
mtdblock: read on "0.flash" at 0x23c00, size 0x200
mtdblock: read on "0.flash" at 0x23e00, size 0x200
mtdblock: read on "0.flash" at 0x24000, size 0x200
mtdblock: read on "0.flash" at 0x24200, size 0x200
mtdblock: read on "0.flash" at 0x24400, size 0x200
mtdblock: read on "0.flash" at 0x24600, size 0x200
mtdblock: read on "0.flash" at 0x24800, size 0x200
mtdblock: read on "0.flash" at 0x24a00, size 0x200
mtdblock: read on "0.flash" at 0x24c00, size 0x200
mtdblock: read on "0.flash" at 0x24e00, size 0x200
mtdblock: read on "0.flash" at 0x25000, size 0x200
mtdblock: read on "0.flash" at 0x25200, size 0x200
mtdblock: read on "0.flash" at 0x25400, size 0x200
mtdblock: read on "0.flash" at 0x25600, size 0x200
mtdblock: read on "0.flash" at 0x25800, size 0x200
mtdblock: read on "0.flash" at 0x25a00, size 0x200
mtdblock: read on "0.flash" at 0x25c00, size 0x200
mtdblock: read on "0.flash" at 0x25e00, size 0x200
mtdblock: read on "0.flash" at 0x26000, size 0x200
mtdblock: read on "0.flash" at 0x26200, size 0x200
mtdblock: read on "0.flash" at 0x26400, size 0x200
mtdblock: read on "0.flash" at 0x26600, size 0x200
mtdblock: read on "0.flash" at 0x26800, size 0x200
mtdblock: read on "0.flash" at 0x26a00, size 0x200
mtdblock: read on "0.flash" at 0x26c00, size 0x200
mtdblock: read on "0.flash" at 0x26e00, size 0x200
mtdblock: read on "0.flash" at 0x27000, size 0x200
mtdblock: read on "0.flash" at 0x27200, size 0x200
mtdblock: read on "0.flash" at 0x27400, size 0x200
mtdblock: read on "0.flash" at 0x27600, size 0x200
mtdblock: read on "0.flash" at 0x27800, size 0x200
mtdblock: read on "0.flash" at 0x27a00, size 0x200
mtdblock: read on "0.flash" at 0x27c00, size 0x200
mtdblock: read on "0.flash" at 0x27e00, size 0x200
mtdblock: read on "0.flash" at 0x28000, size 0x200
mtdblock: read on "0.flash" at 0x28200, size 0x200
mtdblock: read on "0.flash" at 0x28400, size 0x200
mtdblock: read on "0.flash" at 0x28600, size 0x200
mtdblock: read on "0.flash" at 0x28800, size 0x200
mtdblock: read on "0.flash" at 0x28a00, size 0x200
mtdblock: read on "0.flash" at 0x28c00, size 0x200
mtdblock: read on "0.flash" at 0x28e00, size 0x200
mtdblock: read on "0.flash" at 0x29000, size 0x200
mtdblock: read on "0.flash" at 0x29200, size 0x200
mtdblock: read on "0.flash" at 0x29400, size 0x200
mtdblock: read on "0.flash" at 0x29600, size 0x200
mtdblock: read on "0.flash" at 0x29800, size 0x200
mtdblock: read on "0.flash" at 0x29a00, size 0x200
mtdblock: read on "0.flash" at 0x29c00, size 0x200
mtdblock: read on "0.flash" at 0x29e00, size 0x200
mtdblock: read on "0.flash" at 0x2a000, size 0x200
mtdblock: read on "0.flash" at 0x2a200, size 0x200
mtdblock: read on "0.flash" at 0x2a400, size 0x200
mtdblock: read on "0.flash" at 0x2a600, size 0x200
mtdblock: read on "0.flash" at 0x2a800, size 0x200
mtdblock: read on "0.flash" at 0x2aa00, size 0x200
mtdblock: read on "0.flash" at 0x2ac00, size 0x200
mtdblock: read on "0.flash" at 0x2ae00, size 0x200
mtdblock: read on "0.flash" at 0x2b000, size 0x200
mtdblock: read on "0.flash" at 0x2b200, size 0x200
mtdblock: read on "0.flash" at 0x2b400, size 0x200
mtdblock: read on "0.flash" at 0x2b600, size 0x200
mtdblock: read on "0.flash" at 0x2b800, size 0x200
mtdblock: read on "0.flash" at 0x2ba00, size 0x200
mtdblock: read on "0.flash" at 0x2bc00, size 0x200
mtdblock: read on "0.flash" at 0x2be00, size 0x200
mtdblock: read on "0.flash" at 0x2c000, size 0x200
mtdblock: read on "0.flash" at 0x2c200, size 0x200
mtdblock: read on "0.flash" at 0x2c400, size 0x200
mtdblock: read on "0.flash" at 0x2c600, size 0x200
mtdblock: read on "0.flash" at 0x2c800, size 0x200
mtdblock: read on "0.flash" at 0x2ca00, size 0x200
mtdblock: read on "0.flash" at 0x2cc00, size 0x200
mtdblock: read on "0.flash" at 0x2ce00, size 0x200
mtdblock: read on "0.flash" at 0x2d000, size 0x200
mtdblock: read on "0.flash" at 0x2d200, size 0x200
mtdblock: read on "0.flash" at 0x2d400, size 0x200
mtdblock: read on "0.flash" at 0x2d600, size 0x200
mtdblock: read on "0.flash" at 0x2d800, size 0x200
mtdblock: read on "0.flash" at 0x2da00, size 0x200
mtdblock: read on "0.flash" at 0x2dc00, size 0x200
mtdblock: read on "0.flash" at 0x2de00, size 0x200
mtdblock: read on "0.flash" at 0x2e000, size 0x200
mtdblock: read on "0.flash" at 0x2e200, size 0x200
mtdblock: read on "0.flash" at 0x2e400, size 0x200
mtdblock: read on "0.flash" at 0x2e600, size 0x200
mtdblock: read on "0.flash" at 0x2e800, size 0x200
mtdblock: read on "0.flash" at 0x2ea00, size 0x200
mtdblock: read on "0.flash" at 0x2ec00, size 0x200
mtdblock: read on "0.flash" at 0x2ee00, size 0x200
mtdblock: read on "0.flash" at 0x2f000, size 0x200
mtdblock: read on "0.flash" at 0x2f200, size 0x200
mtdblock: read on "0.flash" at 0x2f400, size 0x200
mtdblock: read on "0.flash" at 0x2f600, size 0x200
mtdblock: read on "0.flash" at 0x2f800, size 0x200
mtdblock: read on "0.flash" at 0x2fa00, size 0x200
mtdblock: read on "0.flash" at 0x2fc00, size 0x200
mtdblock: read on "0.flash" at 0x2fe00, size 0x200
mtdblock: read on "0.flash" at 0x30000, size 0x200
mtdblock: read on "0.flash" at 0x30200, size 0x200
mtdblock: read on "0.flash" at 0x30400, size 0x200
mtdblock: read on "0.flash" at 0x30600, size 0x200
mtdblock: read on "0.flash" at 0x30800, size 0x200
mtdblock: read on "0.flash" at 0x30a00, size 0x200
mtdblock: read on "0.flash" at 0x30c00, size 0x200
mtdblock: read on "0.flash" at 0x30e00, size 0x200
mtdblock: read on "0.flash" at 0x31000, size 0x200
mtdblock: read on "0.flash" at 0x31200, size 0x200
mtdblock: read on "0.flash" at 0x31400, size 0x200
mtdblock: read on "0.flash" at 0x31600, size 0x200
mtdblock: read on "0.flash" at 0x31800, size 0x200
mtdblock: read on "0.flash" at 0x31a00, size 0x200
mtdblock: read on "0.flash" at 0x31c00, size 0x200
mtdblock: read on "0.flash" at 0x31e00, size 0x200
mtdblock: read on "0.flash" at 0x32000, size 0x200
mtdblock: read on "0.flash" at 0x32200, size 0x200
mtdblock: read on "0.flash" at 0x32400, size 0x200
mtdblock: read on "0.flash" at 0x32600, size 0x200
mtdblock: read on "0.flash" at 0x32800, size 0x200
mtdblock: read on "0.flash" at 0x32a00, size 0x200
mtdblock: read on "0.flash" at 0x32c00, size 0x200
mtdblock: read on "0.flash" at 0x32e00, size 0x200
mtdblock: read on "0.flash" at 0x33000, size 0x200
mtdblock: read on "0.flash" at 0x33200, size 0x200
mtdblock: read on "0.flash" at 0x33400, size 0x200
mtdblock: read on "0.flash" at 0x33600, size 0x200
mtdblock: read on "0.flash" at 0x33800, size 0x200
mtdblock: read on "0.flash" at 0x33a00, size 0x200
mtdblock: read on "0.flash" at 0x33c00, size 0x200
mtdblock: read on "0.flash" at 0x33e00, size 0x200
mtdblock: read on "0.flash" at 0x34000, size 0x200
mtdblock: read on "0.flash" at 0x34200, size 0x200
mtdblock: read on "0.flash" at 0x34400, size 0x200
mtdblock: read on "0.flash" at 0x34600, size 0x200
mtdblock: read on "0.flash" at 0x34800, size 0x200
mtdblock: read on "0.flash" at 0x34a00, size 0x200
mtdblock: read on "0.flash" at 0x34c00, size 0x200
mtdblock: read on "0.flash" at 0x34e00, size 0x200
mtdblock: read on "0.flash" at 0x35000, size 0x200
mtdblock: read on "0.flash" at 0x35200, size 0x200
mtdblock: read on "0.flash" at 0x35400, size 0x200
mtdblock: read on "0.flash" at 0x35600, size 0x200
mtdblock: read on "0.flash" at 0x35800, size 0x200
mtdblock: read on "0.flash" at 0x35a00, size 0x200
mtdblock: read on "0.flash" at 0x35c00, size 0x200
mtdblock: read on "0.flash" at 0x35e00, size 0x200
mtdblock: read on "0.flash" at 0x36000, size 0x200
mtdblock: read on "0.flash" at 0x36200, size 0x200
mtdblock: read on "0.flash" at 0x36400, size 0x200
mtdblock: read on "0.flash" at 0x36600, size 0x200
mtdblock: read on "0.flash" at 0x36800, size 0x200
mtdblock: read on "0.flash" at 0x36a00, size 0x200
mtdblock: read on "0.flash" at 0x36c00, size 0x200
mtdblock: read on "0.flash" at 0x36e00, size 0x200
mtdblock: read on "0.flash" at 0x37000, size 0x200
mtdblock: read on "0.flash" at 0x37200, size 0x200
mtdblock: read on "0.flash" at 0x37400, size 0x200
mtdblock: read on "0.flash" at 0x37600, size 0x200
mtdblock: read on "0.flash" at 0x37800, size 0x200
mtdblock: read on "0.flash" at 0x37a00, size 0x200
mtdblock: read on "0.flash" at 0x37c00, size 0x200
mtdblock: read on "0.flash" at 0x37e00, size 0x200
mtdblock: read on "0.flash" at 0x38000, size 0x200
mtdblock: read on "0.flash" at 0x38200, size 0x200
mtdblock: read on "0.flash" at 0x38400, size 0x200
mtdblock: read on "0.flash" at 0x38600, size 0x200
mtdblock: read on "0.flash" at 0x38800, size 0x200
mtdblock: read on "0.flash" at 0x38a00, size 0x200
mtdblock: read on "0.flash" at 0x38c00, size 0x200
mtdblock: read on "0.flash" at 0x38e00, size 0x200
mtdblock: read on "0.flash" at 0x39000, size 0x200
mtdblock: read on "0.flash" at 0x39200, size 0x200
mtdblock: read on "0.flash" at 0x39400, size 0x200
mtdblock: read on "0.flash" at 0x39600, size 0x200
mtdblock: read on "0.flash" at 0x39800, size 0x200
mtdblock: read on "0.flash" at 0x39a00, size 0x200
mtdblock: read on "0.flash" at 0x39c00, size 0x200
mtdblock: read on "0.flash" at 0x39e00, size 0x200
mtdblock: read on "0.flash" at 0x3a000, size 0x200
mtdblock: read on "0.flash" at 0x3a200, size 0x200
mtdblock: read on "0.flash" at 0x3a400, size 0x200
mtdblock: read on "0.flash" at 0x3a600, size 0x200
mtdblock: read on "0.flash" at 0x3a800, size 0x200
mtdblock: read on "0.flash" at 0x3aa00, size 0x200
mtdblock: read on "0.flash" at 0x3ac00, size 0x200
mtdblock: read on "0.flash" at 0x3ae00, size 0x200
mtdblock: read on "0.flash" at 0x3b000, size 0x200
mtdblock: read on "0.flash" at 0x3b200, size 0x200
mtdblock: read on "0.flash" at 0x3b400, size 0x200
mtdblock: read on "0.flash" at 0x3b600, size 0x200
mtdblock: read on "0.flash" at 0x3b800, size 0x200
mtdblock: read on "0.flash" at 0x3ba00, size 0x200
mtdblock: read on "0.flash" at 0x3bc00, size 0x200
mtdblock: read on "0.flash" at 0x3be00, size 0x200
mtdblock: read on "0.flash" at 0x3c000, size 0x200
mtdblock: read on "0.flash" at 0x3c200, size 0x200
mtdblock: read on "0.flash" at 0x3c400, size 0x200
mtdblock: read on "0.flash" at 0x3c600, size 0x200
mtdblock: read on "0.flash" at 0x3c800, size 0x200
mtdblock: read on "0.flash" at 0x3ca00, size 0x200
mtdblock: read on "0.flash" at 0x3cc00, size 0x200
mtdblock: read on "0.flash" at 0x3ce00, size 0x200
mtdblock: read on "0.flash" at 0x3d000, size 0x200
mtdblock: read on "0.flash" at 0x3d200, size 0x200
mtdblock: read on "0.flash" at 0x3d400, size 0x200
mtdblock: read on "0.flash" at 0x3d600, size 0x200
mtdblock: read on "0.flash" at 0x3d800, size 0x200
mtdblock: read on "0.flash" at 0x3da00, size 0x200
mtdblock: read on "0.flash" at 0x3dc00, size 0x200
mtdblock: read on "0.flash" at 0x3de00, size 0x200
mtdblock: read on "0.flash" at 0x3e000, size 0x200
mtdblock: read on "0.flash" at 0x3e200, size 0x200
mtdblock: read on "0.flash" at 0x3e400, size 0x200
mtdblock: read on "0.flash" at 0x3e600, size 0x200
mtdblock: read on "0.flash" at 0x3e800, size 0x200
mtdblock: read on "0.flash" at 0x3ea00, size 0x200
mtdblock: read on "0.flash" at 0x3ec00, size 0x200
mtdblock: read on "0.flash" at 0x3ee00, size 0x200
mtdblock: read on "0.flash" at 0x3f000, size 0x200
mtdblock: read on "0.flash" at 0x3f200, size 0x200
mtdblock: read on "0.flash" at 0x3f400, size 0x200
mtdblock: read on "0.flash" at 0x3f600, size 0x200
mtdblock: read on "0.flash" at 0x3f800, size 0x200
mtdblock: read on "0.flash" at 0x3fa00, size 0x200
mtdblock: read on "0.flash" at 0x3fc00, size 0x200
mtdblock: read on "0.flash" at 0x3fe00, size 0x200
mtdblock_release
ok